AWS Dev Day 2023 E-2: Amazon S3・Amazon Cognito・AWS Lambdaのアンチパターンで学ぶセキュリティ・バイ・デザイン

49.8K Views

June 23, 23

スライド概要

ハンズオン: https://github.com/a-zara-n/aws-cdk-security-challenges

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

JUNE 23,2023 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

2.

E-2 Amazon S3・Amazon Cognito・AWS Lambdaの アンチパターンで学ぶ セキュリティ・バイ・デザイン Norihide Saito / @a_zara_n Security Engineer Flatt Security inc. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

3.

自己紹介 / Who am I? ❑ Norihide Saito / Twitter: @a_zara_n ❑ 株式会社 Flatt Security プロフェッショナルサービス事業部 ❑ セキュリティエンジニア 好きなサービス ❑ ❑ Amazon Cognito (IdP / Identity) / AWS Lambda / Amazon IAM Identity Center / AWS IAM全般 関心事 ❑ ❑ DDD / セキュア開発 / Serverless / Web Security全般 今後期待しているサービス ❑ ❑ Amazon Verified Permissions ❑ AWS Verified Access 今後のイベント ❑ ❑ 8/27開催のSecurity-JAWS Days Day2で腕試し問題を出すのでぜひ来てみてください © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

4.

このセッションは? 本セッションの目的は、Amazon Web Service (以後 AWSと表記する)を利用して構築される プロダクトにおいて、利用する顧客により安全でよりよい 価値提供ができるように手助けをするため、AWSを用いて 構成されたサーバーレスなアプリケーションにおいて、発生 しやすいセキュリティ アンチパターンを知り、未然にそれ ら脅威に対して防衛策を取ることがです。 AWS Lambda Amazon Cognito Amazon S3 Amazon CloudFront また、その先や汎用的な話として、プロダクトの設計段階で のセキュリティの観点を盛り込む「セキュリティ・バイ・デ ザイン」についてもお話をしたいと思っております。 また、本セッション後に確認できCDKコードについても付属 しておりますので、下記のリンクから取得してみてください。 https://github.com/a-zara-n/aws-cdk-security-challenges © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

5.

今日話すこと / 話さないこと 今日話すこと • • Amazon Cognito・AWS Lambda・Amazon S3をはじめとするサーバーレスなアプリケーショ ンのセキュリティ・アンチパターン • アンチパターンによって発生するリスク • アンチパターンへの対策 いかに無理のないセキュリティ対策を「開発者」「開発チーム」主導で行なっていくか 話さないこと • 設計・実装以外のセキュリティの関心事 • AWS ConfigやCSPMのような設定値の検知・監視・管理を行うサービスの利用方法 • 一般に周知されたセキュリティ・アンチパターン • 例: Amazon EC2インスタンスにおけるIMDSv1やAmazon S3のパブリックアクセス © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

6.

Agenda 1. 前提のすり合わせ 2. セキュリティアンチパターンに学ぶ、身近な脅威と実装 3. いかに未然に防ぐのか?いかにクリティカルでなくすのか? 4. まとめ - 無理のないセキュリティ、無理のないシフトレフト © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

7.

前提のすり合わせ プロダクトを狙う脅威とセキュア開発を取り巻く環境 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

8.

この章で行いたいこと 1. 会場の皆様が、プロダクトのセキュリティを自分事として、無理なく進めるための事前知識の共有 2. パブリッククラウドにおける脅威について改めて認識をする 3. 会場の皆様と、共通の語をもとに開発におけるプロダクトのセキュリティにおける課題を語りたいので、 この章では、本スライドで利用される重要なキーワードについて前提のすり合わせと合意をとっていきたい と考えています。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

9.

Webベースのプロダクトを取り巻く脅威(1) Webの大衆化と脅威の増加 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

10.

Webベースのプロダクトを取り巻く脅威(1) Webの大衆化と脅威の増加 プロダクトを狙う脅威 1. 単独でのAttacker 2. APT等の国家をバックグラウンド に持つ組織的Attacker 3. 愉快犯 プロダクトを標的とした攻撃 1. 脆弱性を用いた攻撃 2. 設定ミスなどの悪用 3. 利用者を標的とした攻撃 4. 開発者を標的とした攻撃 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

11.

