
HTTP/2 最終フレーム同期(別名 Single Packet Attack)Scapy ベースの低レベルライブラリ / ツール + Exploit タイミング攻撃
H2SpaceXScapy をベースにした HTTP/2 低レベルライブラリで、Single Packet Attack(H2 上の Race Condition)に使用できます。
記事を執筆し、InfoSec Write-ups で公開しました:
1.2.2
pyproject.toml に統合し、setup.py を削除
[options] セクションを修正し、パッケージ検出が正しく定義されるようにしたsetup.py のタイポで失われていた dev エクストラ(twine)を公開check_headers_lowercase=False を尊重するようになった(他のリクエストメソッドと一貫)tests/(ヘッダーユーティリティの単体テスト)と CONTRIBUTING.md(ビルド & リリースガイド)を追加1.2.1
以下の記述の一部は単なるアイデアであり、テストや実装はされていません。
H2SpaceX は Python 3 で動作します(推奨: >=3.8.8)
pip install h2spacex
scapy のエラーが発生する場合:
pip install --upgrade scapy
HTTP/2 TLS 接続をインポートして接続をセットアップできます。接続をセットアップした後、他の操作を実行できます:
from h2spacex import H2OnTlsConnection
h2_conn = H2OnTlsConnection(
hostname='http2.github.io',
port_number=443,
ssl_log_file_path="PATH_TO_SSL_KEYS.log" # optional (if you want to log ssl keys to read the http/2 traffic in wireshark)
)
h2_conn.setup_connection()
...
その他の例は Wiki ページ を参照してください
Portswigger のレースコンディションの例を含むサンプルを参照してください。
James Kettle は Black Hat 2024 でタイミング攻撃向けに改良版 Single Packet Attack を紹介しました:

send_ping_frame() メソッドを使用してこのメソッドを簡単に実装できます。
この Wiki と Parse Response (Threaded) + Response Times for Timing Attacks の部分を参照してください:
以前に開発されたライブラリ h2tinker からもいくつかのアイデアを得ました。
最後に、直接支援し、いくつかの他のテクニックを指摘してくれた James Kettle に改めて感謝します。