リスト、テストスイート、ベンチマークだけではSASTツールを比較できない
Asaf Biton
Shani Gal
2021年6月16日
0 分で読めますチームに最適なSASTツールを見極めるには、さまざまな課題があります。しかし、未知の脆弱性を見つけることを目的としたツールを、どう測定すればよいのでしょうか?そのツールが自分たちのニーズに合っているか、どうすればわかるのでしょうか?異なるツールをどう比較すればよいのでしょうか?「Snyk CodeはOWASP Top 10に対応していますか?」という質問をよくいただくのも不思議ではありません。続けて、「異なるSASTツールを評価、比較するにはどうすればよいですか?」と尋ねられることもよくあります。
誰もが簡単な答えを求めています。そのため、SASTツールの比較でよく使われる「測定基準」は、対策すべき一般的な脆弱性をまとめた資料やリスト(OWASP Top 10、SANS-25など)です。これらのリストを使って2つのSASTツールの結果を比較するのは簡単に思えるかもしれません。しかし、答えはそう単純ではありません。この記事では、こうした測定基準を使うことの限界を見ていきます。
それぞれの標準について詳しく見ていく前に、基本的な用語を確認しましょう。
OWASP Top 10は、Webアプリケーションの開発者が認識しておくべき上位10件のリスクをまとめたリストです。OWASP® Foundationが公開しており、最終改訂は2017年です。
SANS-25は、最も危険なソフトウェアエラーの種類を25件まとめたリストです。SANS Instituteが公開しており、最終改訂は2011年です。
CWE Top 25は、SANS-25によく似た別のリストですが、より頻繁に更新されています。CWE Teamが公開しており、2020年に改訂されています。
ベンチマークは、SASTツールのテストを目的に設計されたオープンソースのテストスイートです。Javaのみを対象としており、現在も積極的にメンテナンスされていますが、メジャーバージョンの最終リリースは2016年です。
意図的に脆弱性を含めたアプリは、脆弱性についての教育や事例の提供を目的としたリポジトリやプロジェクトです。さまざまな標準に準拠している場合もあります。これらのプロジェクトは、SASTツールを念頭に置いて作成されたものではありません。例として、OWASP/NodeGoat、appsecco/dvna、WebGoat、juice-shopがあります。
それでは始めましょう!
SASTツールの測定に脆弱性リストを使う際の課題
さまざまな脆弱性リストが、SASTツールの測定やSASTの問題の優先順位付けに適していない理由はいくつかあります。
対象範囲が限定的:リストによっては、対象範囲が特定の領域に限られています。たとえば、OWASP Top 10が対象とするのはWebアプリケーションのセキュリティのみです。
汎用的すぎる:一方、SANS-25やCWE Top 25は環境や言語を区別していないため、すべての言語に関係するとは限らない多くの脆弱性(またはCWE)がリストに含まれることがあります。たとえば、CWE-416:Use After Freeは、C、C++、Rustなどの低レベル言語にのみ関係します。
古くなっている可能性があります:こうしたリストは、定期的に更新されないことがよくあります。OWASP Top 10の最終更新は2017年、SANS-25の最終更新は2011年です。そのため、現在のアプリケーションセキュリティの状況が必ずしも反映されているとは限りません。最近増加しているサプライチェーン攻撃やタイポスクワッティング攻撃は、その顕著な例です。どちらのリストにも、これらの問題は記載されていません。
SASTに関係しない:問題によっては、SASTの文脈では重要でないものもあります(一般的に重要でないという意味ではありません)。たとえば、OWASP Top 10には不十分なログ記録とモニタリングが含まれていますが、それ自体は脆弱性ではありません。
SASTツールの測定にテストスイートや意図的に脆弱性を含めたアプリを使う際の課題
OWASP Benchmarkのようなテストスイートや脆弱性を含むリポジトリにも、それぞれ限界があります。
対応言語が限られる:複数の言語をテストできるテストスイートや、意図的に脆弱性を含めたアプリはありません。たとえば、OWASP Benchmarkに含まれるのはJavaの問題のみです。
過剰適合:「業界標準」となるテストスイートや意図的に脆弱性を含めたアプリのセットがあると、企業は特定の問題に合わせてSASTの機能を調整できてしまいます。その結果、製品はベンチマークで非常に優れた結果を出すようになります。しかし、それが実環境での精度や分析の深さに結び付くとは限りません。
意味的に包括的:ベンチマークや脆弱性を含むアプリの例は、データフローがより複雑な実際のアプリケーションを反映していないことがよくあります。
では……SASTツールはどう比較すればよいのでしょうか?
さまざまなツールを調べ、SASTツールの評価に適さない理由を確認してきました。ただし、これらのリスト、テストスイート、ベンチマークに価値がないというわけではありません。多くは、開発者を教育し、一般的なセキュリティ問題への意識を高める目的で作られています。SASTツールの測定には向いていませんが、組織のセキュリティに関する知識を高めるうえで大きな役割を果たすと、私たちは考えています。
ここまでの標準に問題があるなら、SASTツールを測定する方法は何だろうとお考えかもしれません。続編の記事で、SASTテストを測定する3つのパラメーターをご紹介します。
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。

