CVE-2026-72711
Lean 4 4.32.2 より前のカーネルが未束縛の自由変数を含む不透明宣言を受け入れる問題
- 公開済み
- 2026/08/24
- 更新済み
- 2026/10/26
- CNA の割り当て
- VulnCheck
- 観察された証拠
- 2026/10/26
プライマリ CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X低 · 今後 30 日間
- パーセンタイル
- 7.1%
- モデルの日付
- 2026/10/25
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
Lean 4 カーネルは、opaque 宣言の本体が閉じていることを検査しない。environment::add_opaque は、definition および theorem の経路が実行する check_no_metavar_no_fvar 呼び出しを省略しているため、ローカルコンテキストに存在しない自由変数を含む値は即座には拒否されない。メタプログラムは、まずカーネルに型 False の一時ローカルを作成させ、その型を型チェッカーの推論キャッシュに記録させ、次に同じ型チェッカーインスタンス上でそのキャッシュエントリが残ったままローカルコンテキストを復元し、最後にその時点で未束縛となった変数を値とする opaque 宣言を提出することができる。キャッシュ参照はローカルコンテキストへの所属を検査する分岐より先に応答するため、カーネルはキャッシュされた型を推論し、型 False の opaque 定数を受理する。そこからは任意の命題が導かれる。この宣言は、最大カーネル検査設定において通常の検査済み経路を通じて受理され、sorry、unsafeCast、debug.skipKernelTC、addDeclWithoutChecking、外部コード、改変された .olean ファイルのいずれも用いず、その結果には公理が含まれない。この問題は、欠落していた閉包検査を追加することで 4.32.2 において修正された。
ソース
CVE-2026-72711 — Lean 4 カーネルの健全性バグ:推論キャッシュポイズニング
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。