
GnuPGのgpgsmにおけるCMS AES-GCMショートタグ認証バイパスを実証する概念実証(CVE-2026-57062)。脆弱なビルドでは復号されるが、パッチ適用済みバージョンでは拒否されるメッセージを偽造する。
GnuPG の gpgsm(S/MIME および CMS ツール)は、CMS AuthEnvelopedData
(RFC 5083) AES-256-GCM メッセージ内の mac OCTET STRING から検証する認証タグの
長さを導出し、libgcrypt は 4 バイトという短いタグも受け入れます。RFC 5084 では
少なくとも 12 バイトが要求されています。Ubuntu は noble gnupg2
2.4.4-2ubuntu17.6 で、12 オクテット未満の authtag をすべて拒否することで修正しました。
これは概念実証です: まったく同じ偽造 CMS メッセージが、脆弱な gpgsm では復号され、 パッチ適用済みのものでは拒否されます。リモートでの侵害を実証するものではありません。 認証に失敗するはずのメッセージが、脆弱なビルドでは gpgsm のセキュリティゲートを 通過することを実証します。
同じメッセージを両方のビルドに対して実行し、GnuPG のバージョンだけを変更します:
| message | vulnerable gpgsm 2.4.4 | patched gnupg2 2.4.4-2ubuntu17.6 |
|---|
| mac 12 (baseline) | decrypts | decrypts |
| mac 4 (probe) | decrypts (accept) | rejected, non-zero exit |
gpgsm-cve-2026-57062-cms-gcm-short-tag.txt は Exploitmatic ソリューション
(.txt) です: データとアサートのみで、コードはありません。Exploitmatic ランタイム
(Rust、オープンソース) が実行時に処理を行います:
gpgsm --export で受信者自身の公開
証明書をエクスポートし、全体を取得します。cmsgcm トランスフォームが、その証明書に対する CMS
AuthEnvelopedData AES-256-GCM メッセージを 12 バイトまたは 4 バイトの mac 付きで
構築します。公開証明書のみが必要なため、どのような新しいボックスに対しても機能します。gpgsm --decrypt を実行し、偽造コンテンツをアサートします。脆弱な gpgsm は 4 バイトタグのメッセージを認証し、コンテンツを出力します。 パッチ適用済みの gpgsm は拒否して非ゼロで終了するため、stdout には何も出力されず、 アサートは失敗します。
前提条件: 通常の ID(ssh 設定、エージェント、またはデフォルトキー)で root として すでにボックスに ssh 接続できること。ソリューションにはオペレーターの認証情報も ターゲットの状態も含まれていません。
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1
--var で別のボックスやパッチ適用済みレプリカを指定します。ファイルの編集は不要です:
exploitmatic run gpgsm-cve-2026-57062-cms-gcm-short-tag.txt 127.0.0.1 --var ssh_port=2223
recipient(デフォルト USN-8720-Recipient)は、ターゲットからエクスポートされる
証明書の名前を指定します。
| target | result |
|---|---|
| stock gpgsm 2.4.4 (built from source), ssh 2222 | 3/3 verified |
| noble gnupg2 2.4.4-2ubuntu17.6, ssh 2223 | 2/3 not verified (short-tag fails) |
所有している、またはテスト許可を得ているシステム上での、認可されたテストおよび 研究目的のみに使用してください。