Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ECサイトの脆弱性診断をいい感じにやりたい/OWASPKansaiNight_LT1_220727

 ECサイトの脆弱性診断をいい感じにやりたい/OWASPKansaiNight_LT1_220727

「オワスプナイトカンサイ 2022.07 ~あつまろう関西~」にて
kiy0takaさんに発表いただいたLT「ECサイトの脆弱性診断をいい感じにやりたい」です
※資料内に埋め込みLinkが多数ありますので、資料をDLしてご確認ください

OWASP Kansai

July 27, 2022
Tweet

More Decks by OWASP Kansai

Other Decks in Programming

Transcript

  1. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. 自己紹介 • 奥 清隆

    (おく きよたか) • kiy0taka (git.io/K) • CTO@株式会社イーシーキューブ
  2. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. EC-CUBEの脆弱性診断 • OSS開発時の診断 –

    有償ツールでの脆弱性スキャン – セキュリティ専門企業による脆弱性診断 – VAddyでのE2Eテストを流用した脆弱性診断 • イーシーキューブ社以外でも利用しやすいものがないか? – オープンな仕組みで – コストがあまり掛からないように – 多くの人が使えるように
  3. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. 今日のお話 • ECサイトというかEC-CUBEの脆弱性診断をいい感じにしたい •

    そのためにOWASP ZAPを使ったりしている内容を紹介して 褒められたい ご意 見いただきたい
  4. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. ぼくがかんがえたさいきょうのEC-CUBE脆弱性診断 • OWASP ZAPで

    • マルチステップスキャンしたい • 自動化したい • セットアップに時間かけたくない
  5. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. マルチステップスキャン • 複数の画面遷移しないと辿れない画面へのアクティブスキャン •

    例)ECサイトでの購入フロー 1. 商品ページにアクセス 2. 商品をカートに入れる 3. レジに進む 4. 配送情報や支払い方法などを入力する 5. 確認する 6. 購入完了 いきなり4.のPOSTリクエストに対してアクティブスキャンできない -> 画面遷移エラーになるだけ • マルチステップスキャン=画面遷移しながらアクティブスキャンする
  6. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. マルチステップスキャン • 例えば、3つの画面を遷移するマルチステップがあるとする •

    パストラバーサルを検知するため各リクエストで100パターン攻撃するとする • 攻撃を含まない通常のリクエストをそれぞれreq1、req2、req3とする • 画面遷移時の攻撃リクエストをpt2(1)からpt2(100)、pt3(1)からpt3(100)とする 画面1 リクエスト 画面2 リクエスト 画面3 リクエスト req1 pt2(1) req(3) req1 pt2(2) req(3) … req1 pt2(100) req(3) req1 req2 pt3(1) req1 req2 pt3(2) … req1 req2 pt3(100)
  7. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. OWASP ZAP Sequence アドオン

    • マルチステップスキャンできるアドオン • 使い方 – Sequenceタイプのスクリプトを作成 – Zest形式でマルチステップを記述する – スクリプトに対してアクティブスキャン実行
  8. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. Sequence スクリプトの良い点1 • 各ステップでアサーションを定義できるのでアクティブスキャン実行前に

    Sequeceスクリプトを実行してすべてのアサーションが通るか確認できる • もしアサーションが通らない場合は、アプリケーションに変更が入って Sequenceスクリプトがそれに対応していないことを発見できる
  9. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. • マルチステップスキャンにすることで、アプリケーショションに変更を加えな くてもアクティブスキャンができるようになる •

    例えば、削除処理が実行されるリクエストに対してアクティブスキャンしたい とき、実際にはデータを削除されないようにパッチを当てておかないといけな い • データの登録から削除までの一連のステップをSequenceスクリプトにしておけ ばパッチを当てずにアクティブスキャンできる • 時間はかかるが放置できる Sequence スクリプトの良い点2
  10. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. • Cookieを送信してくれない問題 – https://github.com/zaproxy/zaproxy/issues/2634

    • カートに入れてカート画面に行ってもCookieを送信してないのでカートは空 • 2016年のIssueが解決されないままクローズされてた • マルチステップスキャンなんてできなかった ではなかった。。
  11. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. 修正した。 • いろいろ修正 –

    zaproxy – zap-extensions – zest • まだプルリク出せてない – ちょっと強引な箇所とか – Cookie送れない問題以外にもまとめて修正しちゃってるので分けないと – とりあえず自分のやりたいこと優先してしまった
  12. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. ぼくがかんがえたさいきょうのEC-CUBE脆弱性診断 • OWASP ZAPで

    • マルチステップスキャンしたい • 自動化したい • 使いやすいものにしたい ✔ ✔
  13. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. 自動化したい • Automation Framework

    • OWASP ZAPで行う様々な処理をYAMLで定義してCLIで実行できる ./zap.sh -cmd -autorun saikyouno_scan.yaml • あとはGitHub Actionsで定期実行 – アプリケーションの修正を定期的にスキャン – アプリケーションに変更がなくてもOWASP ZAPが更新されることで新し い脆弱性を検知できる
  14. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. 自動化したい • Sequenceスクリプトを実行 •

    Assertionが通ってるのを確認 • Sequenceスクリプトのアクティブスキャン • レポート作成 • リスク高のアラートがないことを確認
  15. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. Automation Framework • Sequenceスクリプトを実行

    スクリプト実行はStandalon or Targetedのみ • Assertionが通ってるのを確認 機能なし • Sequenceスクリプトのアクティブスキャン 機能なし • レポート作成 • リスク高のアラートがないことを確認  機能なし ✗ ✗ ✗ ✗ ✔
  16. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. 実装した。 • Sequenceスクリプトを実行 Scriptアドオン修正

    • Assertionが通ってるのを確認 あとでやる • Sequenceスクリプトのアクティブスキャン Sequenceアドオンに実装した • レポート作成 • リスク高のアラートがないことを確認  Standaloneスクリプトでやる とりあえずよしとする。 プルリクエストはまだ出せてない ✔ ✗ ✔ ✔ ✔
  17. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. GitHub Actionsの壁 • 6時間制限

    – マルチステップスキャンは時間がかかる – self-hosted runner使えば回避できるけど • ディスク容量不足 – すべてのリクエスト/レスポンス結果を保存する – 画像アップロードするステップとか大量の画像が保存される – self-hosted runner使えば回避できるけど
  18. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. GitHub Actionsの壁 • 6時間制限

    – マルチステップスキャンのステップが多くならないようにする • ディスク容量不足 – アクティブスキャンを実行してる裏で不要になったデータは削除する – 1pxの画像とを使ってリクエストが小さくなるようにする – リクエスト/レスポンスがすべて保存されるのは回避できない – ステップを少なくするのはディスク容量節約にもなる
  19. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. ぼくがかんがえたさいきょうのEC-CUBE脆弱性診断 • OWASP ZAPで

    • マルチステップスキャンしたい • 自動化したい • セットアップに時間かけたくない ✔ ✔ △
  20. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. セットアップに時間かけたくない • なんとかOWASP ZAPでいい感じになりそうなとこまで来たが。

    • これを使うには、 – 使い方の学習 – 環境のセットアップ – Sequenceスクリプトの作成 – etc. • まだまだ使えるようになるまでのコストが掛かる
  21. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. • EC-CUBE用のOWASP ZAPアドオン開発 –

    各種設定を簡単にできるウィザード – スキャン漏れのURLが確認できる機能 – 追加されたパラメーターの漏れがないか確認できる機能 – etc. セットアップに時間かからないように
  22. Copyright © EC-CUBE CO.,LTD.All Rights Reserved. ぼくがかんがえたさいきょうのEC-CUBE脆弱性診断 • OWASP ZAPで

    • マルチステップスキャンしたい • 自動化したい • セットアップに時間かけたくない これからやるところ ✔ ✔ △ ✗