Go の脆弱性 CVE-2025-61732/68121 が FIX:コード・スマグリングと認証バイパスの恐れ

Go 1.25.7 and Go 1.24.13 Released With Patches for Multiple Security Vulnerabilities

2026/02/06 gbhackers — Go チームは、公式に Go 1.25.7 および Go 1.24.13 をリリースした。これらのマイナー・リリースは、cmd/cgo コマンドおよび crypto/tls ライブラリに影響する、2 件のセキュリティ脆弱性 CVE-2025-61732/CVE-2025-68121に対処するものである。これらのバージョンでは、コード・スマグリングや認証バイパスといった潜在的リスクの修正が行われているため、すべての利用者に速やかなアップデートが推奨される。

脆弱性の概要

cmd/cgo:コメント解析を悪用したコード・スマグリング

1 つ目の脆弱性 CVE-2025-61732 は、C コードを呼び出す Go パッケージを作成するための cmd/cgo ツールに影響を及ぼす。

この問題は、Go コンパイラと C/C++ コンパイラにおけるコメント解析方法の差異に起因する。この解析差異を悪用する攻撃者は、生成される cgo バイナリ内へコードを密かに混入させることが可能となる。

特定のコメント構造を細工することで、悪意ある命令がドキュメンテーション文字列内に隠蔽され、開発者がコメントとして無視されると想定しているものが、コードとして実行され得る。

今回の修正により、新バージョンの cgo コンパイラでは、cgo Abstract Syntax Trees (ASTs) において、ユーザー提供のドキュメンテーション・コメントを解析しない仕様になった。この問題は、GMO Flatt Security Inc. の RyotaK により報告された。

Go 1.25.7 and Go 1.24.13(Source: Twitter)
Go 1.25.7 and Go 1.24.13(Source: Twitter)

crypto/tls:セッション再開における認証バイパス

2 つ目の問題は crypto/tls パッケージに関するものであり、CVE-2025-68121 が割り当てられている。この脆弱性は、Config.GetConfigForClient を使用した場合に、予期しない挙動を引き起こすものだ。

明示的に上書きされない限り、デフォルトの GetConfigForClient は、オリジナルのコンフィグにおけるセッション・チケット・キーを使用する。そのときに返されるコンフィグが、ClientCAs などの認証パラメータを変更した場合に、この問題が発生する。

この状況では、親コンフィグで確立された接続が再開され、新しいコンフィグで設定された認証要件がバイパスされる可能性がある。

今回のパッチにより、接続を再開する際の crypto/tls は、以前に検証された証明書チェーンのルートが ClientCAs または RootCAs に存在するかどうかを、能動的に検証するようになった。

ClientAuth が VerifyClientCertIfGiven または RequireAndVerifyClientCert にコンフィグされている場合に、この検証ロジックは適用される。

この脆弱性は、Coia Prant により発見/報告された。

CVE IDComponentSeverity / TypeDescription
CVE-2025-61732cmd/cgoCode InjectionDiscrepancy in comment parsing between Go and C/C++ allows code smuggling in cgo binaries.
CVE-2025-68121crypto/tlsAuth BypassSession resumption using GetConfigForClient may bypass updated authentication parameters (e.g., ClientCAs).

開発者は、Go 環境を直ちに更新すべきである。バイナリおよびソース配布物は、公式 Go ダウンロード・ページで提供されている。