Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
XSS攻撃から考察するAWS設定不備の恐怖/20241012 Hironobu Otaki
Search
SHIFT EVOLVE
October 15, 2024
Technology
0
500
XSS攻撃から考察するAWS設定不備の恐怖/20241012 Hironobu Otaki
2024/10/12 JAWS FESTA2024 in広島
株式会社SHIFT セキュリティサービス部 AWSセキュリティコンサルタント 大瀧 広宣
SHIFT EVOLVE
October 15, 2024
Tweet
Share
More Decks by SHIFT EVOLVE
See All by SHIFT EVOLVE
~ 最新AIでセキュリティ運用業務効率UP ~ セキュリティアナリストの頭の中を RAGにしてみた / 20241220 Tetsuharu Kokaki
shift_evolve
0
7
生成AIによるテスト設計支援プロセスの構築とプロセス内のボトルネック解消の取り組み / 20241220 Suguru Ishii
shift_evolve
0
18
XSS攻撃から考察するAWS設定不備の恐怖 / 20241220 Hironobu Otaki
shift_evolve
0
15
SHIFT会社紹介 ビジネスの成功x技術への好奇心(エンジニア組織の未来 vol.2)/20241204 Rinto Ikenoue
shift_evolve
0
120
価値あるサービスを作り続けるためのエンジニアのマインドセット / 20241207 Shoya Shiraki
shift_evolve
0
83
自動化技術を応用したデータ分析環境の構築事例 / 20241207 Shinya Takano
shift_evolve
0
23
まだチケットを手動で書いてるの?!GitHub Actionsと生成AIでチケットの作成を自動化してみた話 / 20241207 Yoshinori Katayama
shift_evolve
1
940
テスト自動化導入事例 ~事例に学ぶ 手動試験に潜む実施コストとテスト自動化の可能性~ / 20241207 Kaname Ohtuski
shift_evolve
2
65
Amazon CloudFrontを活用したゼロダウンタイム実現する安定的なデプロイメント / 20241129 Yoshiki Shinagawa
shift_evolve
0
340
Other Decks in Technology
See All in Technology
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
170
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.4k
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
130
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
200
Yahoo! ズバトクにおけるフロントエンド開発
lycorptech_jp
PRO
0
100
UI State設計とテスト方針
rmakiyama
2
740
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
540
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
200
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
280
Storage Browser for Amazon S3
miu_crescent
1
280
podman_update_2024-12
orimanabu
1
280
.NET 9 のパフォーマンス改善
nenonaninu
0
1.2k
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
66
4.5k
A designer walks into a library…
pauljervisheath
205
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Designing for humans not robots
tammielis
250
25k
Unsuck your backbone
ammeep
669
57k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
The Cult of Friendly URLs
andyhume
78
6.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Practical Orchestrator
shlominoach
186
10k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Transcript
XSS攻撃から考察するAWS設定不備の恐怖 株式会社SHIFT 大瀧 広宣(おおたき ひろのぶ)
1 自己紹介 • 大瀧広宣(おおたきひろのぶ) • 経歴 • IT業界歴30年以上、時代のトレンドに沿ったカテゴリーを選んで転職 • ソフトウエアエンジニア(JavaとかHTMLの創成期にWebシステム構築)
• ネットワークエンジニア(R&D、自社ネットワークアプリ開発) • “カー!と言えばグー”でお馴染みの会社でAWS事業責任者(データセンターのAWS延伸) • クラウド会計のfreeeでCIO補佐(コロナ禍による情シスのクラウド化、モダン情シス化) • Serverworks(AWSプレミアパートナー)で急成長顧客を担当するPM兼マネージャー • 副業で”なんぼや“でお馴染みの企業でAWSのセキュリティ対策PM(DLP対策、個人情報保護) • AWSセキュリティコンサル、CCoE推進リーダー(現在のお仕事) • 好きなJAWS-UG • JAWS-UG沖縄、Security-JAWS • セキュリティヒーローの臼田さん、吉江さんのファンでおっかけやってます • 10年前から沖縄と東京の2拠点生活してます。JAWS-UG沖縄運営参加できます!! • 資格 • 2024 Japan AWS All Certifications Engineers
2 まずは基本的なこと
3 XSSとは • クロスサイトスクリプティング(XSS)攻撃とは、Webサイトのセキュリティ上 の欠陥(脆弱性)につけこんで不正なスクリプト(簡易プログラム)を埋め込み、 サイトを閲覧した不特定多数のユーザーにスクリプトを実行させることで不正サ イトへの誘導、またはサイトからの情報搾取などを目的とした、悪質なサイバー 攻撃のことです。 • いつ頃からあるか?
• 少なくとも10年以上前(2009年ぐらいから?)からある攻撃手法 出典:IPA(安全なウェブサイトの作り方) https://www.ipa.go.jp/security/vuln/websecurity/cross-site-scripting.html?_fsi=DQmKIvAm
代表的な手口 4 〇〇掲示板 ニックネーム メッセージ 太郎 Jawsfesta最高! 投稿 キャンセル 太郎
Jawsfesta最高! ①正規ユーザーがJawsfesta 最高!と入力 ②投稿ボタンを押す 正常な入力 ③入力内容が表示 される 〇〇掲示板 ニックネーム メッセージ 太郎 <script>window Open(“http://悪者 サイト”)</script> 投稿 キャンセル ①悪いやつがポップアップする悪意の あるサイトを開くスクリプトを投稿 ②投稿ボタンを押す 悪意のある入力 ③スクリプトが埋め込まれる 入力内容をサニタイズし ていない(文字列チェッ クしてない) クレジットカード 番号を入力してく ださい ④正規ユーザーが掲示板開いただけで 悪意あるサイトがポップアップされる ポップアップ • 脆弱性があるサイトから不正なスクリプトを仕込む • ECサイトの投稿欄とか外部からのユーザーがデータを入力できるところから仕込む • そもそも脆弱性があるサイトとはなにか? • ユーザー入力のバリデーション不足(入力内容をサニタイズしていないとか、エスケー プ文字列処理の不備でスクリプトが実行されてしまう)
5 代表的な防御策 • AWS WAFによるブロック • XSSを検知するルールセットを活用することでサーバーにリクエストを到達させない • そもそも脆弱性のあるコードを開発段階でDeployさせない •
SAST製品の導入 • SAST(Static Application Security Testing)とは、アプリケーションのソースコードを静的に解析し、脆弱性を特定するための検査 手法です。 アプリケーションが動作していなくても実施可能で、開発の初期段階で脆弱性を検出するために実施されます。 • OSSならSonerQubeが有名、製品版ならSnykが有名 出典:https://aws.amazon.com/jp/builders-flash/202207/start-for-security/ Elastic Load Balancing Developer 運用管理者 Users Internet AWS WAF AWS WAF
6 それでもなくならないXSS被害
7 IPAからの考察① 出典:脆弱性対策情報データベース:https://jvndb.jvn.jp/ • 事例その1:IPAのサイトから 脆弱性対策情報データベース「JVN iPedia」より2020年以降のAWSの XSS事例を検索
8 IPAからの考察② ①https://www.cve.org/CVERecord?id=CVE-2023-2452 一Wordpressプラグインの入力のサニタイズ、エスケープ出力の不備に原因 ②https://www.cve.org/CVERecord?id=CVE-2023-41944 一Jenkins AWS CodeCommit トリガープラグイン 3.0.12
以前では、エラーメッセージをレン ダリングするときに、フォーム検証 URL に渡されるキュー名パラメータをエスケープしない ため、HTML インジェクションの脆弱性が発生します。 ③https://www.cve.org/CVERecord?id=CVE-2022-24709 一awsui/components-react は、ユーザーインターフェイス開発用に設計された TypeScript 定義を含む React コンポーネントを含むメインの AWS UI パッケージです。3.0.367 より前 のバージョンの複数のコンポーネントでは、ユーザー入力が適切に無効化されず、JavaScript インジェクションが許可される可能性があることが判明。 出典:脆弱性対策情報データベース:https://jvndb.jvn.jp/ • ほぼOSSの脆弱性が起因、、、 • OSSを利用する以上、自社開発部分のセキュアコーディングを実施 だけでは防げない • 機能リリースの時間経過とともに脆弱性対策の強度も低下する
9 IPAからの考察③ 出典:IPA:ソフトウェア等の脆弱性関連情報に関する届出状況[2024年第2四半期(4月~6月)https://www.ipa.go.jp/security/reports/vuln/software/2024q2.html IPA:ソフトウェア等の脆弱性関連情報に関する届出状況[2024年第2四 半期(4月~6月) ウエブアプリケーションの脆弱性 が圧倒的 インジェクション系が圧倒的
10 IPAからの考察④ 所感 利用しているOSS,ツールの脆弱性から被害 を受けるパターンが大多数と見える。自社 内の開発スキームがしっかり実施されてい ても、放置された脆弱性からXSS被害を受 けると思われる。 SecurityHubで検出される脆弱性をしっか り把握し、世の中的に発生している脆弱性
にアンテナを張り、自社のAWS環境に影響 がないか定期的な棚卸(精査)を実施して いくことが大切といえそうです。 IPA:ソフトウェア等の脆弱性関連情報に関する届出状況[2024年第2四 半期(4月~6月) オープンソース起因が圧倒的 出典:IPA:ソフトウェア等の脆弱性関連情報に関する届出状況[2024年第2四半期(4月~ 6月)https://www.ipa.go.jp/security/reports/vuln/software/2024q2.html
11 AWS WAFとは • AWS WAFとはロードバランサー、CloudFront、API GWなど外部とや り取りする部分にアタッチするAWS製のWAFのこと • マネージドルールとしてXSSを検知、ブロックするルールも提供されている
• 例えば、AWS WAF Web ACLにおけるAWS マネージドルール ルールグループリストの中の一つ である、コアルールセット (CRS) マネージドルールグループは、XSSパターンがリクエストボ ディに存在しないかを調べてくれるルール。 ②XSSのペイロードパターンと検知してブロック AWS WAF Managed rule ①怪しいペイロード <script>alert(1)</script> User ③Reject WEB Server(Amazon EC2) 怪しいペイロードは到達しない
12 AWS WAFをすり抜けるパターンもある • AWS WAFをバイパスする事例(コアルールセット、XSSルールセットだけ では安心できない) • WAFが解析できないペイロードでスクリプトを書く •
リクエストボディにWAFが認識できない形でスクリプトを書けばWAFをバイパスできる • 例:Unicodeでエンコードを行う(注:今では改修されているかもしれません) ②XSSのペイロードパターンとして検 知ができず、Bypassされる AWS WAF Managed rule ①Unicodeでエンコード エンコード前 <script>alert(1)</script> エンコード 後 ¥u003C¥u0073¥u0063¥u0072¥u0069¥ u0070¥u0074¥u003E¥u0061¥u006C¥u 0065¥u0072¥u0074¥u0028¥u0031¥u0 029¥u003C¥u002F¥u0073¥u0063¥u00 72¥u0069¥u0070¥u0074¥u003E 悪意のある ユーザー ③スクリプト実行してしまう WEB Server(Amazon EC2)
13 AWS WAFをすり抜けるパターンもある その他にもAWS WAFをバイパスするには多数の方法が存在するし、 OWASPが公開しているやり方もある。 過信は危険。 出典:https://owasp.org/www-community/attacks/SQL_Injection_Bypassing_WAF
14 AWS WAFをすり抜けるパターンもある • AWS WAFの設定はユーザーの責任 • 設定するルールによって、XSS攻撃がすり抜けるパターンも出てくる • そこはオンプレのWAF(F5みたいな製品)とはノリが違うので注意が必要といえそうです。
出典:https://aws.amazon.com/jp/compliance/shared-responsibility-model/ セキュリティに関する設定はユーザーが責任を持つ
15 AWSでの防御策ってなんだろう?
よくあるケース 16 User Internet Firewall Server OS ミドルウエア アプリケーション OSS
アプリチーム担当 インフラチーム担当 この辺で発生したOSSとかミ ドルウエアの脆弱性が問題 OSSの脆弱性の問題はインフラチー ムからボトムアップでアプリチーム へ連絡し対応をお願いする OSSの脆弱性の問題は大抵パッチあて かVerUpが必要で機能確認含め時間が かかる。ミドルエアも同様(アプリの 開発スケジュールにも影響が出る) • OSSの脆弱性が検知されても、簡単にパッチを充てるわけにはいかない ケースが多い • 脆弱性を検知するのはインフラチームだが対応するのはアプリチーム • パッチあて、VerUpが大抵必要 • アプリが動かなくなるケースもある • アプリの改修が発生するパターンもある • 時間がかかるので放置され気味という悪循環(放置している間に被害が進む) • 有事の際に責任を取るのはインフラチームであるというケースも多い • なので、インフラチームとしても放置はできない。。
17 放置すればなにが起こるか • 一番怖いのはSSRF • SSRF(=Server Side Request Forgery)といわれる攻撃です。 SSRFは、例えばクラウド上にあ
る外部に公開されているサーバから、内部のサーバに送られるリクエストを偽造し、本来公開され てないサーバにアクセスするという手法。 Virtual private cloud (VPC) Public subnet Private subnet 脆弱性放置の サーバー (Amazon EC2) 個人情報が入っ てるサーバー (Amazon EC2) IMDSv1.0でサーバー情報取得 クレデンシャル入手 悪意のある ユーザー 脆弱性をついて 不正アクセス、 情報搾取 強力なRole どこでもい けるルート がある
18 AWSの設定を見直そう その① • WAFのルールセットを定期的に見直そう • 無理ならWafCh〇〇mなど外部ベンダーに運用を依頼しましょう • 脆弱性のあるサーバーには以下を実施 •
アタッチされているRoleを必要最小限の権限に絞る • Adminは最悪 • アタッチされているルートテーブルのルートを最小限に絞る • アウトバウンド通信を必要最低限に絞る • できなければ不正なアウトバウンド通信を監視する • 最悪でもGuardDuty,DNSfireWallはONにしてログを取り監視 • 侵入されれば不審なところに必ずアクセスするはず • IMDSv1.0は無効にする • 認証なしで簡単にサーバーの認証情報がとれてしまう • CloudTrailのデータイベントはONになっているか確認 • 管理イベントしかとってないと、悪意のある挙動はわかりません • CloudTrailのイベントを確りS3に保存しておく • 悪意のある攻撃は長期目線でやってきます。CloudTrailはデフォルト90日しか保持してな いのでS3にしっかり保存しておきましょう
19 AWSの設定を見直そう その② • バックアップを確りとって有事に備える • 不正が見つかったら正常な状態に復元できるようにしておく • 攻撃者がアクセスできない形で保存 •
S3のバージョニング、オブジェクトロック • EBSスナップショットのごみ箱機能のルールロック • 攻撃者がデータをすててもゴミ箱から復旧できるから • AWS Backup(コンプライアンスモードで利用) • これらは最近なにかと話題のランサムウエア対策にも有効です。 • イミューダブルバックアップ ~結局はAWSの設計原則の原点に立ち戻って設定を再度見直すのが一番~ ①最小権限付与の原則に立ち戻る ②ネットワークのマイクロセグメンテーションに立ち戻る ③いつから不正が起こったかトレースできるよう準備をする (もしかしたらAWSに相談したら不正操作によって立ち上げられたリソース分の課金免除を ログをエビデンスにお願いできるかもしれません、ログがなければそのお願いもできません)
20 包括的なセキュリティ対策も重要
21 AWS環境のセキュリティ状況を可視化してみよう • “AWSセキュリティ成熟度モデル“をフル利用しよう!! • 64個の質問に答える(実際は調査になるけど)だけでAWSのセキュリティ状況のウ イークポイントが可視化できる • Wellアーキほど大変じゃない。Wellアーキでよくお客様から“よし なにやっといて”の要望にも応えてくれる優れもの
AWS環境のセキュリティ状況を可視化してみよう! (どこが不足しているか気が付ける) AWS環境のセキュリティ対策は脆弱性だけじゃない 局所的に設定をみていても気が付けないウイークポイントが発生する
22 AWSセキュリティ成熟度モデル(Step1) 64項目の調査内容の抜粋(例 • QuickWin(最初にすべきこと Basic設定) • アイディンティティとアクセス管理 • Root権限の扱いや多要素認証をどうしているか?
• Foudational(基本となる実装がどこまでできているか) • インフラ保護 • Ssh,RDP接続の管理をどうしているか? • インターネットにさらされているリソースの管理をどうしているか? • Efficient(効率化自動化) • 複数AWSアカウントの連携やオンプレとの連携はどうしている? • Optimized(最適化) • 運用の自動化及び最適化、DevSecOpsなど開発環境の最適化をどうしているか? 64項目の調査実施 Step1:提供されるエクセルのチェックシートでAWS環境アセスメント実施する <4つのフェーズ> 1.クイックウィン(Quick Wins) 2.基礎(Foundational) 3.効率化(Efficient) 4.最適化(Optimized) <9つのカテゴリ> 1.セキュリティ ガバナンス 2.セキュリティ保証 3.アイデンティティとアクセス管理 4.脅威検出 5.脆弱性管理 6.インフラ保護 7.データ保護 8.アプリケーションセキュリティ 9.インシデント対応 出典:https://maturitymodel.security.aws.dev/en/model/
23 AWSセキュリティ成熟度モデル(Step2) Step2:エクセルのマクロを実行しAWS環境のセキュリティ状況を可視化する グラフの凹みの大きい箇所がボトルネックとなります 64個の質問に回答し、エクセルのマク ロを実行すると、こんな風に可視化さ れます 黄色と赤のマーク部分が改善ポイントになります。 出典:https://maturitymodel.security.aws.dev/en/model/
24 AWSセキュリティ成熟度モデル(Step3) Step3:可視化結果を分析、考察しウイークポイントをどうするか検討しよう • 複数のAWSアカウントの統制が取れていない • ガードレール的な仕組みが実装されていない • アカウント間を横串で監視する仕組みがない •
L3/L4レベルのセキュリティがない • SOAR的な仕組みがない • 運用工数の削減対策がない • 複数AWSアカウントの統制 • SIEM On AWSの導入 • AWS ControlTowerの導入 • L3/L4監査サービスの導入 • DNSfireWall,NetWorkFireFallの導入 • SOAR的な仕組みの推進 • 頻度が高いインシデントに対する自動復旧による工数削減 • AWSConfigRule,SystemsManagerのPlayBookによる自動普及 可視化結果からの改善提案、実装の推進(前ページの可視化結果からのサンプル) 可視化結果からの考察(前ページの可視化結果からのサンプル)
25 AWSセキュリティ成熟度モデル(改善例) アセスメント結果で見えた課題(Before) ・複数AWSアカウント間を横串で監視する仕組みがない(OU構成をと れない事情があり、AWSアカウント毎に監視を実施) ・機能リリースの時間経過とともに脆弱性対策の強度が低下する ・脆弱性の対応状況が可視化されていない 解決/効果(After) ・SIEM on
AWSの導入による複数AWSアカウントのリソース状況の可視化と監 視を実装 ・AWSサービスに特化した豊富な監視ダッシュボードの早期実装 ・低コスト(市販製品の10分の1以下)、内製化運用可能なSIEMの実装 <構築構成> <監視ダッシュボードの一例> 出典:https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/README_ja.md
26 まとめ
27 まとめ • AWS WAFを過信しない、ルールセットは定期的に改善しよう • 脆弱性を解決できないサーバーがいたら最小権限付与の原則、ネッ トワークのマイクロセグメンテーションの原点に立ち戻って設定を 見直してみよう •
有事の際にいつから事象が発生したか確りトレースできるよう、ロ グの設定を見直してみよう • バックアップを改ざん削除できない形で定期的に保存しよう • AWSセキュリティ成熟度モデルを活用し、全体的にどこがウイー クポイントなのか考察してみよう 特に脆弱性のある部分については、AWSのベストプラクティスに沿っている か再度見直し、今できることを確り実施しておきましょう!
28 Fin Fin 懇親会でお会いしましょう