静的コード解析ツールについて質問です。

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2014/10/24 17:52:31
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.3

回答回数4974ベストアンサー獲得回数2154

ポイント250pt

回答欄に引っ越してきました 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++ で記述しているのでしょうけれど。

id:kokoro912

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

2014/10/24 17:49:59

その他の回答2件)

id:kazukichi_0914 No.1

回答回数126ベストアンサー獲得回数8

ポイント20pt

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

id:kokoro912

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

2014/10/24 15:51:42
id:SweetSmile1978 No.2

回答回数199ベストアンサー獲得回数31

ポイント30pt

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

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

id:kokoro912

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

2014/10/24 15:55:45
id:a-kuma3 No.3

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント250pt

回答欄に引っ越してきました 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++ で記述しているのでしょうけれど。

id:kokoro912

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

2014/10/24 17:49:59
  • id:a-kuma3
    こんなのがありました。

    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年に近いとは思えない。
  • id:kokoro912
    要点を抜粋して頂きありがとうございます。
    参考文献も非常に詳しくまとめられていて、大変勉強になりました。
    (かなり難しい文献なので、全部理解できたわけではありませんが。。)
    Rats 以外にも Flawfinder、VulCAn、ARCHER, BOON, SPLINT, UNO というのがあるんですね。
    早速個別に調べてみたいと思います。大変ありがとうございました。
  • id:kokoro912
    a-kuma3 さん
    非常に有用な情報ですので、もしできたら、そのまま回答にも転記して頂ければ嬉しいです。
  • id:a-kuma3
    では、お言葉に甘えて :-)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません