← Back to index
2026/4/12

単一パケット攻撃:リモートのレースコンディションを「ローカル化」する新手法

PortSwigger Researchが公開した「単一パケット攻撃(single-packet attack)」は、HTTP/2の複数リクエストを単一のTCPパケットで完了させることで、遠隔からでもネットワークジッターの影響を小さくし、Webのレースコンディションを狙いやすくするという発想の手法です。従来は“遠隔ゆえの揺らぎ”が成功率を下げがちだった競合系の脆弱性に対して、攻撃の再現性を押し上げうる点が重要です。

Web SecurityHTTP/2Race ConditionPortSwigger脆弱性研究

元ソース:PortSwigger Research「The single-packet attack: making remote race-conditions 'local'」(https://portswigger.net/research/the-single-packet-attack-making-remote-race-conditions-local)

概要

PortSwigger Researchは「単一パケット攻撃(single-packet attack)」という新しいテクニックを紹介しています。要点は、HTTP/2の複数のHTTPリクエストを、単一のTCPパケットで完了させることで、遠隔環境での“ネットワークの揺らぎ(ジッター)”を実質的に減らし、Webアプリケーションのレースコンディション(競合状態)を発火させやすくする、というものです。

レースコンディション系の問題は、同じ操作を短時間に重ねることで「本来は起きない順序」や「同時実行の隙」を作り、認可・決済・在庫・トークン発行などの整合性を崩せてしまう点に危険性があります。一方で、リモートからの検証・悪用では、パケットの到達順や遅延が微妙に変動し、狙ったタイミングを作りにくいという壁がありました。単一パケット攻撃は、そこを“ローカルに近い条件”へ寄せる方向性として位置づけられます。

詳細

元ソースの説明によれば、この手法は「複数のHTTP/2リクエストを単一のTCPパケットで完了させる」ことで、ネットワークジッターの影響を小さくし、レースコンディションを引き起こすための条件を整えます。ここで重要なのは、レースコンディションの成否が“どれだけ同時に近い状態を作れるか”や“処理順をどれだけ狙い通りに揺さぶれるか”に依存しやすい点です。遠隔環境では微小な遅延差が結果を左右しやすく、試行回数や工夫で補ってきた部分がありました。

PortSwiggerの別資料では、タイミング攻撃を現実に成立させるために「ノイズ(signal vs noise)をどう扱うか」「タイミング攻撃を“ローカル化”する」といった観点が論じられています。単一パケット攻撃のアイデアは、レースコンディションという“タイミングが肝になる”領域に対して、同様にノイズ要因を減らし、成功率や再現性を上げる方向の工夫として理解できます。

実務上の含意としては、

  • 攻撃者側にとっては、これまで「リモート環境では不安定」と見なされがちだった競合の再現が、より現実的になる可能性があります。
  • 防御側にとっては、「レースは起きにくいから大丈夫」という期待に依存せず、設計・実装として競合を潰す(排他、順序保証、二重実行防止、原子的更新など)必要性が改めて強調されます。

また、PortSwiggerの研究記事群には、Webセキュリティ研究や自動化、ツール活用に関する話題もあり、競合系の検証が“手作業での運任せ”から“再現可能な検証”へ寄っていく流れを読み取れます。単一パケット攻撃は、HTTP/2という現代的なプロトコル特性を手がかりに、タイミング依存の攻撃を扱いやすくする具体例として注目されます。

出典

関連記事