Webベースのプロダクトを取り巻く脅威(2) OWASP Top 10 2021 OWASP Top 10 2017 No 脆弱性名 No 脆弱性名 A01 A02 A03 A04 A05 A06 A07 A08 A09 A10 インジェクション系攻撃 認証の不備 機微情報の露出 XXE アクセス制御の不備 セキュリティに関わる設定の不備 XSS Insecure Deserialization 既知の脆弱性のあるコンポーネントの使用 不十分なロギングとモニタリング A01 A02 A03 A04 A05 A06 A07 A08 A09 A10 アクセス制御の不備 暗号化の失敗 インジェクション系攻撃 安全が確認されない不安な設計 セキュリティに関わる設定の不備 脆弱で古くなったコンポーネント 識別と認証の失敗 ソフトウェアとデータの生合成の不具合 セキュリティログとモニタリングの失敗 SSRF (New) 近年の技術の発展やセキュリティ機構の抽象化の影響もあり、依然存在はするものの、 SQL InjectionやOS Command Injectionといった脅威度が高く直接的な被害をもた らす脆弱性は発生しにくく、一方でロジックや設定ミスなどのプロダクトの特性に合 わせ構築・実装を行う箇所で脆弱性が発生しやすくなっています。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 上昇トレンド 下降トレンド 並行移動したトレンド マージされたトレンド 出典: https://owasp.org/Top10/ja/

12.

Webベースのプロダクトを取り巻く脅威(3) 実際に弊社が診断を行ったBtoBプロダクトにおいて 検出された脆弱性を集計した結果、独自実装を必要 とするロジックや、プロダクトで利用するサーバー やサービスの設定不備などが多く発見される結果に なりました。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 検出された脆弱性全体に対して 占める割合 少数第一位を四捨五入 No. 脆弱性名 1 ロジックの脆弱性(認証・認可以 外) 20% 2 ロジックの脆弱性(認可系) 20% 3 ロジックの脆弱性(認証系) 12% 4 XSS / クロスサイト・スクリプ ティング 11% 5 システム情報の漏洩 7% 6 サーバーの設定不備 7% 7 DoS 4% 8 脆弱なミドルウェアの使用 3% 9 Cookieのセキュリティ設定不備 2% 10 CSRF / クロスサイト・リクエス トフォージェリ 2% 出典 https://blog.flatt.tech/entry/btob_saas_top10_2023

13.

パブリッククラウドを狙う攻撃者たち(1) 設定の不備を狙う攻撃者 CSAにおける調査結果のリンク https://cloudsecurityalliance.org/artifacts/saas-security-and-misconfigurations-report/ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 事例: TOYOTAにおける顧客情報の漏洩の可能性 https://global.toyota/jp/newsroom/corporate/39174380.html

14.

パブリッククラウドを狙う攻撃者たち(1) 設定の不備を狙う攻撃者 "設定ミス"と書かれると小さく見えるが、 クラウドにおけるインシデントの最大60%が設定ミスに起因する 国内外問わず多くの企業で設定ミスに起因する情報漏洩が発生しています。 CSAにおける調査結果のリンク https://cloudsecurityalliance.org/artifacts/saas-security-and-misconfigurations-report/ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 事例: TOYOTAにおける顧客情報の漏洩の可能性 https://global.toyota/jp/newsroom/corporate/39174380.html

15.

パブリッククラウドを狙う攻撃者たち(2) アプリケーションの脆弱性やコンテキストのずれの悪用 Closedなアプリケーションにおける意図しない新規登録 (CognitoにおけるSelf signup) ※該当記事は善意のエンジニアによるブログです https://blog.flatt.tech/entry/cloud_security_aws_case © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Flicker Account Takeover(Cognito + 独自IdP) ※該当記事は善意のエンジニアによるブログです https://security.lauritz-holtmann.de/advisories/flickraccount-takeover/ 事例: 古いサービス、新しい手法:UNC2903による クラウドメタデータサービスの悪用 (SSRFを用いたIMDSへのアクセス) https://www.mandiant.jp/resources/blog/cloudmetadata-abuse-unc2903

16.

