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

スキャンの種類 ​

ベースライン (--scan=baseline、デフォルト)フル (--scan=full)
することクロールして、リクエストとレスポンスを確かめます (パッシブスキャン)同じことをしてから、各ページとパラメーターを攻撃します (アクティブスキャン)
見つけるものセキュリティヘッダー、Cookie、トークンのないフォーム、エラーページ、ヘッダーのバージョンなど同じものと、XSS (反射型、持続型、DOM ベース)、SQL インジェクション、パストラバーサル、コマンドインジェクション、オープンリダイレクトなど
データの変更しません。ページを読むだけですします。攻撃を入れたフォームを送るので、レコードを追加したり変更したりします
実行する場所どの環境でも。ステージングのサーバーでもテストのデータベースを使うテスト環境だけ
時間1、2 分ほど数分以上。攻撃は最大 --scan-minutes 分 (デフォルト 10)

ベースラインスキャン ​

ZAP は、サイトをトップページから --minutes 分 (デフォルト 1) クロールします。ページのリンクとフォームを、 ログインを指定しなければログインしていない訪問者として、たどります (スパイダー)。各リクエストと レスポンスを、パッシブスキャンのルールで確かめます。ヘッダー、Cookie、フォーム、ページとスクリプトの内容です。 攻撃は送らないので、どの環境でも、ステージングのサーバーでも実行できます (--url=https://staging.example.com)。

クロールで見つけるページは、実行ごとに少し変わります。JavaScript が作るリンクには、ブラウザでもクロールする --ajax-spider=1 を付けます (遅くなります)。操作を順に重ねないと届かないページには、クロールの代わりに End-to-End テストを使います。

フルスキャン ​

フルスキャンでは、続けて、クロールやテストで見つけた各ページと各パラメーター (クエリ、フォーム、Cookie、ヘッダー) を、 ZAP のアクティブスキャンのルールで攻撃します。スクリプト、クォート、SQL、../ の付いたパス、コマンド、ほかの サイトの URL などの値を送り、送ったスクリプトがそのまま出力された、SQL のエラーが出た、などレスポンスに表れたものを 報告します。

bash
vendor/bin/security-dast --scan=full --scan-minutes=20
  • データを変えます。 攻撃を入れたフォームを何度も送るので、レコードが追加、変更、削除され、メールが送られることも あります。スキャンの組み込みウェブサーバー (デフォルト、テストのデータベース) か、データが消えてもよい自分の サーバーでだけ実行してください。本番では決して実行しないでください。
  • 時間がかかります。 攻撃は --scan-minutes 分 (デフォルト 10) までです。長いシナリオにはもっと必要です。時間が 過ぎると、まだ攻撃していないパラメーターは検査されません。
  • 多くの脆弱性を見つけますが、すべてではありません。 攻撃は、レスポンスに表れた影響で見つけます。コードも pieceofcake2/security-sast で確かめてください。

フルスキャンは、報告書の言語に関係なく、ZAP の Default Policy のすべてのアクティブスキャンのルールを実行します。

CakePHP 2 と ZAP ​

ZAP は、CakePHP 2 のアプリケーションに合わせて設定してあります。

  • SecurityComponent のフォームの CSRF トークン (data[_Token][key]) を知っています。そうしたフォームをトークンの ないフォームとして指摘せず、フルスキャンでは、攻撃ごとにフォームのページから、スキャンのセッションの中で新しい トークンを取り直すので、SecurityComponent に弾かれません。
  • SecurityComponent が固定する欄 (_method、data[_Token][fields]、data[_Token][unlocked]) は攻撃しません。 これらを変えると必ず弾かれるので、攻撃しても時間がかかるだけです。
  • CakePHP のセッションの Cookie (CAKEPHP) を知っています。
  • ユーザーとしてのスキャンがログインしたままでいられるよう、ログアウトの URL (.*logout.*、--exclude を参照) は 除きます。

どこで何を実行するか ​

いつスキャン
push と pull request のたびベースラインスキャン。訪問者として、とユーザーとして
毎晩、またはリリースの前CI のテストのデータベースで、End-to-End テストのフルスキャン
ステージングへのデプロイのあと--url でベースラインスキャン

ワークフローは GitHub Actions での CI をご覧ください。

DAST で見つけられないもの ​

  • スキャンが届かないページ。ユーザーと End-to-End テストを与えてください。
  • アプリケーションのルール。あるユーザーがほかのユーザーのデータを見たり変えたりできるか (ほかのユーザーの /orders/view/12)、管理者だけができるはずのことができるか、などです。アプリケーションの テストで確かめてください。
  • 複数の手順や時間に関わるもの。2 つのリクエストの競合などです。
  • どのレスポンスにも表れないもの。パスワードの弱いハッシュや、コードの中の秘密などです。 pieceofcake2/security-sast (設定の検査で既定の salt や鍵も 見つけます) と pieceofcake2/security-sca (パッケージ) を ご覧ください。

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