Webアプリケーション向けのセキュリティスキャナ「skipfish」を使う

図3 Crawl resultsにはクロールの際に発見された問題点が表示される

 近年では多くの分野でWebアプリケーションが使われるようになり、大量の個人情報や重要な秘密情報を扱うようなアプリケーションも少なくない。そのため、Webアプリケーションも攻撃対象として狙われやすくなっている。今回はWebアプリケーションのセキュリティ対策として、Googleが公開しているセキュリティ調査ツール「skipfish」を使ったセキュリティスキャンを紹介する。

Webアプリケーションに特化したセキュリティ調査ツール「skipfish」

 今日では、Webブラウザ経由でさまざまな操作を行えるWebアプリケーションが広く浸透している。Webブラウザは最近のほぼすべてのPCにインストールされており、専用のクライアントを用意せずにアプリケーションを操作できるというのがその浸透の理由の1つだ。しかし、Webアプリケーションでは簡単にその一部(HTMLやJavaScript)のソースコードを閲覧することができ、また改ざんや細工を加えたリクエストを容易に送信できてしまう。そのため、設計・実装ミスによって簡単に脆弱性が生まれてしまう。Webアプリケーションに対する攻撃手法として有名なものにはSQLインジェクションやコマンドインジェクション、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)といったものがあり、これらが広く知られるようになった現在では攻撃を防ぐためのなんらかの仕組みが実装されていることが多いが、それが万全ではない場合や、ミスやバグなどによって特定の条件下で脆弱性が発生する場合などがある。

 今回紹介する「skipfish」は、このようなWebアプリケーションの脆弱性の検出に特化したセキュリティ調査ツールだ。Googleが開発・公開しており、実際にGoogle社内でも利用されているという。skipfishではWebサイトに対しクローリングを行ってアクセスできるURLを抽出し、それらに対しさまざまなパターンでのアクセスを行ったり、特定のキーワードや拡張子を組み合わせて問題の発生しそうなURLやリクエストを生成してアクセスすることで調査を行い、その結果をレポートとして出力する。対象とするWebサイトにHTTPでアクセスして調査を行うため、対象を特定のWebアプリケーションに限定せず、どのようなWebサイトに対してでも利用できる。

 調査結果はHTML形式のレポートとして出力され、発見された問題点は「潜在的リスク」ごとに色分けされて表示される。ここで検出された問題点のすべてがセキュリティリスクにつながる訳ではないが、問題を発見するための手がかりとしては非常に有用だ。

 skipfishの特徴としては、独自にカスタマイズされた高速なHTTPスタックによる高いパフォーマンスと使いやすさ、そして有意なセキュリティ調査を行える点が挙げられる。同社が公開しているプロクシ型の脆弱性検査ツール「ratproxy」など、同社が持つセキュリティ技術がskipfishに投入されており、CSRFやXSS、エンコード関連処理による脆弱性、SQL/XMLインジェクションなどさまざまな問題の検出が可能だ。動作環境はLinuxやFreeBSD、Mac OS X、Windows(Cygwin環境)となっている。

skipfishで検出できる問題点

 skipfishで検出できる脆弱性についてはskpifishのドキュメントにまとめられているが、たとえばリスクの高いものとしては次のものが挙げられている。

  • サーバーサイドSQL/PHPインジェクション
  • GET/POSTメソッドのパラメータにおけるSQL風命令の埋め込み
  • サーバーサイドシェルコマンドインジェクション
  • サーバーサイドXML/XPathインジェクション
  • フォーマット文字列に関する脆弱性
  • 整数オーバーフローに関する脆弱性
  • PUTメソッドでのLocations受け入れ

 これらは悪用されるとデータベースへの不適切なアクセスやサーバー上での想定外の処理実行などを許してしまう可能性があり、非常に危険な脆弱性であると言える。また、skipfishでは脆弱性だけでなく予期しないリクエスト結果の検出やSSL関連の不適切な設定、有効でないリンク、サーバーのエラーといった、脆弱性には直接つながらないがWebサイトの管理・運用には有用な情報も検出してくれる。

 なお、skipfishでは直接の脆弱性にはつながらないという理由で、以下の項目については調査を行わない。

  • 暗号化されずにやり取りされるCookie
  • JavaScriptからのCookie読み取り
  • 暗号化されずに送信されるフォーム
  • HTML内のコメント
  • エラーメッセージ内でのファイルシステムのパスや内部IPアドレスの表示
  • サーバーやフレームワークバージョンの表示
  • HTTPのTRACEやOPTIONSメソッドサポート
  • WebDAVなど一部でしか使われていない技術

 これらは通常直接問題になることは少ないが、別のセキュリティ調査ツールでの検出が可能なものもあるため、状況に応じて別のツールを併用することが望ましいだろう。