- PdM(楽楽シリーズ)
- Javaエンジニア(楽楽明細)
- 業務改善(BPR)
- Other occupations (76)
-
Development
- Javaエンジニア(楽楽明細)
- エンジニアオープンポジション
- ブリッジSE(大阪)
- PM(楽楽シリーズ)
- オフショアPJマネージャー
- Webエンジニア(大阪PHP)
- テックリード(大阪/PHP)
- ブリッジSE/オフショア開発
- フロントエンドマネージャー候補
- プロジェクトマネージャー
- エンジニアリングマネージャ
- AI導入エンジニア
- プロダクト開発部長
- Web Engineer
- フロントエンドエンジニア
- Webエンジニア
- フロントエンド(リーダー)
- Mobile Engineer
- Android/iOSアプリ
- 社内SE(大阪/セキュリティ)
- インフラエンジニア
- インフラエンジニア/マネージャ
- DevOps Engineer
- 社内SE(データエンジニア)
- 戦略企画・データマネジメント
- QAリーダー/マネージャー
- システム企画
- 品質管理/技術支援チーム
- AI/機械学習エンジニア
- データ基盤エンジニア
- Engineering
- UIデザイナー(リーダー)
- コーポレートデザイナー
- UIデザイナー
-
Business
- PdM(楽楽シリーズ)
- 開発マネージャー
- プロジェクトマネージャ(大阪)
- 導入支援/導入コンサルタント
- プロダクトマネージャー
- プロダクトマネージャー(AI)
- PMMプロダクトマーケティング
- プロダクトセキュリティ
- 技術推進部長
- IR
- HRBP
- データマネジメント・マーケ戦略
- 経営企画
- コーポレート広報
- 内部監査(業務監査)
- 人材開発
- 営業企画(イネーブルメント)
- ITセールス(名古屋)
- セールスマネージャー
- 法人営業/カスタマーサクセス
- フィールドセールス(名古屋)
- フィールドセールス(法人営業)
- フィールドセールス
- ITセールス(広島)
- 法人営業
- フィールドセールス(東京)
- 営業企画(戦略立案)
- ITセールス
- ビジネスオープン
- ITセールス経験者
- オンラインマーケティング
- オフラインマーケティング
- 製品企画/法要件(楽楽明細)
- ブランド企画
- 製品企画/プロダクトマーケ
- CSマーケティング
- マーケティング担当
- ブランド企画・ブランディング
- マーケティングリーダー
- 営業推進リーダー(楽楽精算)
- Other
はじめに
開発エンジニアの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が検査可能な主な脆弱性は以下のとおりです。
- クロスサイトスクリプティング
- SQLインジェクション
- パストラバーサル
- オープンリダイレクタ
- ヘッダインジェクション
- オートコンプリート機能の有効
- アプリケーションエラーの開示
- X-Content-Type-Optionsヘッダの未設定
- X-Frame-Optionsヘッダの未設定
- HttpOnly属性が付与されていないCookieの利用 等
OWASP ZAPの機能表1はOWASP ZAPの主要な機能をまとめたものです。表1 OWASP ZAPの主要機能(OWASP ZAPではじめる2016年のウェブアプリケーションセキュリティより引用)
OWASP ZAPはJavaで作られており、クロスプラットフォームで動作します。またwindows 環境では特にありがたいのですが、利用しやすいようにグラフィカルインターフェースを備えています。詳しい手順はその他の記事や公式のドキュメントを参照していただきたいと思いますが、項番1(スパイダー)の実行後に項番2(動的スキャン)を実行する自動脆弱性診断を行うだけなら
- 検査対象URLの入力
- 実行ボタンクリック
という非常に簡潔な手順で実施できます。一方でRESTfulなAPIによる操作もできるようで、curl
などでコマンドラインからリクエストを投げれば上の手順をスクリプト化できます。さらにデーモンモードで起動しておけば、JenkinsなどのCIツールと連携して最初から最後まで自動で実施することもできます(e.g.JenkinsとOWASP ZAPで自動診断 - Qiita)。またJenkinsと連携した上の例ではOWASP ZAPのAPIをスクリプトで直接呼び出していますが、 公式のZAP Jenkins pluginというものもあるようで、そちらを利用するという手もあるでしょう。その他、手動の単体テスト実施時にローカルプロキシ機能を使用してチェックするとか、いろいろ設定をいじって使ってみるとか、使い方の幅も広そうです。
おわりに
以上簡単ながら「OWASP ZAP」について調べたことをまとめました。設定も簡単、精度もよく、自動化も可能と、とっても便利そうです。ただあくまで簡易チェックツールということで、
- 開発中は「OWASP ZAP」で簡易検査
- リリース前は精密チェックができる別のツールで本検査
という風な使い分けをしたらいいんじゃないかと今の段階では思っています。