Skip to content
これは pieceofcake2/security-dast のドキュメントです。pieceofcake2/cakephp 用の CakePHP 2.x プラグインです。 このフォークについて

報告書 ​

見本 ​

ベースラインスキャン: セキュリティヘッダーのないページ、トークンのないフォーム、エラーページのあるサイトです。

表紙、リスク別のアラート、確認した項目(問題なし)、アラートのページ

フルスキャン: End-to-End テストをシナリオにした、CakePHP 2 アプリケーションです。SecurityComponent のトークンの あるフォームが値を h() なしで出力していて、反射型の XSS として見つかります。

End-to-End テストでのフルスキャンの表紙、リスク別のアラート、確認した項目(問題なし)、XSS のページ

見本は、架空のアプリケーションを記録したスキャンから docs/examples/report-sample.php で作ります。Samples ワークフローが ZAP でスキャンを記録し直します。

ページ ​

  1. 表紙: 結果、リスクごとのアラートの数、リポジトリ、ブランチ、コミットと、スキャンの対象。URL、サーバー (組み込み ウェブサーバーとその APP_ENV、または起動済みのアプリケーション)、検査 (ベースラインかフルか、その時間)、 End-to-End テストとその結果、ログインしたユーザー、アラートのある URL の数、除外したアラート、除外した URL (--exclude)、不合格の基準です。 続けて、実行の日時、環境、ソフトウェア (ZAP とそのバージョン)
  2. リスク別のアラート: 高、中、低、情報の順に、アラートが無くても「なし」と載せます。アラートとそのリクエストの数。 それぞれのページへのリンク付き。除外したアラート: --ignore で除いたものがあるとき。それぞれの ID、名前、リスク、 URL の数、設定ファイルの理由 (アラートを除外する)
  3. 確認した項目: ZAP のスキャンルール。ID はそのアラートの ID です
    • 確認した項目(問題なし): 実行してサイトにアラートを出さなかったルール。パッシブかアクティブか
    • 実行しなかった項目: ZAP が飛ばしたアクティブのルール (サイトの技術に当てはまらない、攻撃するページがない、 または制限時間) と、ベースラインスキャンではアクティブスキャンのルール (実行しません)。アクティブスキャンが 制限時間 (--scan-minutes) に達したときは、始めていなかったルールは載らず、注記にそう書きます
  4. アラートごとのページ: 名前、アラート ID、リスク、確度、CWE、WASC、意味と対策 (ZAP の説明を報告書の言語で)、 見つかった各リクエストを 50 件まで、参考リンク (最初に zaproxy.org のアラートのページ)

ZAP は、実行したルールを modern レポートの「合格したルール」(パッシブスキャンとアクティブスキャンのジョブのデータ) に、飛ばしたルールを traditional-json-plus レポートの統計に出します。プランはアラートのほかにこの 2 つもスキャンの ディレクトリに書きます。ほかのサイト (シナリオのブラウザがプロキシ経由で読み込んだ CDN など) にだけアラートを出した ルールは、どちらの一覧にも載りません。

各リクエストには、メソッドと URL に続けて、ZAP が見つけたものが載ります。

パラメーターアラートのパラメーター、ヘッダー、Cookie。data[Contact][message] など
攻撃ZAP が送った値。フルスキャンのアラートのもの
根拠レスポンスに表れたもの。送った攻撃がそのまま出力されたもの、足りないヘッダーなど
その他の情報ZAP のそのほかの詳細

CakePHP 2 アプリケーションでの修正方法は アラート をご覧ください。

リスクと確度 ​

リスクは、問題が本物だったときの深刻さです。高 (XSS、SQL インジェクションなど)、中 (CSP やクリックジャッキング 対策のヘッダーの不足など)、低 (SameSite のない Cookie など)、情報 (知っておくもの。修正することはまれ) があります。 確度は、ZAP が問題を本物と考える確からしさで、低、中、高、確認済みがあります。確度が低のアラートは、修正する前に コードで確かめてください。誤検知のことがあります。

--fail-on は、確度に関係なく、リスクで不合格にします。

--fail-on不合格になるもの
high (デフォルト)高
medium高と中
low高、中、低
infoすべてのアラート
noneなし。報告のみ

既存のアプリケーションでは、まず --fail-on=none で報告書のアラートを修正し、それから基準を上げてください。

アラートを除外する ​

まずアラートを修正してください。ほとんどは、AppController か Web サーバーで、アプリケーション全体に一度で修正できます (アラート)。当てはまらないアラートは、ID で報告書から除けます。

bash
vendor/bin/security-dast --ignore=10038,10020
  • ID はその派生も除きます。10038 で 10038-1 も除きます。
  • ID は、報告書のアラート ID と、ZAP のアラートの一覧 のものです。
  • 忘れないよう、スキャンで出た除外したアラートも報告書に載ります。表紙に ID、「除外したアラート」のグループに それぞれの名前、リスク、URL の数、理由です。不合格にはならず、コマンドのまとめにも件数が出ます。

除くのは、アプリケーションではなくスキャンの環境のアラートです。本番の前のプロキシが付けるセキュリティヘッダーで、 スキャンの組み込みウェブサーバーにはないものや、CI の PHP の X-Powered-By などです。 設定ファイルで、ID ごとに理由を書いてください。報告書ではアラートと一緒に載ります。

php
'dast' => [
    'ignore' => [
        '10038' => '本番のロードバランサーが CSP を付ける。ステージングで --url で確認済み',
        '10020' => '本番のロードバランサーが X-Frame-Options を付ける。ステージングで --url で確認済み',
    ],
],

理由のない ID のリスト 'ignore' => ['10038', '10020'] も使えます。キーのある ID の後ろのキーのない ID には PHP が 番号を振るので、理由はすべての ID に書くか、どれにも書かないかにしてください。--ignore と SECURITY_DAST_IGNORE は ID だけを受け付け、ファイルの ID を置き換えます。

著作権とライセンスについては LICENSE を参照してください。Cake Software Foundation とは関係ありません。