新春特別企画

OWASP ZAPではじめる2016年のウェブアプリケーションセキュリティ

この記事を読むのに必要な時間:およそ 3.5 分

OWASP ZAPの機能

OWASP ZAPの主要な機能を表1に示します。OWASP ZAPによるウェブアプリケーションの脆弱性診断は,基本的には項番1を実施した上で項番2を実施するという手順で行いますが,より簡単に実施するために項番1と項番2を同時に実行する機能も有しています。その機能を用いると対象のURLの入力と1回のクリックのみで簡易な自動脆弱性診断を実行できます。

表1 OWASP ZAPの主要機能

項番機能名概要
1スパイダー機能指定のURLを起点とし,オートクローリング(自動で脆弱性診断対象のリンクを辿り,存在するURLを洗い出す。)を行います。
2動的スキャン機能 クローリングして明らかになった任意のURLに対し,ツールが準備している脆弱性診断用の検査文字列を用いて自動で脆弱性診断を行います。
3ローカルプロキシ機能 ローカルプロキシとしてOWASP ZAPを動作させ,手動で脆弱性診断を行います。やや玄人向けです。
4ディレクトリ探査機能指定のURL配下に不要なディレクトリが存在しないかを確認します。
5アラート機能脆弱性診断結果に関する簡易の報告書を作成します。
6ZAP Script機能OWASP ZAPの機能を拡張し,OWASP ZAPをより自分好みにカスタマイズできます。Javascript,Python,Rubyなどのさまざまな言語に対応しています。情報源としては,OWASP ZAP ScriptsというGroupがあります。

なお,OWASP ZAPによる自動脆弱性診断で検査可能な主な脆弱性は以下のとおりです。権限設定の不備など自動脆弱性診断ツールでは検出できない脆弱性を除き,ウェブアプリケーションにおける主要な脆弱性を網羅的に検査できます。

  • クロスサイトスクリプティング
  • SQLインジェクション
  • パストラバーサル
  • オープンリダイレクタ
  • ヘッダインジェクション
  • オートコンプリート機能の有効
  • アプリケーションエラーの開示
  • X-Content-Type-Optionsヘッダの未設定
  • X-Frame-Optionsヘッダの未設定
  • HttpOnly属性が付与されていないCookieの利用 等

OWASP ZAPの使い方

本稿では項番1のスパイダーを実行した上で項番2の動的スキャンを実行する自動脆弱性診断の手法を説明します。より玄人向けのローカルプロキシによる脆弱性診断については,ZAP Evangelistが開催しているハンズオン・トレーニングに参加いただく,または,ZAP Evangelist亀田さんが公開しておられる資料をご参照ください。

[注意]本稿に記載されている脆弱性診断の手法は,技術情報を共有する目的でのみ記載されています。脆弱性診断で実際に用いられる手法の中には,攻撃行為と判断されるものがあり,自身の管理下にないサーバ等に対して行った場合,最悪の場合,法的措置を取られる可能性もあります。試行にあたっては,必ず自身の管理下にあるサーバ等に対してのみ実施してください。

動的スキャンによる自動脆弱性診断のイメージ図は以下のとおりです。

図1 動的スキャンによる自動脆弱性診断のイメージ

図1 動的スキャンによる自動脆弱性診断のイメージ

OWASP ZAPが自動で脆弱性診断用の検査文字列をリクエスト,脆弱性診断対象からのレスポンスの内容により,脆弱性の有無を自動で判定します。以上より,脆弱性の検査方法に関する深い知見がなくても脆弱性の有無を検査することができます。

それでは,図1で示した動的スキャンによる自動脆弱性診断をOWASP ZAPで実行するための具体的な手順を示しましょう。

まずは図2図3に示すスパイダー機能を用いて脆弱性診断対象に存在するURLを洗い出します。なお,図2~図5は2015年12月時点でリリースされているOWASP ZAP 2.4.3をもとに作成しています。

図2 スパイダー機能を選択(赤枠のようにURL→攻撃→スパイダーと遷移)

図2 スパイダー機能を選択(赤枠のようにURL→攻撃→スパイダーと遷移)

図3 スパイダー機能を実行し,URLを洗い出す(赤枠のように「スキャンを開始」をクリック)

