Cプロジェクトでバッファオーバーフローの可能性を見つけるためのツールが必要です。のような脆弱な機能を探すだけでなくstrcpy()
、誤検知の量を最小限に抑える必要があります。たとえば、likeの呼び出しstrcpy(buffer,"")
はバッファオーバーフローとして認識されるべきではなく、メモリの適切な割り当ても認識されるべきです。
これらの要件を満たすツールを知っていますか?
単一のファイル(完全なプロジェクトではない)用のツールを見つけたか、多くの誤検知を示しました。
Cプロジェクトでバッファオーバーフローの可能性を見つけるためのツールが必要です。のような脆弱な機能を探すだけでなくstrcpy()
、誤検知の量を最小限に抑える必要があります。たとえば、likeの呼び出しstrcpy(buffer,"")
はバッファオーバーフローとして認識されるべきではなく、メモリの適切な割り当ても認識されるべきです。
これらの要件を満たすツールを知っていますか?
単一のファイル(完全なプロジェクトではない)用のツールを見つけたか、多くの誤検知を示しました。
clang静的アナライザーには、境界の問題について多くのテストがあります。次のように呼び出すことで、プロジェクト全体で使用できます。
scan-build make
ここで、「make」はプロジェクトをビルドするコマンドです。非常に保守的であるため、誤検知が多く発生することはありません。
Gimpel の FlexeLint (Unix) == PC-Lint (Windows) は、このタイプのチェックに役立つツールであることがわかりました。例を入力して生成される警告を確認できるオンライン デモ チェッカーがあります。それはあなたにそれが何ができるかのアイデアを与えるはずです.
シンボリック仮想マシンであるKLEEを見てください。シンボリック実行を使用して、すべての可能な実行パスで可能なすべての変数値を決定します。
IBM Rational Purifyを試してみてください。これは静的コード アナライザーであり、詳細についてはwikiを参照してください。