UUIDの脆弱性

Reading time: 7 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

Universally Unique Identifiers (UUIDs) は 情報を一意に識別するために使用される128ビットの番号 です。UUIDは、中央の調整なしに一意の識別子が必要なアプリケーションで不可欠です。一般的にデータベースキーとして使用され、文書やセッションなどのさまざまな要素を参照できます。

UUIDは一意であり、推測が難しいように設計されています。特定の形式で構造化されており、32の16進数の数字で表される5つのグループに分かれています。UUIDには異なるバージョンがあり、それぞれ異なる目的に使用されます:

  • UUID v1 は時間ベースで、タイムスタンプ、クロックシーケンス、ノードID(MACアドレス)を組み込んでいますが、システム情報を露出する可能性があります。
  • UUID v2 はv1に似ていますが、ローカルドメイン用の修正が含まれています(広く使用されていません)。
  • UUID v3およびv5 は、名前空間と名前からハッシュ値を使用してUUIDを生成し、v3はMD5を使用し、v5はSHA-1を使用します。
  • UUID v4 はほぼ完全にランダムに生成され、高い匿名性を提供しますが、重複のわずかなリスクがあります。

tip

UUIDのバージョンとサブバージョンは通常、UUID内の同じ位置に表示されます。例えば:
12345678 - abcd - 1a56 - a539 - 103755193864
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx

  • Mの位置 はUUIDのバージョンを示します。上記の例では、UUID v1です。
  • Nの位置 はUUIDのバリアントを示します。

サンドイッチ攻撃

「サンドイッチ攻撃」は、ウェブアプリケーションにおけるUUID v1生成の予測可能性を悪用する特定のタイプの攻撃です。特にパスワードリセットのような機能で見られます。UUID v1は時間、クロックシーケンス、ノードのMACアドレスに基づいて生成されるため、攻撃者がこれらのUUIDのいくつかを取得できれば、ある程度予測可能になります。

UUID v1を使用してパスワードリセットリンクを生成するウェブアプリケーションを想像してみてください。攻撃者がこれを悪用して不正アクセスを得る方法は次のとおりです:

  1. 初期設定
  • 攻撃者は2つのメールアカウントを制御しています:`attacker1@acme.com` と `attacker2@acme.com`。
  • 対象のメールアカウントは `victim@acme.com` です。
  1. 実行
  • 攻撃者は最初のアカウント(`attacker1@acme.com`)のパスワードリセットをトリガーし、UUIDを含むパスワードリセットリンクを受け取ります。例えば `99874128-7592-11e9-8201-bb2f15014a14`。
  • その直後、攻撃者は被害者のアカウント(`victim@acme.com`)のパスワードリセットをトリガーし、次にすぐに2番目の攻撃者制御アカウント(`attacker2@acme.com`)のためにトリガーします。
  • 攻撃者は2番目のアカウントのリセットリンクを受け取り、UUIDは `998796b4-7592-11e9-8201-bb2f15014a14` です。
  1. 分析
  • 攻撃者は、時間的に近い2つのUUID(`99874128` と `998796b4`)を持っています。時間ベースのUUIDの連続的な性質を考えると、被害者のアカウントのUUIDはこれら2つの値の間にある可能性が高いです。
  1. ブルートフォース攻撃
  • 攻撃者は、これら2つの値の間のUUIDを生成するツールを使用し、生成された各UUIDをテストしてパスワードリセットリンクにアクセスしようとします(例:`https://www.acme.com/reset/<generated-UUID>`)。
  • ウェブアプリケーションがそのような試行を適切にレート制限またはブロックしない場合、攻撃者は範囲内のすべての可能なUUIDを迅速にテストできます。
  1. アクセス獲得
  • 被害者のパスワードリセットリンクの正しいUUIDが発見されると、攻撃者は被害者のパスワードをリセットし、アカウントに不正アクセスできます。

ツール

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする