診断ツールで決まる

脆弱性診断の場合は、どんなツールを使うかで検出率や作業時間が変わってきます。特にWebアプリの診断はそうだと思います。今まで実際に業務で使用してきたツールで考えてみますと、大きく2つに分類されるようです。

つまり、処理別にシナリオを作成できるかできないかになります。
きめ細かくシナリオを作成できるツールがより正確に診断ができると思います。(もちろん、シグネチャにも左右されますが)

L社独自ツールとUBsecureのVexは、その点きめ細かいシナリオを作成できるので優秀だと思っています。Vexで用意されているHandler機能の中で「準備処理」さえ使えば、大抵のアプリのシナリオを作成できます。シナリオ作成で重要なのは、前のレスポンス(あるいはリクエスト)からのデータの引継ぎです。

この引継ぎ設定が、Vexは超簡単です。
引継ぎテンプレートが3種類あるのですが、「順次代入」のテンプレートでほとんど事足りています。その中で、パラメータ名引継ぎは、一覧で出てくるので選択するのみですし、パラメータ名の一部検索もできるのでとても便利です。

また、正規表現による引継ぎでは、引き継ぎたい箇所をカーソルでなぞるだけで、正規表現の推奨パターンが出てくるのでこれも選択するのみで、選択してから実際の検索もできるので正規表現が適切かどうかを確認することができます。正規表現が苦手な私にはとても嬉しい機能です。

もちろん、L社独自ツールも素晴らしいのですが、こちらは公開していないツールなので、残念ながらあまり語ることはできません。とても柔軟なツールで、その設計思想は秀逸極まりないと褒めておきます。

一方で、AppScanやOWASP ZAPは、きめ細かいシナリオを作成しなくてもいいので、そこまでの診断スキルがなくても使えるし、かつ診断時間が短くて済むというメリットがあります。短時間でざっと診断したいという時にはお勧めです。

特にAppScanは、SQLインジェクションやクロスサイトスクリプティングの検知率はいいと思っています。印象に残っているのは、ディレクトリトラバーサルをよく見つけるということです。何度か助かったと思ったことがあります。