← 最新の論文
💻 computer science

One (Thread) Can Keep a (PRNG) Secret, but not Two

本論文は、XNUカーネルのIPv6フラグメントIDにおける擬似乱数生成器(PRNG)内のレースコンディションを悪用し、シーケンス番号を予測することでTCPおよびUDPトラフィックのオフパス・スプーフィングを可能にする、初の暗号解読攻撃を提示するものであり、この脆弱性は現在AppleによってCVE-2024-27823として修正されている。

原著者: Ehood Porat, Amit Klein, Benny Pinkas

公開日 2026-06-03
📖 1 分で読めます☕ さくっと読める

原著者: Ehood Porat, Amit Klein, Benny Pinkas

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

あなたは、友人に大きな重要な手紙を送っているところだと想像してください。その手紙はあまりに大きいため、一つの封筒には収まりません。そこで郵便局(ネットワーク)は、手紙を小さな断片、つまり「フラグメント(断片)」に切り分けます。これらの断片が正しい順番で組み立てられるように、各断片には固有の「チケット番号(Fragment IDと呼ばれるもの)」が付与されます。

あなたが読んでいる論文は、ハッカーがいかにして事前にこれらのチケット番号を予測できるかという巧妙な手法について説明しています。これにより、あなたや友人が気づかないうちに、手紙の一部を偽物にすり替えることが可能になります。

以下に、この攻撃の仕組みを分かりやすく解説します。

1. 秘密のチケット発行機 (PRNG)

Appleのコンピュータ(macOSおよびiOS)は、その頭脳(カーネル)の中にある特別な「チケット発行機」を使用して、これらのランダムなチケット番号を生成しています。このマシンは、サイコロを振る時のように予測不可能であるはずです。もし番号が真にランダムであれば、次にどのチケットが出るかを誰も予測することはできません。

しかし、研究者たちは、このマシンが多忙な時にどのように機能するかについて、ある欠陥を発見しました。

2. 「二人で一台のマシン」問題 (レースコンディション)

想像してみてください。チケットカウンターが非常に混雑しており、二人の人(二つのコンピュータ・スレッド)が、全く同じミリ秒の瞬間にチケットを取ろうとしています。

  • 通常時: マシンはAさんにチケットを与え、その次にBさんに別のチケットを与えます。
  • グリッチ(不具合): このマシンは「スレッドセーフ(複数の処理が同時に起きても安全な状態)」ではないため(つまり、同時にチケットを奪い合わないようにするためのロック機能を持っていません)、両者が全く同じ開始番号を掴んでしまうことがあります。二人は同じ番号から計算を開始しますが、ステップがわずかに異なるため、奇妙なパターンを生み出します。

パターン: 研究者たちは、この「レース(競り合い)」を引き起こすと、マシンが A, B, C, B という特定の数列を生成することを発見しました。
注目すべきは、BC を挟んで二度現れていることです。この「B-C-B」というパターンこそが、決定的な証拠です。これは攻撃者に対して、「おい!マシンの中で今、レースコンディションが発生したぞ!これでマシンの内部の歯車がどのように回転しているかが見えてきたぞ」と告げているのです。

3. コードの解読 (暗号解読)

攻撃者がこれらの「B-C-B」パターンを十分に集めると、マシンをリバースエンジニアリングすることができます。

  • マシンを組み合わせ錠(ダイヤル錠)だと考えてください。「B-C-B」のパターンは、錠の内部にあるツムブラー(回転盤)の現在の位置に関するヒントを与えてくれます。
  • 十分な数のヒントを集めることで、攻撃者はマシンの「内部状態」のすべてを解明できます。
  • 一度内部状態を知ってしまえば、次にどのようなチケット番号が出るかを正確に予測できるようになります。

4. すり替え (攻撃)

チケット番号を予測できるようになった攻撃者は、「中間者攻撃(Man-in-the-middle)」を行いますが、実際には通信の間に割り込む必要すらありません。

  • シナリオ: あなたは大きなファイル(例えば、あなたのソースコードのバックアップ)をサーバーに送信しています。ファイルは分割されています。
  • 保護: ファイルの最初の断片には、あなたのパスワードと署名(認証情報)が含まれています。サーバーは、あなたが本人であることを確認するために、まずこの最初の断片をチェックします。
  • トリック: 攻撃者は最初の断片が到着するのを待ちます。次に、彼らは予測を用いて、二番目の断片のチケット番号を推測します。そして、正しいチケット番号を持つ「偽の二番目の断片(悪意のあるメッセージ、例えばウイルスや改ざんされたファイルを含むもの)」を素早く送り込みます。
  • 結果: サーバーは、正当な最初の断片(有効なパスワード付き)と、偽の二番目の断片を受け取ります。サーバーはこれらを一つにまとめ、すべて正常であると判断し、感染したファイルを保存してしまいます。攻撃者は、セキュリティチェックが最初の断片に対してのみ行われることを利用して、チェックを回避したのです。

論文における実世界の例

研究者たちは、この攻撃を以下の2つの具体的なケースでテストしました。

  1. NFS (Network File System): サーバーにバックアップされているファイルを、攻撃者がどのように変更できるかを示しました。例えば、標準的なコンピュータのコードファイルに「トロイの木馬」を注入することができます。開発者が後にそのコードをコンパイルする際、ウイルスが実行されることになります。
  2. HTTP (Webブラウジング): ネットワークを移動している最中のウェブのリクエスト(ログインやフォームの送信など)を、攻撃者がどのように改ざんできるかを示しました。

なぜこれが重要なのか

  • 新しい手法: 「レースコンディション(タイミングの不具合)」を利用して乱数生成器を打破した例としては、これが初めてです。通常、レースコンディションはシステムのクラッシュを引き起こすものですが、ここではデータの盗み出しに使用されました。
  • 実用的な脅威: この攻撃は、様々なバージョンのmacOSおよびiOSを実行している、実際のAppleデバイス(M1、M2チップ、Intel Mac)上で動作します。
  • 修正策: Appleはすでにこの問題を修正済みです。この脆弱性には CVE-2024-27823 というIDが割り当てられました。修正内容は、二つの処理が同時に開始番号を掴めないように、チケット発行機を「スレッドセーフ」にすることです。

要約すると: この論文は、コンピュータの乱数生成器が、同時に起きる二つの事象によって混乱に陥った場合、ハッカーがその混乱を利用して未来を予測し、データの断片をすり替え、セキュリティチェックを潜り抜けてマルウェアを送り込むことができるということを示しています。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →