Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ml-kem-key-recovery — wolfSSLにおける部分的なFujisaki-Okamoto比較からの完全なML-KEM-1024鍵復元 (CVE-2026-6330 NEON, CVE-2026-10097 AVX2) | Kitploit
ツール/GitHubGitHub/007bsd/ml-kem-key-recovery
脆弱性分析エクスプロイトポストエクスプロイト暗号化バイナリ解析論文と研究
GitHub007bsd/ml-kem-key-recovery

ml-kem-key-recovery

wolfSSLにおける部分的なFujisaki-Okamoto比較からの完全なML-KEM-1024鍵復元 (CVE-2026-6330 NEON, CVE-2026-10097 AVX2)

リポジトリを見る
4日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

wolfSSL ML-KEMにおける部分的なFujisaki-Okamoto比較からの完全な鍵回復

CVE-2026-6330 (NEON) および CVE-2026-10097 (AVX2)。wolfSSL 5.9.2 で修正されました。

はじめに

ML-KEM (Kyber, FIPS 203) は、復号化内の1つのチェックにより選択暗号文攻撃に耐性があります。受信者は復号したばかりのメッセージを再暗号化し、結果が入力暗号文と完全に一致した場合にのみ実際の共有秘密を返します。不一致があると暗黙的な拒否がトリガーされ、代わりに疑似ランダム値が返されます。そのチェックがFujisaki-Okamoto変換であり、IND-CCA2スキームとその下の展性のあるIND-CPAスキームを分ける唯一の門です。

wolfSSLはその比較を手書きのSIMDアセンブリで実装し、2つのバックエンドでは暗号文の一部のみを比較していました。ARM64 NEONでは約半分を比較し、それをNicholas Carlini (Wikipedia) が発見して報告しました (CVE-2026-6330)。x86-64 AVX2では、ML-KEM-1024の1568バイトのうち1536バイトを比較していました (CVE-2026-10097)。

どちらのバックエンドでも、改ざんされた暗号文が本物として受理され、これはIND-CCA2セキュリティの弱体化として報告されました。この文書は、脆弱性が両方のバックエンドでさらに深刻であることを示します。チェックがスキップするバイトは、復号化の復号ノイズを漏らし、そのノイズは秘密鍵の線形関数であるため、最小二乗回帰によって鍵を回復できます。これは格子問題ではなく、古典的な鍵不一致攻撃でもありません。AVX2バックエンドでは脆弱性が u のすべてを検証するため、それらの攻撃に必要な選択u暗号文は拒否されます。代わりに、復号ノイズ回帰はチェックされていない v 係数から鍵を回復します。完全なML-KEM-1024秘密鍵は、AVX2およびNEONバックエンドの両方で、脆弱なバイナリに対してエンドツーエンドで回復されます。

この攻撃には再利用されたML-KEM鍵が必要です:HPKE受信者、KEMTLS、または固定および埋め込み鍵。エフェメラルハイブリッドTLS 1.3鍵共有はハンドシェイクごとに新しい鍵を使用し、この方法では鍵回復できません。そこでは脆弱性は識別可能な破損のみです。両方の脆弱性は修正され公開されており、これは開示後の文書です。

2つのインスタンス

「ライブ」は実際のバイナリ上で示された結果です。NEONは係数あたりの測定がはるかにノイズが多い(約4倍)ため、より多くの暗号文(600対350)を必要とします。「モデル」はノイズのないチェックであり、回帰が完全な鍵(全2048係数、100%)を回復します。その暗号文数はノイズではなく各暗号文が生成する方程式の数によって決まるため、ライブの数値とは比較できず、攻撃の難易度を反映していません。

両方の脆弱性は同じwolfSSLリリース期間中に独立して発見され、5.9.2で一緒に修正されました(両方のCVEエントリについてはwolfSSL セキュリティ脆弱性ページを参照)。CarliniのNEONバグはIND-CCA2の弱体化として文書化され、AVX2バグは鍵回復としてCVE登録されました。このリポジトリの復号ノイズ回帰攻撃は両方で鍵を回復します。バックエンド固有の詳細はneon-cve-2026-6330/およびavx2-cve-2026-10097/にあります。

FAQ

脆弱性とは何ですか?

wolfSSLのML-KEM暗黙的拒否チェックにおける不完全な比較であり、2つのSIMDアセンブリバックエンドに存在します。暗号文の全バイトよりも少ないバイトを比較したため、正しい実装では拒否される暗号文を復号化が受理します。チェックされていないバイトにより、復号化が復号ノイズのオラクルとなり、鍵が再利用される場合に秘密鍵を回復するのに十分です。

影響を受けますか?

影響を受けるのは、脆弱なSIMDアセンブリ(AVX2 (x86-64) の5.7.0~5.9.1、またはARM64 NEONの5.7.4~5.9.1)を含むビルドでwolfSSLをML-KEMと共に使用した場合です。鍵回復攻撃にはさらに、HPKE受信者、KEMTLS、または固定/埋め込み鍵のように、ML-KEM秘密鍵が復号化間で再利用される必要があります。エフェメラルハイブリッドTLS 1.3鍵共有はハンドシェイクごとに新しい鍵を使用し、鍵回復はできません。そこでは脆弱性は識別可能な破損のみです。修正はwolfSSL 5.9.2に含まれています。

攻撃者は何ができますか?

細工された復号化クエリを送信し、それぞれに対して実際の秘密値または拒否値のどちらが返ってくるかを観察することで、どちらのバックエンドでもML-KEM-1024秘密鍵全体を回復できます。ライブバイナリに対しては、約10^5から10^6の復号化クエリで鍵を回復しました。

攻撃はどのように機能しますか?

1つの暗号文係数をチェックされていない領域から取り出します。その平文ビットは丸めによって決定されます。m'_j = Compress_1(v_j - (s^T u)_j)。これらのバイトは比較されないため、v_jの圧縮値を掃引し、変化する唯一の復号化出力を監視することで丸め境界を見つけ、境界位置は復号ノイズδ_jを約±q/64の精度で測定します。攻撃者が選択した秘密(s, e)と暗号化ランダム性の観点から:

root@kitploit:~
δ_j = ( e^T y - s^T(e1 + c_u) + e2 + c_v )_j        (verified exact; small; never wraps mod q)

これは2048係数の秘密(s, e)に関する線形方程式であり、係数は攻撃者が知っています。各暗号文は、チェックされていない係数ごとに1つのそのような方程式を与えます。十分な暗号文を積み重ねて正規方程式を解くと鍵全体が回復され、最後のいくつかの係数は公開鍵関係e = t - A·s ∈ CBD(η)によって固定されます。これは通常の最小二乗法であり、格子問題ではありません。

2つのバックエンドは漏洩量が異なります。NEONは暗号文の約50%をチェックせずに残します(3つのバンドで125係数)、AVX2は約2%です(1つのバンドで51係数)。それでもNEONはより多くの暗号文を必要とします。チェックされていないバイトが非連続であり、係数あたりの測定がよりノイズが多いため、ここではより多くの漏洩が回復を容易にすることはありません。

なぜ通常のML-KEM鍵回復攻撃は適用されないのですか?

平文チェック攻撃や鍵不一致攻撃(Ravi et al. 2020, Qin et al. 2021, Băetu et al. 2019)は、攻撃者が選択したスパースなuを持つ暗号文を送信してクエリごとに1つの秘密係数を分離することで、数千クエリで鍵を回復します。AVX2の脆弱性はそれらすべてを拒否します。vの32バイトのみをスキップし、u全体を検証するため、ライブバイナリではスパースu暗号文は拒否され、単一のuビットを反転させたものは30回中30回拒否されます。NEONの脆弱性はより広範で、uの約半分もチェックされないまま残すため、その議論はAVX2固有です。しかし、この攻撃はそれに依存しません。復号ノイズ回帰は、両方のバックエンドでチェックされていないv係数から鍵を回復し、各バグが無傷のまま残すチェックの部分を生き残ります。

どのように実証されましたか?

両方のバックエンドの忠実なリファレンスモデル(kyber-py)において、上記の恒等式は正確であることが検証され、回帰はすべての2048の秘密係数を回復します。修正前のwolfSSLバイナリに対して、再利用されたエクスポート鍵を攻撃する際、各ハーネスは数値を報告する前にオラクルがエクスポートした正解鍵との自己チェックを実行します。

  • AVX2(ネイティブx86-64):65.5%(100 ct)、87.8%(200 ct)、96.9%(350 ct)、400暗号文で完全な秘密(s, e)の98.0%に到達。秘密s単独では350 ctで1005/1024 = 98.1%(CVEに記録された値)。
  • NEON(QEMUエミュレーション下のARM64):45.7%(50 ct)、85.2%(200 ct)、600暗号文で完全な秘密(s, e)の2018/2048 = 98.5%に到達。ソルバー誤差は単調に正確に収束。

