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

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

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

CyberAgent

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/