【活用ガイド】

JVNDB-2025-025316

Debian等の複数ベンダの製品における誤った領域へのリソースの漏えいに関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。arm64/entryの`cpu_switch_to()`および`call_on_irq_stack()`内でDAIFをマスクします。`cpu_switch_to()`と`call_on_irq_stack()`は、Shadow Call Stackが有効な場合にSPを操作して異なるスタックに切り替えます。これらのスタック切り替えはアトミックには行えず、両関数はSErrorsやDebug Exceptionsによって割り込まれる可能性があります。割り込みが発生するとスタックやShadow Call Stackが不整合となり、スタックの破損を招きます。`cpu_switch_to()`内では、SP_EL0が新しいタスクを指している一方で、x18が古いタスクのSCSを指したままの状態で割り込みが起こる場合があります。割り込みハンドラがタスクのSCSポインタを保存しようとすると、古いタスクのSCSポインタ(x18)が新しいタスク構造体(SP_EL0が指す)に保存されて上書きされます。`call_on_irq_stack()`では、タスクスタックからIRQスタックへの切り替えおよび戻る際の切り替え時に同様の問題が発生します。SCSポインタがIRQ SCSを指しているがSPがタスクスタックを指している場合、ネストされた割り込みハンドラがIRQ SCSにリターンアドレスをプッシュし、その後SPがタスクスタックを指していることを検知して`call_on_irq_stack()`を呼び出し、タスクのSCSポインタをIRQ SCSポインタで上書きします。これによりタスクは誤ったSCSやIRQ SCS上のアドレスに戻り、CONFIG_VMAP_STACKやFPACが有効な場合にカーネルパニックを引き起こす可能性があります。通常の設定では可能性は低いものの、CONFIG_ARM64_PSEUDO_NMIが有効でDAIFがアンマスクされる場合、GICは割り込みの優先度に基づきCPUに受ける割り込みを制御します。擬似NMIは`cpu_switch_to()`や`call_on_irq_stack()`の処理中でも非常に頻繁に発生し得て、予測不可能なカーネルパニックを誘発する恐れがあります。これを防ぐために`cpu_switch_to()`内ではDAIFを完全にマスクし、終了時に復元します。`call_on_irq_stack()`でも同様にマスクと復元を分岐の前後に行います。CONFIG_SHADOW_CALL_STACKが有効でない場合でも、全ての設定で挙動を統一するためにDAIFをマスクします。既存のマクロはIFのみをマスクして保存するため、新たにDAIFを保存しマスクするアセンブリマクロを導入して使用します。
CVSS による深刻度 (CVSS とは?)

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


Debian
  • Debian GNU/Linux 11.0
Linux
  • Linux Kernel 5.10.180 以上 5.10.210 未満
  • Linux Kernel 5.15.111 以上 5.15.190 未満
  • Linux Kernel 6.1.28 以上 6.1.149 未満
  • Linux Kernel 6.13 以上 6.15.9 未満
  • Linux Kernel 6.2.15 以上 6.6.101 未満
  • Linux Kernel 6.7 以上 6.12.41 未満
  • Linux Kernel 6.16

本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。
想定される影響

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

正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。
ベンダ情報

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

  1. 誤った領域へのリソースの漏えい(CWE-668) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2025-38670
参考情報

  1. National Vulnerability Database (NVD) : CVE-2025-38670
  2. 関連文書 : arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/407047893a64399f2d2390ff35cc6061107d805d)
  3. 関連文書 : arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/a6b0cb523eaa01efe8a3f76ced493ba60674c6e6)
  4. 関連文書 : arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/708fd522b86d2a9544c34ec6a86fa3fc23336525)
  5. 関連文書 : arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/9433a5f437b0948d6a2d8a02ad7a42ab7ca27a61)
  6. 関連文書 : arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/0f67015d72627bad72da3c2084352e0aa134416b)
  7. 関連文書 : arm64/entry: Mask DAIF in cpu_switch_to(), call_on_irq_stack() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/d42e6c20de6192f8e4ab4cf10be8c694ef27e8cb)
  8. 関連文書 : Revert "arm64: Stash shadow stack pointer in the task struct on interrupt" - kernel/git/stable/linux.git - Linux kernel stable tree
更新履歴

  • [2026年01月27日]
      掲載