パブリッククラウドを狙う攻撃者たち(2) アプリケーションの脆弱性やコンテキストのずれの悪用 クラウドサービスの上で動くアプリケーションの 脆弱性を標的にした攻撃や利用するSaaSの設定や値がプロダクトの コンテキストからずれを悪用するなどし不正にシステムに侵入するなど パブリッククラウド上のプロダクトに対しての攻撃は日に日に 多様化・高度化している Closedなアプリケーションにおける意図しない新規登録 (CognitoにおけるSelf signup) ※該当記事は善意のエンジニアによるブログです https://blog.flatt.tech/entry/cloud_security_aws_case © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Flicker Account Takeover(Cognito + 独自IdP) ※該当記事は善意のエンジニアによるブログです https://security.lauritz-holtmann.de/advisories/flickraccount-takeover/ 古いサービス、新しい手法:UNC2903によるクラウドメタ データサービスの悪用(SSRFを用いたIMDSへのアクセス) https://www.mandiant.jp/resources/blog/cloudmetadata-abuse-unc2903

17.

パブリッククラウドを狙う攻撃者たち(3) 偽ライブラリやサプライチェーンの汚染とクラウドへの攻撃 事例: PyPi python packages caught sending stolen AWS keys to unsecured sites https://www.bleepingcomputer.com/news/security/pypi-python-packagescaught-sending-stolen-aws-keys-to-unsecured-sites/ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 事例: Popular Python and PHP libraries hijacked to steal AWS keys https://www.bleepingcomputer.com/news/security/popular-python-and-php-librarieshijacked-to-steal-aws-keys/

18.

パブリッククラウドを狙う攻撃者たち(3) 偽ライブラリやサプライチェーンの汚染とクラウドへの攻撃 事例: PyPi python packages caught sending stolen AWS keys to unsecured sites https://www.bleepingcomputer.com/news/security/pypi-python-packagescaught-sending-stolen-aws-keys-to-unsecured-sites/ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 事例: Popular Python and PHP libraries hijacked to steal AWS keys https://www.bleepingcomputer.com/news/security/popular-python-and-php-librarieshijacked-to-steal-aws-keys/

19.

パブリッククラウドを狙う攻撃者たち(3) 偽ライブラリやサプライチェーンの汚染とクラウドへの攻撃 攻撃者はパブリッククラウドへのアクセスをもとめ、 ライブラリなど汚染や偽のライブラリを作成するなどし あらゆる手段での攻撃を行ってきます。 出典: PyPi python packages caught sending stolen AWS keys to unsecured sites https://www.bleepingcomputer.com/news/security/pypi-python-packagescaught-sending-stolen-aws-keys-to-unsecured-sites/ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 出典: Popular Python and PHP libraries hijacked to steal AWS keys https://www.bleepingcomputer.com/news/security/popular-python-and-php-librarieshijacked-to-steal-aws-keys/

20.

パブリッククラウドを狙う攻撃者たち(4) 依頼中のため後日添付 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

21.

パブリッククラウドを狙う攻撃者たち(5) 本発表で解説をするアンチパターンの大別 S3 Bucketへのパブリックアクセス S3 ObjectのKeyの誤った取り扱い Cognito User Poolの自己サインアップ Cognito User Poolの属性値やEmailの 誤った取り扱い 広義の意味での設定ミス クラウドサービスとのコンテキストがずれた アプリケーションの実装不備 (プロダクトのコンテキストに違反した設定ミス) © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

22.

パブリッククラウドを狙う攻撃者たち(5) 本発表で解説をするアンチパターンの大別 S3 ObjectのKeyの誤った取り扱い S3 Bucketへのパブリックアクセス 本発表では、このような「セキュリティ・アンチパターン」について 具体的な例を挟みつつ、プロダクトに埋め込まないための 考え方や設計レベルでの対応について学びながら、 皆さんと一緒にAWSを用いたプロダクト開発の 「セキュリティ・バイ・デザイン」を学んでいければと思っております。 Cognito User Poolの自己サインアップ Cognito User Poolの属性値やEmailの 誤った取り扱い 広義の意味での設定ミス クラウドサービスとのコンテキストがずれた アプリケーションの実装不備 (プロダクトのコンテキストに違反した設定ミス) © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

23.

パブリッククラウドを狙う攻撃者たち(6) 攻撃者を寄せ付けないための「セキュリティ・バイ・デザイン」と「シフトレフト」 依頼中のため後日添付 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

24.

パブリッククラウドを狙う攻撃者たち(7) 攻撃者を寄せ付けないための「セキュリティ・バイ・デザイン」と「シフトレフト」 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

25.

