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

セキュリティ研修 〜テクニカルパート〜(サイバーエージェント新卒研修2024)

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 セキュリティ研修 〜テクニカルパート〜(サイバーエージェント新卒研修2024)

Avatar for CyberAgent

CyberAgent PRO

June 05, 2024
Tweet

More Decks by CyberAgent

Other Decks in Technology

Transcript

  1. 改めて 9 セキュリティを守れずに、事故が発生してしまうと • 利用者は? ◦ 個人情報などの機密データが漏洩する ◦ 求めていたサービスを受けられない ◦

    購入、課金した資産が無駄になる ◦ サービスへの信頼を失い、利用しなくなる • 開発者は? • 企業は?
  2. 改めて 10 セキュリティを守れずに、事故が発生してしまうと • 利用者は? • 開発者は? ◦ インシデント対応に多大な時間とコストがかかる ◦

    本来実装したい機能の開発スケジュールに遅れが出る ◦ 不正アクセスによる大量リソースの利用による多額の請求 ◦ サービスを停止する必要や、売り上げへの悪影響が出る • 企業は?
  3. 改めて 11 セキュリティを守れずに、事故が発生してしまうと • 利用者は? • 開発者は? • 企業は? ◦

    企業イメージに悪影響を与え、他のサービスにまで波及する恐れがある ◦ 顧客の流出、株価の低下など経済的にダメージをうける ◦ 知的財産(ソースコード、特許情報、ビジネス戦略など)が盗まれる
  4. OWASP (Open World Application Security Project)
 OWASP Foundationという非営利団体が支援している、
 ソフトウェアのセキュリティ向上を目的としたプロジェクトです
 


    セキュアな開発ガイドラインの作成・公開、
 Webアプリケーションに関する脆弱性をまとめたOWASP TOP 10、
 脆弱性診断ツールやテスト用の環境などを公開しています
 【参考】 https://owasp.org/
  5. 脆弱性診断 46 脆弱性診断 (DAST)
 実際に動作しているシステムに対して擬似的に攻撃を行い、
 その挙動から脆弱性の有無をテストすること
 • ネットワーク (FWルールの設定ミスなど)
 •

    ミドルウェア (設定ミスや脆弱性)
 • アプリケーション (独自に開発した部分)
 のテストを行い、作成したシステムに脆弱性がないかを確認する

  6. クラウドアカウントの乗っ取り 60 概要
 • Webアプリケーションの脆弱性をついた攻撃 • フィッシング攻撃 • 認証情報の漏洩 •

    退職者が在籍中に使用していたアカウントを利用する などにより、クラウド管理アカウントがのっとられてしまう
  7. クラウド環境の誤設定による情報漏洩 61 事例 WAFの設定ミスが原因で、SSRF攻撃が有効になっていた 攻撃者は設定ミスを悪用し、 WAFを介してAWS EC2のインスタンスメタデータへの接続に成功 被害 • クレジットカードへの申し込みを行った消費者、中小企業に関する情報


    • 2005年~2019年初めまでの間に収集された情報が対象
 • 氏名、住所、郵便番号、電話番号、メールアドレス、生年月日、年収
 • 米国で約 1 億人、カナダで約 600 万人に被害が及んだ

  8. クラウドアカウントの乗っ取り 62 影響 • 攻撃者が不正なリソースを作成し、 ◦ コインマイニングを行われる ◦ 攻撃者が別のターゲットを攻撃する際の攻撃元とされる •

    クラウド環境のリソース全てが漏洩、破壊される危険性がある 対策 • アカウントの棚卸しを行う • 多要素認証 (MFA)を利用する • 運用するシステムの脆弱性管理
  9. APIキーの漏洩 64 影響 クラウドアカウントの乗っ取りと同様に • 攻撃者が不正なリソースを作成することが可能 • クラウド環境のリソース全てが漏洩、破壊される危険性がある 対策 •

    リポジトリにAPIキーをコミットしない、した場合は即時ローテート • 各サービスのシークレット管理の仕組みに従う ◦ AWS Secret Manager ◦ GitHub Secretsなど
  10. Custom URL Schemeを利用したアクセス制限の不備 75 Custom URL Schemeとは? • アプリの特定の機能に直接アクセスできるディープリンクの一種 ◦

    各OSごとに、Universal Links,App Linksなどの実装方法がある • myapp://~~ など指定したリンクをクリックした際に、 アプリの任意の画面に遷移させることができる
  11. Custom URL Schemeを利用したアクセス制限の不備 78 影響 • フィッシングサイトによる個人情報、アカウント情報の漏洩 • アプリ、企業への信頼の喪失 対策

    • OSごとの適切なディープリンクの実装 • 遷移先のURLを検証・制限し、適切なリンク以外はエラー処理を行う
  12. アプリ内課金のレシート検証不備
 アプリ ストア サーバー アイテム購入 購入情報 購入情報 検証 検証結果 購入処理

    プラットフォーム レシート検証に不備がある場合、 不正な購入処理を行われる可能性がある
  13. モバイルゲームでのチート行為 86 影響 • ゲームの品質、ユーザー体験が低下する恐れがある • ユーザー離れによるゲームの収益性に影響を及ぼす 対策 • 重要なロジックをサーバーサイドで行い、ユーザーに触れさせない

    • ゲーム内の重要なパラメータは暗号化する • サーバーへ送られるリクエストのパラメータを検証する • チート行為に関する指標をモニタリングできる状態にして、チート行為者を特 定できる状態を作る
  14. 責任共有モデル
 S3における責任共有モデル
 AWSの責任
 • AWS サービスを実行するインフラストラクチャを保護する責任
 
 利用者の責任
 • オブジェクトの所有権

    および暗号化 を含むデータの管理 • アセットの分類 • 適切な権限を適用したデータへのアクセスの管理 • ディテクティブコントロールの有効化

  15. AWS CloudTrail
 CloudTrailでは2種類のイベントを記録します
 • リソースのCRUD操作をキャプチャする管理イベント
 ◦ EC2インスタンスの起動
 ◦ S3バケットを作成または削除する
 ◦

    IAM認証情報の生成など
 • リソース内で実行された行動をキャプチャするデータイベント
 ◦ S3 オブジェクトの読み取りや書き込み
 ◦ AWS Lambda関数の呼び出し

  16. Webアプリケーションの脆弱性
 安全なウェブサイトの作り方
 
 • SQLインジェクション
 • OSコマンド・インジェクション
 • パス名パラメータの未チェック/ディレクトリ・トラバーサル
 •

    セッション管理の不備
 • クロスサイト・スクリプティング
 • CSRF(クロスサイト・リクエスト・フォージェリ)
 • HTTPヘッダ・インジェクション
 • メールヘッダ・インジェクション
 • クリックジャッキング
 • バッファオーバーフロー
 • アクセス制御や認可制御の欠落

  17. Webアプリケーションの脆弱性
 OWASP TOP 10:2021
 
 • アクセス制御の不備
 • 暗号化の失敗
 •

    インジェクション
 • 安全が確認されない不安な設計
 • セキュリティの設定ミス
 • 脆弱で古くなったコンポーネント
 • 識別と認証の失敗
 • ソフトウェアとデータの整合性の不具合
 • セキュリティログとモニタリングの失敗
 • サーバーサイドリクエストフォージェリ (SSRF)

  18. SQLインジェクション
 原因
 SQLのクエリ生成ロジックに問題がある
 
 
 悪い例 func Login(userID, password string)

    User { query = "SELECT username FROM users WHERE user_id ='" + userID + "' and password ='" + password + "'" user = DB.Query(query) return user } 実際のパスワードは暗号化されて保存されるので このようなクエリを叩かれることはありません 説明のために簡略化しています
  19. SQLインジェクション
 対策
 • クエリの生成をプレースホルダ(Prepared Statement)で実装する
 
 プリペアドステートメントを使用した例 func Login(userID, password

    string) User { query = "SELECT username FROM users WHERE user_id = $1 and password = $2" user = DB.Query(query, userID, password) return user }
  20. セッション管理
 セッションの利用
 
 ユーザーA Webサーバー ユーザー操作 ユーザーの識別 https://example.com/mypage Cookie: 0556827c100bae39

    ユーザーAのマイページを返信 Webサーバーは送信された セッションからユーザーAを識別
  21. セッション管理
 セッションの削除
 
 ユーザーA Webサーバー ログアウト ユーザーの識別 https://example.com/logout Cookie: 0556827c100bae39

    ユーザーAのセッションを消去 これ以降、このセッションIDで ユーザーAとして識別されなくなる
  22. TIPS: 実際に試したくなったら
 テストツール
 • OWASP ZAP 
 https://www.zaproxy.org/ 
 •

    Burp Suite Community
 https://portswigger.net/burp/communitydownload
 脆弱性実習用アプリ(やられサイト)
 • OWASP Juice Shop
 https://github.com/juice-shop/juice-shop
 • BadTodo
 https://github.com/ockeghem/badtodo

  23. モバイルアプリケーションの脆弱性
 OWASP Mobile TOP 10:2024
 
 • M1: 不適切なクレデンシャルの使用
 •

    M2: 不適切なサプライチェーンセキュリティ
 • M3: 安全でない認証と認可
 • M4: 不十分な入出力バリデーション
 • M5: 安全でない通信
 • M6: 不適切なプライバシーコントロール
 • M7: 不十分なバイナリ保護
 • M8: セキュリティの設定ミス
 • M9: 安全でないデータストレージ
 • M10: 不十分な暗号化

  24. ざっくりTLSを用いた暗号化通信の確立
 クライアント サーバー TCPコネクションの確立 事前に証明書を発行 暗号化方式の決定 pre-master-secretの共有 ランダムな値を、 証明書から得た公開鍵を 用いて暗号化する

    暗号化された値を 秘密鍵を用いて復号化 する サーバー証明書の送信 クライアントとサーバーは 決定した暗号化方式と共有した pre-master-secretを使用し共通鍵を生成
  25. マネジメント編のおさらい 準備
 検知/ 分析
 復旧/ 根絶
 事後分 析
 全員が意識して
 実践するフェーズ


    SSG及びプロダクト管理者が協力して,実践する フェーズ
 日頃から技術的な緩和策を講じることに加え、 発生した時にどのように対応するのかを事前に把握する! 

  26. マネジメント編のおさらい 準備
 検知/ 分析
 復旧/ 根絶
 事後分 析
 全員が意識して
 実践するフェーズ


    SSG及びプロダクト管理者が協力して,実践する フェーズ
 各フェーズを円滑に進めるため、予防についての考え方と インシデントが発生した際の対応フローについて把握しましょう
  27. インシデント対応フロー : 封じ込め 封じ込 め
 根絶
 復旧
 振り返 り
 検知


    封じ込め インシデントによって発生した影響を最小限に抑え、 さらなる被害の発生を防止するフェーズ
  28. インシデント対応フロー : 根絶 封じ込 め
 根絶
 復旧
 振り返 り
 検知


    根絶 影響を受けたシステムにおいて、原因の除去と復旧を行うフェーズ
  29. 脆弱性について
 脆弱性を管理する上で、以下の単語について把握しておきましょう
 • CWE (Common Weakness Enumeration) • CVE (Common

    Vulnerabilities and Exposures) 【参考】 共通脆弱性タイプ一覧 CWE概説 https://www.ipa.go.jp/security/vuln/scap/cwe.html ▪ 共通脆弱性識別子CVE概説 https://www.ipa.go.jp/security/vuln/scap/cve.html
  30. インシデント対応フロー : 復旧 封じ込 め
 根絶
 復旧
 振り返 り
 検知


    復旧 影響を受けたシステムを元の稼働状況に戻し、 再びインシデントが発生しないようにするフェーズ
  31. インシデント対応フロー : 振り返り 封じ込 め
 根絶
 復旧
 振り返 り
 検知


    振り返り インシデント対応の振り返りを行い、 再発防止策やセキュリティの向上を考えるフェーズ
  32. リンク集 ▪ OWASP Developer Guide https://owasp.org/www-project-developer-guide/release/ ▪ OWASP DevSecOps Guideline

    https://owasp.org/www-project-devsecops-guideline/ ▪ OWASP TOP 10 https://owasp.org/Top10/ ▪ OWASP Mobile Top 10 https://owasp.org/www-project-mobile-top-10/2023-risks/ 

  33. リンク集 ▪ AWS Best Practices for Security, Identity, & Compliance

    https://aws.amazon.com/jp/architecture/security-identity-compliance/ ▪ クラウドセキュリティ〜設定ミスとの付き合い方〜 https://www.ipa.go.jp/jinzai/ics/core_human_resource/final_project/2023/c loud-security.html

  34. リンク集 ▪ OWASP ZAP https://www.zaproxy.org/ ▪ Burp Suite Community https://portswigger.net/burp/communitydownload

    ▪ OWASP Juice Shop https://github.com/juice-shop/juice-shop ▪ BadTodo https://github.com/ockeghem/badtodo
  35. リンク集 ▪ Androidアプリのセキュア設計・セキュアコーディングガイド https://www.jssec.org/report/securecoding.html ▪ Introduction to Secure Coding Guide

    (iOS) https://developer.apple.com/library/archive/documentation/Security/Conc eptual/SecureCodingGuide/Introduction.html ▪ OWASP Mobile Application Security Verification Standard https://mas.owasp.org/MASVS/ ▪ OWASP Mobile Security Testing Guide https://mas.owasp.org/MASTG/