人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

静的コード解析ツールについて質問です。
現在、C言語のソースを対象に、バッファオーバーフローのチェックができる静的コード解析ツールをいろいろ調査しているですが、既に調査済みの以下のもの以外で、何かおすすめの物はございますでしょうか?
iCodeChecker, Clang Static Analyzer, AdLint, RATS
できるだけ無償か、商用の場合は登録なしに試用版がダウンロード可能なものだとありがたいです。
また Windows 上で動作可能なものだと更にありがたいです。

●質問者: こころ
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● かずきち。
●20ポイント

C-analysis.netはだめですか?


こころさんのコメント
ありがとうございます。 早速ダウンロードして使ってみたのですが、セキュリティ目的というよりも、どちらかと言うと構文解析ツールのようですね。別の用途で使いたいと思います。

2 ● SweetSmile1978
●30ポイント

開発ツールになにをお使いなのかわかりませんが、
Visual Studio 2010 以降をお使いであれば
Professional Edition 以上にコード分析機能が付いています。

以下に分析される規則が載っています。
http://msdn.microsoft.com/ja-jp/library/hh748325.aspx


こころさんのコメント
ありがとうございます。開発ツールは秀丸エディタを使用しています。 Visual Studio でも解析ができると聞いたことがあったのですが、かなり詳細なチェックができるようですね。所持しているのが Visual Studio 2008 だけなので、まだ試せてはいないのですが、大変参考になりました。

3 ● a-kuma3
●250ポイント ベストアンサー

回答欄に引っ越してきました m(_ _)m



こんなのがありました。

http://ieeexplore.ieee.org/xpls/icp.jsp?arnumber=1665217

The main lexical analysis tools have been considered.
They are ITS4 1 [7] [8], Rats, 2 Flawfinder 3 and VulCAn [9].


https://www.ll.mit.edu/mission/communications/ist/publications/04_TestingStatic_Zitser.pdf

Table 1 provides a summary of the five static analysis
tools used in this evaluation. Four are open-source tools
(ARCHER, BOON, SPLINT, UNO) and one is a commer-
cial tool (Polyspace C Verifier).


バッファオーバーフローの解析をツールでやってるんだな、ってところしか読んでません (^^;
情報がちょっと古いかも。
ひとつ目は 2006年。
ふたつ目も、参考文献のところを読むと、2003 or 2004年以降だとは思いますけど、2010年に近いとは思えない。


ここまでが、コメントのコピペです。

せっかくなので、少し足します。



http://www.cs.umd.edu/~pugh/BugWorkshop05/papers/62-kratkiewicz.pdf

4. TEST PROCEDURES
The evaluation consisted of analy z ing each test case (291 quadruplets), one at a time using the five static analy s is tools (ARCHER, BOON, Poly Space, Splint, and UNO), and collecting tool outputs.

これも古そうです。
https://buildsecurityin.us-cert.gov/articles/tools/source-code-analysis/source-code-analysis-tools---references
↑によると、2005年のものみたいです。
この一覧で、他のを見てみようかなと思ったのですが、どれも古そうなので、新しい 2008年のやつだけ見てみました。

http://liu.diva-portal.org/smash/get/diva2:330560/FULLTEXT01.pdf

8 A comparison of the tools
Shallow static analysis tools based on pattern matching such as FlexeLint [14]
have been around since the late 1980s. Lately several sophisticated industrial-
strength static analysis tools have emerged. In this report we study tools from
three of the main providers|PolySpace, Coverity and Klocwork.
...

これ以降、PolySpace, Coverity, Klocwork の他にもツールの記載があるのですが、バッファ オーバーフローの検知ができるのかがはっきりしません。
この三つは、比較表の中で、Buffer overrun の項目に Yes がついているので、対応していることは分かります。


最後にもうひとつ。

http://zhaoyan.org/index.php/ej/article/viewFile/112/87

6.1. Static Analysis
...
6.1.1. Lexical Analysis
Sample tools include “ It’s the Software Stupid!” (ITS4 [25]), FlawFinder [26], RATS [27], STOBO [28], and LibSafe [29] .
...
6.1.2. Semantic Analysis
Sample tools are Splint [30] and BOON [31].
...

コメントを書いているときに、検索で引っかかるのが Lexical Analysis と Static Analysis という書き方があって、何が違うんだろう、と思ったら、こういう位置づけなんですね。

2010年の記事ですが、ツールはコメントで挙げたのと、かなり重複しています。
技術的に、2005年くらいで成熟しちゃった、ということでしょうか。
それとも、バッファオーバーランを起こしようがない言語が、メジャーになって行ったからでしょうか。

とはいえ、その言語のコンパイラや VM は、C / C++ で記述しているのでしょうけれど。


こころさんのコメント
至れり尽くせりで、大変勉強になりました。 私も静的解析ツールと一括りで考えていたのですが、このように分類されていたとは知りませんでした。 C言語の静的解析ツールを検索しても、出てくるのは古い情報ばかりで、ある意味枯れた技術なのかもしれません。 文句なしでベストアンサーとさせて頂きます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