パブリッククラウドを狙う攻撃者たち(7) 攻撃者を寄せ付けないための「セキュリティ・バイ・デザイン」と「シフトレフト」 セキュリティ・バイ・デザイン 企画や要件定義・設計段階で、セキュリティを考慮し対策や機能を盛り込むことで、 実装段階でのセキュリティ観点での考慮事項の対策漏れやアーキテクチャレベルでの 構築ミスを減らすことを目的とした設計の思想。 シフトレフト テストやレビューをできる限り前倒しし、設計や実装の不備やミスの発見を早期に行 うため、クリティカルなバグを先に発見でき、手戻りを少なくする開発アプローチ。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

26.

パブリッククラウドを狙う攻撃者たち(8) 攻撃者を寄せ付けないための「セキュリティ・バイ・デザイン」と「シフトレフト」 セキュリティ・バイ・デザインとシフトレフトを組み合わせることで、開発に関わる全ての工程において セキュリティ対策を行うことで、セキュリティ堅牢なプロダクトを作り上げることが可能になります。 ここまでは理想と考え方のお話をしましたので、セキュリティアンチパターンの紹介後の章で、 もう少し現実にどうすべきか?といった点でお話しします。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

27.

セキュリティアンチパターンに学ぶ、 身近な脅威と実装 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

28.

この章で話すこと 構成や設定値レベルでの話 • Amazon Cognito / AWS Lambda / Amazon S3その他AWSのマネージドサービスを用いる際のセキュリティ アンチパターンの紹介 実装レベルでの話 • イベントやマネージドサービスから取得された値が意図しない形で用いられた場合のリスクと対策 取り扱う機能 認証 / 認可 / 権限管理 / ファイルアップロード / ファイルの配信 / 署名付きURL / S3 Objectの取り扱い / 例外処理 / ABAC 注意点 本章のスライドではコードの一部を例示することがございます。その際全体のコードを確認したい場合は、スラ イド右下のGitHubのリポジトリをご覧ください。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

29.

Amazon Cognito User Pool(Identity Provider)及び ID Poolの特性と脅威の説明 User Pool User Pool ID Pool ID Pool Amazon Cognitoの機能・特性 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon Cognitoの脅威

30.

Amazon Cognito User Pool(Identity Provider)及び ID Poolに関連するセキュリティアンチパターン • プロダクトにおける意図しないセルフサインアップ • カスタム属性のアクセス制御のミス • アプリクライアントを用いたの不適切なアクセス制御 • Emailにおける未検証の値の利用 • CaseSensitiveが無効化されている • 付与されるIAM Roleの権限過剰 • ABACの実装ミス © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

31.

Cognito User Poolのセキュリティ・アンチパターン プロダクトにおける意図しないセルフサインアップ アンチパターンの概要 Cognito User Poolを利用している会員 向け / 社内向け / 管理者向けといった closedなプロダクトやサービスにおいて、 Self SignUp機能が有効な状態で用いら れている場合、意図しないユーザーから 新規登録をされ、アクセスをされてしま うリスクが発生する。 アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

32.

Cognito User Poolのセキュリティ・アンチパターン プロダクトにおける意図しないセルフサインアップ 対策方法 • 会員制などの限られたユーザー のみを対象とする場合、Self Signup機能を無効化する。 • 管理側からユーザーを作りたい 場合は、Signup機能を有効にす るのではなく、Admin Signupな どのAPIを用いてユーザーを作成 してください。 アンチパターンを修正したアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

33.

Cognito User Poolのセキュリティ・アンチパターン アプリクライアントを用いたの不適切なアクセス制御 アンチパターンの概要 Cognito User Poolのカスタム属性は、 Roleの管理やテナントの識別、各種プロ ダクトで利用する属性値など、利用者が カスタマイズできる便利な機能です。 しかし、これらカスタム属性において、 書き込みや読み込みの権限を適切に設定 しない場合、悪意のあるテナントの横断 や権限昇格などにつながる可能性が存在 します。 アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

34.

Cognito User Poolのセキュリティ・アンチパターン アプリクライアントを用いたの不適切なアクセス制御 対策方法 • • アンチパターンを修正したアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. アプリクライアントのアクセス制御 は必要最低限のものに設定し、必要 のないものは閲覧させない、操作さ せないようにしてください 操作が必要な場合は、APIを実装し、 操作可能かのアクセス制御の後に変 更を行う、もしくはUser Pool + ID providerを活用し、AWSサービスを 操作可能な認証情報を発行する

35.

