はじめに
アジャイルやDevOpsといった開発・リリース手法が知られるようになってきました。ウェブアプリケーションのリリーススピードを高めるために役立つからでしょう。また、ビジネスにおいて後れを取らないようにする目的においても期待されているようです。
しかし、そのような中でも、情報処理推進機構(IPA)が公開した資料によると、ウェブアプリケーションに対する攻撃が近年増加の傾向をたどっています。現実の開発現場では、リリース直前になって初めてセキュリティ診断を実施するケースが多いと思われます。それがいま一つうまくいっていないのはなぜでしょうか。リリース直前の段階でのセキュリティ診断によって検出された脆弱性には、すぐに修正できるものもありますが、中には要件定義や基本設計工程までさかのぼって検討を行わなければ解決できない問題もあります。
つまり、セキュリティテストをもっと早い段階で行うことは、この手戻りによる問題を軽減し、リリーススピードをある程度確保することにつながります。ウェブアプリケーションの開発中にセキュリティ診断を実施し、検出された脆弱性をすぐに修正する、というサイクルを繰り返すというわけです。これは、ソフトウェア開発ライフサイクル(SDL)、セキュア開発ライフサイクル(SDLC)においてとても重要なポイントです。
さて、開発者にとってセキュリティ診断は、それほどなじみのあることではないことでしょう。例えば、SQLインジェクションといった脆弱性の名前は知っているが、具体的にその仕組みや、問題となるコードを発見する方法については分からないかもしれません。また、セキュリティ診断ツールにも苦手意識があるかもしれません。使い方を覚えるのに掛かる時間、ツールを購入する費用といった懸念があり、なかなか活用に踏み込めないという現状もあろうかと思います。
そこで本記事では、開発者にとってフレンドリなセキュリティ脆弱性検査ツールである、OWASP Zed Attack Proxy(以下OWASP ZAP)を紹介します。これはオープンソースライセンスで公開されているため、無料で使うことができます。まず、OWASP ZAPのインストール、次いで主要な機能をご紹介します。次回以降の記事で、診断の際のテクニックや、よりトリッキーな活用についても紹介していければと考えています。
1. OWASP ZAPとは
OWASP ZAP(オワスプ・ザップ)とは、OWASP Zed Attack Proxy Projectが開発・メンテナンスしているオープンソース(Apache 2 License)のセキュリティ診断ツールです。
表1に示すとおり、OWASP ZAPの機能を用いてセキュリティ診断を実施し、脆弱性を検出、修正することにより、アプリケーションのセキュリティを向上させることができます。
機能名 | セキュリティ診断での用途 |
---|---|
プロキシ | ブラウザとウェブアプリケーション間のHTTP通信内容を保存 |
セキュリティ診断用文字列を送信した場合のレスポンスデータを目視で確認 | |
スパイダー | ウェブアプリケーション全体の情報を収集 |
公開すべきではないファイルやディレクトリの有無を確認 | |
静的/動的スキャン | さまざまな脆弱性を自動的に検出 |
再送信・Fuzzer | 静的/動的スキャンの定型的な診断手法では検出が難しい脆弱性を手動で検出 |
アドオン・Script | ウェブアプリケーション固有の機能に対応した診断ツールの作成 |
ZAP API | スパイダーやスキャンといった、さまざまな機能を外部から操作して診断作業全体を自動化 |
本記事では、OWASP ZAPの機能のうち、基本的なセキュリティ診断を実施する際に利用する「プロキシ」および「動的スキャン」について解説します。