PR

 静的検証ツールを手掛ける米コベリティは、Webアプリケーションの脆弱性検出などに向けた静的検証ツール「Coverity Security Advisor」を発表した。SQLインジェクションやクロスサイトスクリプティングといったセキュリティ上の脆弱性の可能性のある個所を、静的検証によって検出できる。JavaおよびC/C++が対象である。

 コベリティはこれまで静的検証ツール「Coverity Quality Advisor(旧Static Analysis、旧Prevent)」を手掛けていたが、売上の大半は組み込み分野が中心であり、特にアジア・パシフィック地域では、売上の9割が組み込み関連だった。エンタープライズ分野に本格的に進出するには、「セキュリティ関連の脆弱性検出機能が必須」(同社)とみて、今回、新たなツールを投入した形である。

 来日した同社 共同創業者 兼 CTOのAndy Chou氏に製品の特徴について聞いた。

(聞き手は進藤 智則=日経コンピュータ

Security Advisorの特徴は?

コベリティ 共同創業者 兼 CTOのAndy Chou氏
コベリティ 共同創業者 兼 CTOのAndy Chou氏

 当社は以前から静的検証ツールのQuality Advisorを手掛けており、バッファオーバーフローやnullポインタ参照など、セキュリティ上の脆弱性につながる不具合を検出する機能を提供してきた。

 ただし、Quality Advisorはあくまで品質を主眼にした製品であり、セキュリティに特化していたわけではなかった。Webアプリケーション分野では、セキュリティリスクの大半がSQLインジェクションとクロスサイトスクリプティングに起因しており、これらに直接対応したツールを投入する必要があると判断した(写真1)。

写真1●コベリティのツールの製品構成
写真1●コベリティのツールの製品構成
[画像のクリックで拡大表示]

 静的検証のエンジンについては、Quality Advisorと共通となる当社の「SAVE(Static Analysis Verification Engine)」を利用している。なお、Quality Advisorは以前は「Static Analysis」という製品名だったが、今回のSecurity Advisorの投入に併せて、Quality Advisorに名称変更した。いずれも静的検証(static analyzer)である点は共通しているため、それぞれツールの目的が明示されるような製品名とした。

Webアプリケーションの脆弱性検査ツールとしては、既に米IBM社の「Security AppScan」(関連記事1)、米Hewlett-Packard社の「Fortify Source Code Analysis(SCA)」(関連記事2関連記事3)などがある。どのように差異化するのか。

 最大の違いは、誰をユーザーとして想定しているかということだ。他社のWebアプリケーションの脆弱性検査ツールは、一般にセキュリティの専門家が用いることを想定している。このため、脆弱性につながりそうな個所を出来る限り多く抽出するような作りにしている。

 一方、我々のツールは現場の開発者が使うことを狙っている。開発者はセキュリティのチェックが本業ではないため、ツールがあまり多くのfalse positiveを出力すると煩わしく感じる。Security Advisorはfalse positiveの割合が10~20%であり、他社のツールと比べて低い。開発者が使うのに適しているだろう。

 一般にセキュリティの専門家というのはプロジェクト内に数人程度であり、開発の後工程でセキュリティをチェックすることが多いだろう。これに対し、開発者がSecurity Advisorのようなツールを用い、自らの手でセキュリティのチェックをするようになることで、脆弱性の要因となる個所をより上流の段階で検出できるようになる。手戻りの発生を防げるため、コストの削減にもなる。

 もう一つの差異点は、検出された脆弱性の修正のためのガイダンスをツールが表示することだ(写真2写真3)。セキュリティの専門家が使うのであれば、彼らはツールが指摘した脆弱性をどう修正するかはよく把握しているだろうが、一般の開発者はそうとは限らない。そこでSecurity Advisorでは、抽出された脆弱性の可能性のある箇所について、その脆弱性の性質に合わせた修正方法を提示するようになっている。この点も、一般の開発者が使いやすい特徴の一つだろう。

写真2●Security Advizorの内部構成
写真2●Security Advizorの内部構成
[画像のクリックで拡大表示]
写真3●修正ガイダンスの画面例
写真3●修正ガイダンスの画面例
[画像のクリックで拡大表示]

SQLインジェクションとクロスサイトスクリプティング以外には、どのような脆弱性の検出に対応しているのか。

 フォーマットストリング攻撃、整数オーバーフローなど合計で30~40種類ほどのセキュリティ上の脆弱性検出に対応している。

コベリティはSecurity Advisorなどの基盤となっている自社の静的検証の技術「SAVE」を、第3世代型との検証エンジンと位置付けているようだ。第1世代は1970年代に登場した単純な構文チェック型、第2世代は2000年代初頭に出現した実行時エラーなども検出できるもの、第3世代はそれらに加えて、SATソルバーを組み合わせたもの、としている。SATソルバーを応用した検証ツールとしては、ソースコード・モデル検査ツールの「CBMC(Bounded Model Checker for ANSI-C and C++)」(関連記事)などもあるが、どのように異なるのか。

 確かにCBMCもSATソルバーを用いており、メモリリークなどの検出が可能だが、CBMCはあくまでアカデミックな性質が強いツールだと認識している。我々の静的検証技術であるSAVEでは、数千万行規模のJavaもしくはC/C++プログラムを扱えるが、CBMCでは高々、数万行規模までだろう。商用ツールとして、扱える規模が全く異なると考えている。