Amazon S3及びAmazon CloudFrontに関する 特性と脅威の説明 Amazon S3 / Amazon CloudFrontの機能・特性 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Amazon S3 / Amazon CloudFrontの脅威

36.

Amazon S3及びAmazon CloudFrontに関する セキュリティアンチパターン • 誤ったオブジェクトへのアクセス制御 • 署名付きURLの生成時の制約の過不足 • 誤ったPrefix / Keyの取り扱い • リクエストで設定されたContent-Typeの直接の利用 • 同一オリジンからのユーザーがアップロードしたオブジェクトの配信 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

37.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン リクエストで設定されたContent-Typeの直接の利用 アンチパターンの概要 ファイルアップロード時にユーザー がファイルに設定したContentTypeをS3のオブジェクトにそのま ま設定することで、ブラウザのレン ダリング時にXSSを引き起こすファ イルなどを配信する可能性がありま す。 アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

38.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン リクエストで設定されたContent-Typeの直接の利用 補足 XSSの脅威 XSSはブラウザ上で任意のHTMLタグの 表示やスクリプトなどを埋め込むことを 可能とする攻撃で、発生したサイト上に 偽ページを表示することや、認証後に発 行されたCookieの取得、意図しない Cookieの保存、フィッシングサイトへ の誘導など多岐にわたる脅威が存在しま す。 詳しくは IPAの解説ページをご覧くださ い。 https://www.ipa.go.jp/security/vuln/w ebsecurity/cross-site-scripting.html アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

39.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン リクエストで設定されたContent-Typeの直接の利用 脆弱性の図解 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

40.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン リクエストで設定されたContent-Typeの直接の利用 脆弱性の図解 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 参考資料: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingM etadata.html?icmpid=docs_amazons3_console

41.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン リクエストで設定されたContent-Typeの直接の利用 uploadされたObjectのType UploadされたObjectの Content-Type 脆弱性の図解 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

42.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン リクエストで設定されたContent-Typeの直接の利用 アップロードしたファイルへのアクセスと、 ブラウザにおけるPNGファイルのHTMLとしての解釈 脆弱性の図解 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

43.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン リクエストで設定されたContent-Typeの直接の利用 対策方法 • Objectをアップロードする際に、 Content-Typeをユーザーが指定 する値ではなく、許容されてい るContent-Type、もしくは application/octet-streamなどに し、ブラウザで直接アクセスし た際にレンダリングがされない ようにしてください。 アンチパターンを修正したアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

44.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン 同一オリジンやドメインからのユーザーがアップロードしたオブジェクトの配信 アンチパターンの概要 CloudFrontでユーザーがアップロー ドした静的ファイルを配信する際に、 プロダクトのオリジンとファイルを 配信するオリジンが同一のものから 配信することにより、ユーザーが アップロードしたファイルでXSSな どが発生した際に、同一オリジンで ホストしているプロダクトに被害が 波及します。 アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

45.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン 同一オリジンやドメインからのユーザーがアップロードしたオブジェクトの配信 対策方法 • 最低限の対策として、別のオリ ジンから配信を行なってくださ い。 • 根本的な対策として、ユーザー がアップロードするファイルの 配信を、eTLD+1が異なるサンド ボックスドメインから配信をす るか、S3のドメインから配信を 行なってください。 アンチパターンを修正したアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

46.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン 署名付きURLの生成時の制約の過不足 アンチパターンの概要 主にオブジェクトのアップロード時に発 生する署名付きURLの生成時に発生する もので、利用可能なContent-Typeの制 限やサイズの制限を行わず生成を行うこ とで、巨大なサイズのファイルがアップ ロードされたり、XSSなどを引き起こす ファイルをアップロードされる可能性が 存在します。 アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

47.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン 署名付きURLの生成時の制約の過不足 対策方法 • アップロード時の署名を施す際 に、Content-Typeやサイズと いった情報も設定してください。 • ユーザーの入力を元に設定を行 う場合は、その値がプロダクト として想定したものかを確認し てください。 アンチパターンを修正したアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

