【活用ガイド】

JVNDB-2025-025343

LinuxのLinux Kernelにおける不特定の脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。bpfにおける不十分な推測的ストアバイパス緩和によるポインタリークを修正しています。Spectre v4を緩和するために、2039f26f3aca(「bpf: 不十分な推測的ストアバイパス緩和によるリーケージの修正」)により、1) スタックスロットの初期化後および2) ポインタをスタックに退避する際にlfence命令が挿入されました。しかしこれは、スタックスロットが最初にポインタで初期化され(サニタイズ対象)、その後スカラーで上書きされる場合(スロットが既に初期化されているためサニタイズ対象外)をカバーしていません。この場合、2回目の書き込みは推測的ストアバイパス(SSB)の対象となり、推測的なポインタをスカラーとして扱う型混乱を引き起こします。これにより、プログラムは例えば分岐に基づくキャッシュサイドチャネルを用いて、その数値としてのポインタ値を漏洩させる可能性があります。これを修正するために、以前にポインタを含んでいたスタックスロットにスカラーを書き込む場合もサニタイズを行うようにしました。LLVMがレジスタプレッシャー時にのみポインタ退避を生成すると仮定すると、多くの実際のBPFプログラムへのパフォーマンス影響は小さいと考えられます。以下の特権なしBPFバイトコードは最小限のエクスプロイトと緩和策の草案です。[...] // r6 = 0または1(スカラー、不明なユーザー入力) // r7 = サイドチャネル用アクセス可能ポインタ // r10 = フレームポインタ(fp)、漏洩対象 // r9 = r10 #ssbを促すためのfpエイリアス *(u64 *)(r9 - 8) = r10 // fp[-8] = ポインタ、漏洩対象 // ポインタのスタックスピルのためここにlfenceが追加される。 // // 省略:alias predictorを訓練するためのダミーbpf_ringbuf_output()(r9-r10依存なし) // *(u64 *)(r10 - 8) = r6 // fp[-8] = スカラーでポインタを上書き // 2039f26f3acaにより、stack slotがSTACK_INVALIDでなかったためlfenceは追加されず、 // ストアはSSBの対象となる可能性があります。 // // 修正として、スロットにポインタが含まれていた場合にもlfenceを追加しました。 // r8 = *(u64 *)(r9 - 8) // r8はアーキテクチャ的にはスカラーですが推測的にはポインタです。 // // 分岐に基づくキャッシュサイドチャネルを用いてポインタを漏洩します。 r8 &= 1 // 漏洩するビットを選択 if r8 == 0 goto SLOW // ミス予測なし // 入力r6が0の場合はアーキテクチャ的に実行されないコードであり、 // ポインタビットが1の場合にのみ推測的に実行されます。 r8 = *(u64 *)(r7 + 0) #ビットをキャッシュにエンコード(0:遅い、1:速い) SLOW: [...]この処理の後、プログラムは*(r7 + 0)へのアクセス時間を測定し、選択されたポインタビットが0か1かを判定します。これを64回繰り返すことでamd64上のアドレス全体を復元できます。まとめると、サニタイズはスカラーが別のスカラーで上書きされる場合にのみ省略可能です。推測的ストアバイパスによるスカラー混乱は、検証中に導出されるポインタ境界が分岐なしの論理で強制されるため、不正アクセスには繋がりません。詳細については979d63d50c0c(「bpf: pointer arithmeticの範囲外推測を防止」)を参照してください。緩和策を!env-allow_{uninit_stack,ptr_leaks}に依存させてはいけません。なぜなら、これらが有効化されている場合、推測的なリークは予期しない可能性が高いためです。例えば、保護されたログファイルのアドレスリークは許容されても、緩和を無効化すると無権限プロセスがアクセス可能なマップのキャッシュ状態にアドレスが意図せず漏洩する恐れがあります。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 7.1 (重要) [NVD値]
  • 攻撃元区分: ローカル
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): 高
  • 完全性への影響(I): なし
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 4.19.207 以上 4.19.272 未満
  • Linux Kernel 5.10.56 以上 5.10.166 未満
  • Linux Kernel 5.13.8 以上 5.14 未満
  • Linux Kernel 5.14.1 以上 5.15.91 未満
  • Linux Kernel 5.16 以上 6.1.9 未満
  • Linux Kernel 5.4.146 以上 5.4.231 未満
  • Linux Kernel 5.14
  • Linux Kernel 6.2

想定される影響

当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。
また、当該ソフトウェアが扱う情報について、書き換えは発生しません。
さらに、当該ソフトウェアが完全に停止する可能性があります。
そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 情報不足(CWE-noinfo) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2023-53024
参考情報

  1. National Vulnerability Database (NVD) : CVE-2023-53024
  2. 関連文書 : bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/81b3374944d201872cfcf82730a7860f8e7c31dd)
  3. 関連文書 : bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/da75dec7c6617bddad418159ffebcb133f008262)
  4. 関連文書 : bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/aae109414a57ab4164218f36e2e4a17f027fcaaa)
  5. 関連文書 : bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/b0c89ef025562161242a7c19b213bd6b272e93df)
  6. 関連文書 : bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/01bdcc73dbe7be3ad4d4ee9a59b71e42f461a528)
  7. 関連文書 : bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/e4f4db47794c9f474b184ee1418f42e6a07412b6)
更新履歴

  • [2026年01月27日]
      掲載