図3 スパイダー機能を実行し,URLを洗い出す(赤枠のように「スキャンを開始」をクリック)

次に,スパイダー機能で洗いだした各URLに対し,図4図5に示す動的スキャンを実行します。

図4 動的スキャン機能を選択(赤枠のようにURL→攻撃→動的スキャンと遷移)

図4 動的スキャン機能を選択(赤枠のようにURL→攻撃→動的スキャンと遷移)

図5 動的スキャン機能を実行し,脆弱性を検出(赤枠のように検出された脆弱性一覧,検出根拠を確認可能)

図5 動的スキャン機能を実行し,脆弱性を検出(赤枠のように検出された脆弱性一覧,検出根拠を確認可能)

以上の手順を踏むだけで自動脆弱性診断を実行することができます。脆弱性があると判定された根拠についてもOWASP ZAPで確認することができるため,その内容を見てご自身でプログラムを改修する箇所を推測,すぐに改修することができます。たったこれだけの手順でかなりの程度の脆弱性を後工程に引き継ぐことから食い止めることができます。OWASP ZAPによる脆弱性診断を実行しなかった時と比べて,手戻りリスクを低減することができるのは明らかです。

OWASP ZAPの今後の展望

OWASP ZAPは機能の改善や追加が頻繁に行われており,その活動はとても活発です。2015年12月にはOWASP ZAP 2.4.3がリリースされました。今後もこの取り組みは続けられていくでしょう。新しい機能や使い方について疑問点等必要があれば,コミュニティ・グループで質問したり,ZAP Evangelistの方々などの経験者の皆さんに積極的にコンタクトを取っていただくことをお勧めします。

本稿執筆時点で公開されているOWASP ZAPはクライアントにインストールするデスクトップ型のツールですが,Zap as a Service(ZaaS)というクラウドベースのサーバ型のサービス提供が期待されています。本サービスにより,自動的に検査文字列が最新化される,自動的に脆弱性診断が実行されるなど,利用者がツールを利用していることを意識することなく脆弱性診断を実行可能な未来が実現できるかもしれません。

まとめ

本稿ではOWASP ZAPの概要を説明し,簡単に利用できることを示しました。ただ,本稿でご紹介できたOWASP ZAPの機能はほんの一部に過ぎません。さらに使い込むことによってOWASP ZAPに愛着が湧くことでしょう。また,OWASP ZAPによる脆弱性診断のみで必ずしも全ての脆弱性を根絶することはできないことに留意する必要があります。すでに述べたとおり,自動脆弱性診断では検出できない脆弱性が存在します。そのため,開発したウェブアプリケーションのリリース前には,セキュリティ専門会社や専門部門等の脆弱性診断を必ず受診してください。

さて,OWASP ZAPプロジェクトでは他のプロジェクトと同様に,さまざまな知見を取り入れるために共に開発に携わってくれる仲間を募集しています。セキュリティ専任者であれば検査文字列の更新に貢献できますし,開発者であればZaaSの開発に携われることでしょう。ぜひOWASP ZAP Development Groupや,OWASP ZAP Japan Groupにご参加ください。

また,OWASP ZAPについてより深く学びたい場合には是非ハンズオン・トレーニングに参加してみてください。OWASP ZAPの利用者が増えることで,⁠ウェブをたしかなものに」することができれば幸いです。

著者プロフィール

仲田翔一(なかたしょういち)

OWASP Japan

OWASP Japan Promotion Team Leaderとしてセキュリティ専任者以外にもセキュリティの考え方を広める活動をしている。本業では主にITやセキュリティを中心としたコンサルティング業務に携わる。OWASPコミュニティとの関わりは,OWASP勉強会でのスピーカーにはじまり,国際カンファレンスの運営メンバーを経て今に至る。CISSP,PMP。

Twitter:@shonantoka


亀田勇歩(かめだゆうほ)

OWASP Japan

2014年に脆弱性診断ツールであるOWASP ZAPのエヴァンジェリストとして日本人で初めて登録される。Webアプリケーション開発の経験を活かし,OWASP Japanをはじめさまざまな勉強会でスピーカーを務め,Webセキュリティの啓発活動に取り組んでいる。本業ではWebアプリケーション脆弱性診断,プラットフォーム脆弱性診断,SOC/CSIRTに携わる。

Twitter:@YuhoKameda