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

StackHawkを使ってWebアプリケーションの脆弱性を診断する

smokeymonkey
November 21, 2022

 StackHawkを使ってWebアプリケーションの脆弱性を診断する

2022年11月21日(月)に開催されたDevelopersIO 2022秋 in Sapporoでお話したセッションの登壇資料です。

smokeymonkey

November 21, 2022
Tweet

More Decks by smokeymonkey

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 • 佐々⽊ ⼤輔 • クラスメソッド株式会社 取締役 • ネットワーク/セキュリティエンジニアを経て、 2014年1⽉

    クラスメソッド株式会社にジョイン。 • シニアソリューションアーキテクトとして勤務。 • 2015年よりAWS事業を統括。 • 2019年より取締役。 • 現在はグローバルビジネス及びビジネスアラ イアンスを統括 2
  2. 4 StackHawkとは •DAST(Dynamic application security testing: 動的アプ リケーション・セキュリティ・テスト)のSaaS •CI/CDプロセスに組み込むことで、pull requestごとに脆

    弱性スキャンを実施可能 • DevOpsにおけるシフトレフトを実現することで、Webアプ リケーションの品質を向上させる •世界で最も広く利⽤されているOWASP ZAPがベース
  3. 5 OWASPとは •OWASP(Open Web Application Security Project) • セキュリティ分野の情報共有と普及啓発を⽬的としたオープ ンソース・ソフトウェアコミュニティ

    • Webをはじめとするソフトウェアのセキュリティ環境に関す る研究、ガイドラインの作成、脆弱性診断ソフトウェアの開 発などの活動をしている • 世界各地に⽀部があり、⽇本ではOWASP Japanが存在
  4. 10 ZAP vs StackHawk •StackHawkの良いところ • スキャン対象のテクノロジの指定可 • スキャンのパフォーマンス最適化 •

    テスト設定をYAMLとして保存、容易に複製し別環境に展開可 能 • 診断結果を即時に修正するものと修正せずにチケット化する ものを選択可能 • 検索履歴管理が容易 • 認証済みスキャン可能(Cookieベース認証、Bearerトークン 認証、外部トークン認証をサポート)
  5. 20 StackHawk CLIのインストール ØStackHawk CLIには Java v11以上が必要 $ brew install

    openjdk $ sudo ln -sfn $(brew --prefix)/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk ØStackHawkのインストール $ brew install stackhawk/cli/hawk ØStackHawkのバージョン確認 % hawk version v2.9.0
  6. 24 StackHawk CLIにAPI Keyを設定 % hawk init Please enter your

    StackHawk API key. To create a new API key, visit https://app.stackhawk.com/settings/apikeys: hawk.******** Authenticated!
  7. 26 ターゲットはOWASP Juice Shop •OWASP Juice Shop • https://juice-shop.herokuapp.com/ •

    OWASPが提供する、脆弱性診断を練習するためのサイト • OWASP Top 10及び実際のWebアプリケーションでよく⾒つ かる脆弱性を内包 • OWASP⽈く”OWASP Juice Shop is probably the most modern and sophisticated insecure web application” • 誰が⾒ても偽物だと分かるくらいダサい(ダサく作られてい る)
  8. 33 StackHawk CLIの設定ファイルを作成 Ø コピーした内容をペーストして設定ファイルを作成 % vi stackhawk.yml # --

    stackhawk configuration for OWASPJS -- app: # -- An applicationId obtained from the StackHawk platform. -- applicationId: 518b2ebf-1c1a-********* # (required) # -- The environment for the applicationId defined in the StackHawk platform. -- env: Production # (required) # -- The url of your application to scan -- host: https://juice-shop.herokuapp.com # (required)
  9. 35 脆弱性診断を実⾏ % hawk scan StackHawk 🦅 HAWKSCAN - v2.9.0

    * app id: 518b2ebf-1c1a-4067-91b1-7ca5a66f44a4 * env: Production * scan id: 7d2d96dc-7c87-4030-984c-83889d0cabc6 * scan configs: ['/Users/sasaki.daisuke/stackhawk.yaml'] * app host: https://juice-shop.herokuapp.com (--snip—)
  10. 37 脆弱性診断結果 1) Cross-Domain Misconfiguration Risk: Medium Cheatsheet: Paths (9):

    [New] GET [New] GET /robots.txt [New] GET /assets/public/favicon_js.ico [New] GET /runtime.js [New] GET /sitemap.xml ... 4 more in details
  11. 38 脆弱性診断結果 2) Content Security Policy (CSP) Header Not Set

    Risk: Medium Cheatsheet: Paths (3): [New] GET [New] GET /sitemap.xml [New] GET /ftp
  12. 39 脆弱性診断結果 3) Strict-Transport-Security Header Not Set Risk: Low Cheatsheet:

    Paths (10): [New] GET [New] GET /runtime.js [New] GET /robots.txt [New] GET /assets/public/favicon_js.ico [New] GET /sitemap.xml ... 5 more in details
  13. 40 脆弱性診断結果 4) Cross-Domain JavaScript Source File Inclusion Risk: Low

    Cheatsheet: Paths (2): [New] GET [New] GET /sitemap.xml
  14. 46 Snyk Codeとの連携が可能 •Snyk Code • Snykが提供している、ソースコードのセキュリティスキャン や品質チェックといった静的解析を実⾏できるサービス •StackHawk +

    Snyk Code • DAST(動的アプリケーションセキュリティテスト)である StackHawkとSAST(静的アプリケーションセキュリティテス ト)であるSnyk Codeの2つのスキャン結果を関連付けて表⽰す ることで、問題の検出と優先順位付け、及び対応が即時に可 能になる
  15. 49