48.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン 誤ったPrefix / Keyの取り扱い アンチパターンの概要 S3 Bucketで用いられるPrefix / Keyは、Unix系やWindowsのようなOSで利用されているFile System で用いられるPathと少し特性が異なります。Pathの場合、../のような文字列を入力すると親ディレ クトリへと移動する特殊な文字列として認識されます。 一方で、Prefix / Keyでは、../は通常の特殊な意味を持たない文字列として、Prefixに設定されます。 そのため、ダウンロードやアップロード時に双方の特性を意図しない対策を施してしまった際に、 コンテキストが混乱することで誤ったオブジェクトやファイルへアクセスをしてしまう可能性が存 在します。 脆弱性の例としては、アップロード時に、Pathの正規化(normalize等)を行った場合、意 図しないKeyのObjectを生成してしまい上書きや取得ができてしまう可能性や、S3からオ ブジェクトをS3にダウンロードする際にKeyをそのまま利用することによで Path Traversal が発生する可能性が存在します。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

49.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン 誤ったPrefix / Keyの取り扱い アンチパターンなアーキテクチャ(1) © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. アンチパターンなアーキテクチャ(2)

50.

Amazon S3及びAmazon CloudFrontに関するセキュリティアンチパターン 誤ったPrefix / Keyの取り扱い 対策方法 • • 署名付きURLなどを発行する場合 • 正規化などを行わず、入力されたそ のままの値で署名をしてください データの取得をする場合 • PrefixやKeyを用いないでObjectの データのHash値などで一時的な名前 をつけるなどし、ユーザーの入力を Pathに用いないでください。 • PrefixやKeyを用いる場合、保存をす るディレクトリ名とは別に正規化を 行い、保存を行なってください。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

51.

AWS Lambda Functions周辺の特性と脅威の説明 Lambda Functionsの機能・特性 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Lambda Functionsの脅威

52.

AWS Lambda Functionsに関連する セキュリティアンチパターン • 認証情報の平文配置 • ハードコードされた認証情報を関数のバージョニングに保存した状態で放置をする • 例外処理の不備 • イベントの内容や取得したデータの無条件の信用 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

53.

AWS Lambdaに関連するセキュリティアンチパターン 例外処理の不備 アンチパターンの概要 Lambda内の関数における実 装において、例外発生時の 処理が適切に行われなかっ た際に、エラー文の開示や、 意図しない処理の続行など が発生する可能性がありま す。 アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

54.

AWS Lambdaに関連するセキュリティアンチパターン 例外処理の不備 対策方法 • 例外が発生する可能性のある箇 所(外部接続やライブラリ等の使 用)をする場合は、例外発生時の 処理を実装してください。 • 例外発生後の操作で、ユーザー の入力値が用いられる場合、そ の値がその後の操作において安 全な値であることを確認してく ださい。 アンチパターンを修正したアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

55.

AWS Lambdaに関連するセキュリティアンチパターン イベントの内容や取得したデータの無条件の信用 アンチパターンの概要 Lambda内の関数における実装にお いて、各種サービスのイベントの内 容をLambdaで扱う際に、値が安全 であるとして実装している場合に、 意図しないデータが入力され、悪意 のあるデータの挿入や、認証情報な どの漏洩につながる可能性が存在し ます。 アンチパターンなアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. https://github.com/flatt-jp/... (後日修正)

56.

AWS Lambdaに関連するセキュリティアンチパターン イベントの内容や取得したデータの無条件の信用 対策方法 • イベントの内容やサービスから 取得したデータも信用はせずに、 操作に利用して良いデータであ ることを検証しましょう。 • データへのアクセス制御を必要 とする場合、上記の検証の際に 確認を行いましょう。 アンチパターンを修正したアーキテクチャ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

57.

いかに未然に防ぐのか? いかにクリティカルでなくすのか? © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

58.

この章で話すこと 設計レベルでの話 • いかに開発者・開発チーム主体で「セキュリティ」という観点で品質を高めていくのか • ロジックやフローに関する詳細設計とセキュリティレビューの方法論について 取り組みレベルでの話 • テスト駆動開発とアプリケーションのセキュリティ品質の向上について • セキュリティだって「MVP」でやってもいいじゃない • 小さく初めて大きく育てるプロダクトセキュリティ © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

59.

プロダクト開発とプロダクトセキュリティ セキュリティに関してもセキュリティに対して関心を持ち始めてからすぐに完璧なものに しようとするのではなく、MVPのようにまずは実用最小限の実装 / 対策を施し、 プロダクトの改修・機能追加とともに進めていくことが大事です。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

60.

実用最小限の第一歩 レビューの時に何を見る?開発者で回すセキュリティレビュー 簡素なDesign Docの例 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. OWASP ASVSを用いたセルフレビュー / 機能レベルのセキュリティレビューの取り入れ https://github.com/OWASP/ASVS https://github.com/owasp-ja/asvs-ja

