1
/
5

OWASP ZAPについて調べてみた

はじめに

開発エンジニアのamdaba_sk(ペンネーム未定)です。前回は「ソフトウェアテストについて簡単にまとめてみた」という記事を書きましたが、その流れで今回はセキュリティテストツール「OWASP ZAP」について少し調べてみました。

※以下は個人的にネットで調べてみた情報をまとめたものであり、実際に開発過程で運用するなどしたものではありません。また日本語サイトを中心に調べているため、機能等の情報は古い可能性があります。

セキュリティテスト

昨今は個人情報の漏えいや顧客情報流出などのニュースをよく耳にします。怖いですね…。

ラクスでも個人情報の漏えいや顧客情報流出などは深刻な問題としてとらえていまして1、その発生を未然に防ぐために開発者には年1度セキュリティ学習と修了テストが課されていたりしています。

またリリース前にはとあるWebアプリケーション検査ツールを使った脆弱性検査を実施し、検出された脆弱性を修正するようにしています。

しかしながら今のツールによる検査は、はたから見ているだけの感想ですが

  • 設定がややこしそう
  • リリース前に修正箇所全体に対して行うため、たくさんあったときに修正が大変
  • ツールの稼働サーバーがチーム間で共有なため、柔軟には使用できない

といった不便さを抱えているように感じます。

OWASP ZAP

そこで上記の不便さに対し、

  • もっと簡単な設定で自動チェックをしてくれるツールはないか
  • もっとこまめに、例えば単体テストの一環としてチェックできないか
  • もっと柔軟に、チームごとに専用の環境を用意できないか

といった要望を満たすツールとして私が目を付けたのが「OWASP ZAP」でした。

OWASPとは

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

ウェブアプリケーションを作成する開発者や,ウェブアプリケーションに関わる意思決定を行う方々に対し,セキュリティに関する十分な情報を行き渡らせることを目的とし活動をしているのがOWASPです。OWASPは「The Open Web Application Security Project」の略称で,グローバルにチャプター(支部)を展開するオープンコミュニティです。

と説明されています。Webアプリケーションセキュリティの啓蒙団体といったところでしょうか。

OWASP ZAPの概要

OWASPにはWebアプリケーションセキュリティの啓蒙に関して大小さまざまなプロジェクトを展開しています。OWASP Zed Attack Proxy(OWASP ZAP⁠)はその中でも最重要として位置づけられたプロジェクトの一つであり、その成果物としてのツールです。

IPAテクニカルウォッチ「ウェブサイトにおける脆弱性検査手法の紹介」でも取り上げられて、使いやすく、検知制度が高く、効率性が非常に高い初級者向けのツールという評価を受けています。またありがたいことに無料で使えるオープンソースウェブアプリケーション脆弱性診断ツールで、Github上ソースコードが公開されています。

用途としては「開発者が開発時に簡易的なウェブアプリケーション脆弱性診断を実施する」ことを特に意識して作られており、セキュリティの専任ではない開発者でも簡単に利用できるようになっています。

なお、OWASP ZAPが検査可能な主な脆弱性は以下のとおりです。

OWASP ZAPの機能

表1はOWASP ZAPの主要な機能をまとめたものです。

表1 OWASP ZAPの主要機能(OWASP ZAPではじめる2016年のウェブアプリケーションセキュリティより引用)



OWASP ZAPはJavaで作られており、クロスプラットフォームで動作します。またwindows 環境では特にありがたいのですが、利用しやすいようにグラフィカルインターフェースを備えています。

詳しい手順はその他の記事や公式のドキュメントを参照していただきたいと思いますが、項番1(スパイダー)の実行後に項番2(動的スキャン)を実行する自動脆弱性診断を行うだけなら

  1. 検査対象URLの入力
  2. 実行ボタンクリック

という非常に簡潔な手順で実施できます。

一方でRESTfulなAPIによる操作もできるようで、curl
などでコマンドラインからリクエストを投げれば上の手順をスクリプト化できます。さらにデーモンモードで起動しておけば、JenkinsなどのCIツールと連携して最初から最後まで自動で実施することもできます(e.g.JenkinsとOWASP ZAPで自動診断 - Qiita)。

またJenkinsと連携した上の例ではOWASP ZAPのAPIスクリプトで直接呼び出していますが、 公式のZAP Jenkins pluginというものもあるようで、そちらを利用するという手もあるでしょう。

その他、手動の単体テスト実施時にローカルプロキシ機能を使用してチェックするとか、いろいろ設定をいじって使ってみるとか、使い方の幅も広そうです。

おわりに

以上簡単ながら「OWASP ZAP」について調べたことをまとめました。

設定も簡単、精度もよく、自動化も可能と、とっても便利そうです。ただあくまで簡易チェックツールということで、

  • 開発中は「OWASP ZAP」で簡易検査
  • リリース前は精密チェックができる別のツールで本検査

という風な使い分けをしたらいいんじゃないかと今の段階では思っています。

株式会社ラクスでは一緒に働く仲間を募集しています
今週のランキング
株式会社ラクスからお誘い
この話題に共感したら、メンバーと話してみませんか?