以前のケーススタディでも述べましたが、インシデント対応ではお客様との信頼関係が試されます。あるお客様から自社の公開 Web サイトについて懸念があると Cisco Talos インシデント対応チーム(CTIR)に連絡があったときも、この信頼関係のおかげですぐに行動を起こしてペネトレーションテストを実施することができました。このお客様(芸術・エンターテインメント業界)と CTIR の間には強固な関係が築かれていたので、CTIR からの推奨事項に耳を傾けていただけるという確信があり、インシデント対応計画に厳密に従っていらっしゃることも完全に把握していました。結成したばかりの CTIR レッドチーム(CTRT)がペネトレーションテストを実施して、サイトの API に認証上の欠陥がいくつかあり、攻撃者が簡単に侵入できることを発見できたのは、このような信頼関係ができていたからです。Web アプリケーションのペネトレーションテストの結果、お客様のサイトが侵害されてユーザーの支払い方法が閲覧されたり機密情報が盗まれたりする危険性があることが判明しました。
このような事例はほぼすべての組織で起きる可能性があります。なぜなら、さまざまな組織がインフラとアプリケーションをクラウドに移行しており、マルチクラウドのハイブリッド環境では API が重要な役割を果たしているからです。ペネトレーションテストとレッドチーム演習は、CTIR リテーナーサービスをご利用のお客様に活用していただけるプロアクティブなサービスのほんの一例です。Web インフラやクラウドインフラへの対応機能がインシデント対応計画やプレイブックに反映されていないお客様や、それらのインフラに対するアセスメントを実施したいとお考えのお客様は、今すぐ CTIR にお問い合わせください。
対象範囲
お客様はまず CTRT を利用して、標準的な Web アプリケーション ペネトレーション テストをプライマリ Web サイトに対して実施しました。このサイトではお客様の中核事業のスケジューリング、サイト以外での販売、ポイントカード割引が処理されていました。支払い処理はサードパーティのサービスを通じて行われていました。サイトの開発は外注されており、お客様はこの新しいサイトが攻撃に対してどの程度の復元力を備えているか確認したいと考えていました。CTRT はお客様のビジネスに悪影響を与えないように QA インスタンスに対して実稼働テストを行い、調査結果を確認しました。
最初の分析
CTRT はまず、攻撃プロキシ(Burp Suite Professional)を使用してアプリケーションとそのバックエンド機能をマッピングしました。最初のデータ収集では Amazon CloudFront CDN を使用した標準的な Web デザインが見つかりました。Amazon CloudFront CDN では静的コンテンツと JavaScript がホストされており、それらがユーザーのブラウザにロードされると、クラウドサービスでホストされている API エンドポイントが直接呼び出されて、アプリケーションの機能(スケジューリング、ユーザープロファイル、認証、テレメトリ、支払い処理など)が実行されます。CTRT はアカウントを登録してアプリケーションの使用方法を確認していくことで、さまざまなアプリケーション機能に使用されている呼び出しと接続先の Web サービスを迅速に特定しました。
Burp の [Targets] タブ。CTRT が知りたいホストが表示されている
最初の分析の後は、アプリケーションの以下の領域に焦点を当てました。
- 予約スケジューリング
- サイト以外での販売
- ユーザープロファイルのストレージ9
- ユーザーウォレットのストレージ
- ユーザーアカウントの作成と認証
- 支払い処理
アカウント作成サービスや支払い処理サービスを確認すると不正利用に耐える設計であることが分かりましたが、主要なアプリケーション API に許可制御の仕組みがまったく存在しないことが判明しました。
主要な調査結果:API レイヤで許可が行われていない
クライアントブラウザはログインプロセスでベアラートークンを受け取り、バックエンド アプリケーション API にアクセスする際にそのトークンを使用します。多くのコア API では有効なトークンが必要になりますが、ユーザー権限の検証は行われていません。そのため、要求の形式が正しければ、有効なベアラートークンを持っているだけで任意のユーザーに対してアクションを実行できます。CTRT はこれを利用して次のことを行いました。
- 任意のユーザープロファイルデータ(電話番号、電子メール、生年月日など)を表示する。
- 電子メールのリストにスプレー攻撃を行って有効なアカウントを見つける。
- 任意のユーザーウォレット(ポイントカードやクレジットカードのトークン値など)を表示する。
- 他のユーザーのウォレットからカードを削除する。
- 標的にしたユーザーアカウントの予約確認コードを表示する。
- 標的のウォレットからポイントカードを盗み取って攻撃者のアカウントに追加する。
- 他のユーザーのアカウントで保持されている割引を適用して、サイト以外での取引を無料で行う。
- 標的のウォレットにあるクレジットカードトークンを使用することで、標的の完全なクレジットカード番号を知ることなくサイト以外で購入する。
有効なベアラートークンを使用してユーザーの情報にアクセスした例(一部編集済み)
お客様の反応と CTIR への依頼
CTRT はアセスメントを実施しながらお客様のチームに随時情報を提供し、主要な調査結果を関係者に報告しました。事が事だけに、見つかった欠陥が実稼働 Web サイトでエクスプロイトされていた痕跡がないかの調査をお客様は CTIR に依頼されました。
最初の通知
CTRT の調査結果を確認した後、最終的にお客様は API の不正利用への対応を CTIR に依頼されました。CTIR はインシデント対応リテーナーサービスを通じて、Web アプリケーションで行われた可能性がある侵害への対応を開始しました。
検知と分析
脆弱性が判明していたため、CTIR は詳細を把握してスムーズに調査を開始することができました。CTRT の事前調査がなければ、可能性のある範囲を把握して調査領域を特定するのは難しかったでしょう。強力なレッドチームがいてお客様の Web アプリケーション API をしっかり把握していると、干し草の中から針を探すような仕事もかなり楽になります。
API のインフラストラクチャが原因で、インシデント対応で証拠を探る際に通常利用する要素はこの調査では利用できませんでした。最初に把握すべき最も重要な情報は、API のインフラストラクチャの全体像です。すでに実施していたペネトレーションテストがここでも役立ちました。多くのマッピングがそのときに行われていたからです。Web サーバーとは異なり、API 要求はさまざまなレイヤを通過して必要な情報を取得し、要求者にその情報を送り返します。不正利用はあらゆるレイヤで行われる可能性があるので、この要求のフロー全体を把握することが重要になります。ログは上書きされる可能性があるため、レイヤを早期に特定すれば、上書きされる前により多くのログを詳しく調査できます。
API は通常、トークンベースの認証を使用することで、さまざまな場所やネットワークから多数のユーザーが利用できるようにしています。1 つのトークンが 1 人のユーザーに対応しているとは限らず、またほとんどの場合、トークンは期限切れになるので、侵害が発生した可能性のある時間を部分的にしか把握できません。限られたログしか利用できなかったため、完全なフォレンジック分析は行えませんでしたが、CTIR はアクティビティの異常と急増を特定し、既知のイベントのタイムラインを把握することに成功しました。
日付/時刻 | 攻撃アクティビティ |
2021 年 5 月 31 日午前 12 時 30 分 | API「GetUser」要求 |
2021 年 6 月 3 日 | 「ユーザーが存在しない」エラーが増加 |
2021 年 6 月 6 日 | 「ユーザーが存在しない」エラーが減少 |
2021 年 6 月 6 日午後 6 時 | ログ処理によるイベントが増加 |
2021 年 6 月 6 日午後 11 時 59 分 | ログ処理によるイベントが減少 |
これによって、追加のデータソースを調査して侵害の可能性を探るための明確なタイムフレームが得られます。また攻撃者がこれ以上アクションを行えないように追加の封じ込め対策を実施するのにも役立ちます。
API アクティビティに関連する利用可能なログを調査したところ、「GetUser」要求と「ユーザーが存在しない」エラーの 2 つで異常が確認されました。「GetUser」要求は、ユーザーに関する詳細を取得しようとしたことを示しています。これは通常、管理者レベルのアカウントのみが行います。一般ユーザーはこの要求を行えないはずですが、攻撃者がこれを試みていたとしたら、エラーや要求拒否がログに記録されているはずです。
「ユーザーが存在しない」イベントログが 2 週間にわたって急増
ほかにも、「ユーザーが存在しない」エラーが想定を上回る頻度で発生していました。このエラーは、ユーザーが間違ったユーザー ID でサインインしようとした場合や、特定のアクションを実行しようとした場合に発生します。CTIR は、確認された傾向と判明した脆弱性に基づいて、公開 API を通じた潜在的なブルートフォース攻撃への対抗策を推奨事項として提供しました。
MITRE マッピング
標的の ID 情報の収集(T1589)
攻撃者は API を通じてさまざまなユーザーに関する情報を収集しようとしていました。「GetUser」コマンドを使用し、API を通じてユーザーに直接アクセスしようとしていたのです。ユーザーの個人情報や財務情報に関するさらなる詳細が API を通じて取得される可能性がありました。
ブルートフォース(T1110)
攻撃者はユーザーへのアクセス試行を大量に行っていました。試行の失敗回数が多いことから、単純なパスワード推測(T1110)が行われたものと思われますが、より体系的なアプローチを攻撃者が使用していた可能性もあります。
封じ込め、根絶、復旧
CTIR はお客様と緊密に連携して、攻撃者がこれ以上アクションを行えないように対策を施しました。このケースでは、API への外部アクセスを制限し、一般ユーザーの権限を検証し、アクティビティが検知されたときに影響を受けた API を停止し、ユーザートークンを失効させ、ログのモニタリングを強化して侵害の兆候を詳細に探るようにしました。またペネトレーションテストにおいて API にその他のセキュリティ上の潜在的な欠陥が発見されており、競合状態や古いバージョンの Web サーバーなどが確認されたため、できるだけ早く更新することをお客様に推奨しました。
このケースも、インシデント対応リテーナーサービスが組織のインシデント対応機能の強化に役立つことを示す好例だと言えます。攻撃から防御まで迅速に対応できるグローバルで俊敏なインシデント対応プロバイダをご利用いただくことで、リスクを特定し、封じ込めと根絶、通常状態へのビジネスの復旧を迅速に行って、ビジネスへの影響を最小限に抑えることができます。Web アプリケーションのペネトレーション テストでは貴重な情報がお客様にもたらされました。テストを実施したことにより、アプリケーションの弱点と侵入される可能性のある経路を特定できただけでなく、お客様のインシデント対応計画を発動して脅威とリスクを迅速に軽減することができました。
本稿は 2021 年 11 月 30 日に Talos Group のブログに投稿された「Case Study: Catching threats ahead of time with a penetration test from the Cisco Talos Incident Response Red Team」の抄訳です。