61.

実用最小限の第一歩 レビューの時に何を見る?開発者で回すセキュリティレビュー 設計段階からセキュリティという観点を入れる 「セキュリティ・バイ・デザイン」 を段階的に取り入れていくための第一歩として 簡素なDesign Docの例 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. OWASP ASVSを用いたセルフレビュー / 機能レベルのセキュリティレビューの取り入れ https://github.com/OWASP/ASVS https://github.com/owasp-ja/asvs-ja

62.

実用最小限の第一歩 レビューの時に何を見る?開発者で回すセキュリティレビュー ❌ 知識がないから無理 / やらない ↓ ○ 外部知見を頼りながら少しだけでも自分たちで懸念点を洗い出す 簡素なDesign Docの例 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. OWASP ASVSを用いたセルフレビュー / 機能レベルのセキュリティレビューの取り入れ https://github.com/OWASP/ASVS https://github.com/owasp-ja/asvs-ja

63.

実用最小限の第一歩 レビューの時に何を見る?開発者で回すセキュリティレビュー 簡素なDesign Docの例 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. OWASP ASVSにおけるパスワードの確認項目 https://github.com/OWASP/ASVS https://github.com/owasp-ja/asvs-ja

64.

実用最小限の第一歩 レビューの時に何を見る?開発者で回すセキュリティレビュー OWASP ASVSは各機能や要件ごとに 確認すべきTopicや参考にすべきリ ンクなどがまとめられており、 アプリケーションセキュリティ初学 者の方でもわかりやすくまとめられ ています。 気になる方や詳しく話したいという 方は、本セッション終了後に、Ask the speakerにおりますのでお越し いただければ幸いです。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. https://github.com/OWASP/ASVS https://github.com/owasp-ja/asvs-ja

65.

実用最小限の第一歩 セキュリティを取り入れたらテストを回そう 実際に設計にセキュリティを落とし込んだ後は、テストや CSPMでセキュリティの品質を担保しましょう。 具体の例: • アプリケーションレベルのコードをテスト • CDKのコードをテスト • Snapshot Testing • Fine-grained Assertions • Amazon ConfigやCSPMなどを用いた状態の管理と検知 • https://pages.awscloud.com/rs/112-TZM766/images/CDK%E3%81%A7%E3%82%82%E 3%83%86%E3%82%B9%E3%83%88%E3%81 %8C%E3%81%97%E3%81%9F%E3%81%84.pd f © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

66.

さらにもう一歩を踏み込むには? 1. より深く利用するAWSサービスの仕様を知り、デフォルト値や設定 された値の作用を洗い出す 2. 複数のサービスに跨った動作の場合はどのようなコンテキストで値 を渡しているかを洗い出す 3. より、Webアプリケーションやクラウドにおけるセキュリティに関 するキャッチアップを行う © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

67.

まとめ 無理のないセキュリティ、無理のないシフトレフト © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

68.

まとめ • Webの大衆化やクラウドサービスの発展に伴い、多くの業種やサービスなどがWeb技術を元にしたプロダク トとして展開されるようになりました。そのなかで、機微な情報を扱うようになり、近年ではそれらを狙う 脅威も増してきました。 • その中でクラウドサービスの組み合わせや設定次第で、情報の抜き取りや不正アクセスにつながる 「セキュリティアンチパターン」が増え、攻撃者にも認知・悪用されるようになってきました。 • プロダクトを開発する上で、多くのサービスを用いることが日常的になったことから、これらセキュリティ アンチパターンを知ることで未然にこれら脅威に対抗することが本セッションの目的でした。 • また、より未然に脅威を防ぐために、設計段階から懸念点やセキュリティ観点でのレビューを盛り込むため にOWASP ASVSを用いたセキュア・バイ・デザインについてもお話ししました。OWASP ASVSは機能や観点 別にまとめられたセキュリティに関するレビューを行う際の最小限の範囲が書かれたドキュメントであり、 開発者・開発組織がはじめの一歩としてセキュリティに取り掛かれる踏み台のようなものです。 • まずは小さく始めて大きく育てていくことで、無理なく続けられるセキュリティを実現していきましょう。 © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

69.

Thank you! Norihide Saito @a_zara_n Flatt Security inc. source code https://github.com/flatt-jp/... (後日修正) © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.