JavaScript ソース・コード分析の機能

JavaScript Security Analyzer (JSA) は、JavaScript ソース・コードの静的分析を実行して、クライアント側のさまざまな問題 (主に DOM ベースのクロスサイト・スクリプティング) を検出します。JSA は、探査ステージで AppScan® Enterprise が収集した HTML ページを分析します。JSA は、テスト・ステージと並行して実行することができます。または、既存の探査結果を対象として、手動で随時起動することができます。

JSA によって検出される問題には、脆弱性のあるソース・コードを示す、ソース・レベルのトレース情報が含まれます。トレース情報は、問題の「この問題の情報」レポートの「コード・スニペット」タブで確認できます。コード内で番号が付けられて強調表示されている行は、アプリケーションに入力された信頼できないデータがどのように伝搬されて非セキュアな方法で使用されるかを、ソースからシンクまで、ステップバイステップで示しています。

動作説明

JSA は IBM の高度な文字列分析テクノロジーを使って誤検出を除去し、より正確に問題を分類します。各ページを分析するために 2 つのステージに適用されます: 汚染 (またはデータ・フロー) 分析および文字列解析。最初の段階で JSA は、サニタイザーを通らない、ソースからシンクまでのトレースを検索します。これが見つかった場合、JSA は第 2 段階でそれを検証します。その際、文字列分析のバリアントである文字列プレフィックス分析 (SPA) を使用します。

ソースが URL (またはその一部) であるようなケースでは、シンクにおいてアタッカーが URL のホスト部分とパス部分を制御できる場合にのみ、トレースが悪用可能となります。SPA はソース URL を扱う文字列操作を追跡することにより、このようなケースを検証します。SPA は URL のホストとパスが攻撃者によって制御されないことを想定します。 一方、クエリー/アンカー部分は次のとおりです。

シンクにおいて、SPA はアタッカーが URL のホスト部分とパス部分を制御できるかどうかを検査します。ホスト部分とパス部分がどちらも固定されていて、アタッカーが制御していないと判断した場合は、問題が排除されます。リダイレクトのターゲットが接頭部 javascript: または mailto: で始まる場合、問題はより正確に「DOM ベースのクロスサイト・スクリプティング」または「DOM ベースの電子メール・スプーフィング」と分類されます。

注: JSA の脆弱性は「セキュリティーの問題」レポートで確認できます。そのレポートで「この問題の情報」リンクをクリックすると、コード内で脆弱性がある箇所が強調表示されているコード・スニペットが表示されます。