回復された鍵は、オラクルがエクスポートするwolfSSL生成の鍵ペアであり、攻撃はそのモデルではなく出荷時のSIMDアセンブリに対して実行されます。完全なトランスクリプト: avx2-cve-2026-10097/live_recover_avx2.out、 neon-cve-2026-6330/live_recover_neon.out。

どのように修正しますか?

wolfSSL 5.9.2以降にアップグレードしてください(AVX2用PR #10430、NEON用PR #10192)。

どの程度深刻ですか?

深刻ですが、壊滅的ではありません。再利用された鍵、受理/拒否オラクル、および大規模だが実用的な数のクエリが必要です。サイドチャネルではありません。タイミングや電力測定はなく、比較の論理バグのみです。正しい実装やML-KEM標準自体には影響しません。比較として、liboqsのML-KEM復号化におけるコンパイラ誘発のタイミングリーク(CVE-2024-36405)は、KyberSlashと並ぶ2024年のML-KEMタイミングリークの波における関連する完全秘密鍵回復問題であり、NISTによってCVSS 7.5と評価されました。

再現

バックエンドごとの攻撃コード、分析、再現手順はavx2-cve-2026-10097/およびneon-cve-2026-6330/にあります。

クレジット

このリポジトリは、同じwolfSSLリリース期間からの2つの兄弟発見と、両方を突破する1つの攻撃を文書化しています。

  • NEONの脆弱性 CVE-2026-6330 は、Anthropicの研究者であるNicholas Carlini (website、Wikipedia) によって発見・報告され、IND-CCA2の弱体化として文書化されました。
  • AVX2の脆弱性 CVE-2026-10097 と、両方のバックエンドで実証された復号ノイズ鍵回復攻撃は、007bsd によるものです。

参考文献

  1. wolfSSL. CVE-2026-6330 (NEON, N. Carlini) · NVD · PR #10192.
  2. wolfSSL. CVE-2026-10097 (AVX2) · NVD · PR #10430.
  3. P. Ravi, S. S. Roy, A. Chattopadhyay, S. Bhasin. CCA安全な格子ベースPKEおよびKEMに対する汎用サイドチャネル攻撃. TCHES 2020(3).
  4. Y. Qin, C. Cheng, X. Zhang, Y. Pan, L. Hu, J. Ding. 格子ベースNIST候補KEMに対する鍵不一致攻撃の体系的なアプローチと分析. ASIACRYPT 2021.
  5. C. Băetu, F. B. Durak, L. Huguenin-Dumittan, A. Talayhan, S. Vaudenay. ポスト量子暗号システムに対する誤用攻撃. EUROCRYPT 2019.
  6. J.-P. D'Anvers et al. IND-CCA安全な格子ベーススキームに対する復号失敗攻撃. PKC 2019.
  7. NIST. FIPS 203: モジュール格子ベース鍵カプセル化メカニズム標準.
  8. liboqs ML-KEMコンパイラ誘発タイミングリーク. CVE-2024-36405 (NIST CVSS 7.5). KyberSlash(秘密依存除算タイミング)とは異なるが同時期のもの, D. J. Bernstein et al., ePrint 2024/1049.
  9. G. Pope. kyber-py: ML-KEM(FIPS 203)の純Python実装. GitHub (MIT OR Apache-2.0). ここでは復号ノイズ恒等式と回復シミュレーションのリファレンスモデルとして使用されました。

開示

両方の問題は、この文書の前に非公開で報告され、修正され、CVEが割り当てられました。wolfSSL 5.9.2で修正されました。

ツールをダウンロード
NEON (CVE-2026-6330)AVX2 (CVE-2026-10097)
バックエンドARM64 NEONx86-64 AVX2
脆弱性暗号文の約半分を比較1568バイト中1536バイトを比較
報告者Nicholas Carlini (Anthropic)007bsd
CVE深刻度中 (CVSS 4.0 6.3, CWE-327)高 (CVSS 4.0 8.3, CWE-697)
鍵回復(モデル)完全(約500 ct)完全(約1300 ct)
鍵回復(ライブバイナリ)98.5%(600 ct、QEMUエミュレーション)98.1%(350 ct、ネイティブ)
修正PR #10192PR #10430