製品・ソフトウェアに関する情報
LinuxのLinux Kernelにおける無限ループに関する脆弱性
Title LinuxのLinux Kernelにおける無限ループに関する脆弱性
Summary

Linuxカーネルにおいて、以下の脆弱性が修正されました。arm64: contpteにおけるSMMU/ATSのフォルトに対するset_access_flags()の無効処理チェックが修正されました。contpte_ptep_set_access_flags()は、収集したptep_get()の値と要求されたエントリを比較して無効処理(no-op)を検出していました。ptep_get()はCONTブロック内のすべてのサブPTEからAF/dirtyをOR演算するため、兄弟のサブPTEがdirtyであるとターゲットが既にdirtyと見なされることがあります。収集した値がエントリと一致すると、ターゲットのサブPTEがハードウェア上でPTE_RDONLYを保持していても関数は0を返します。FEAT_HAFDBSを持つCPUでは、この収集されたビューに問題はありません。なぜならハードウェアは任意のサブPTEにAF/dirtyを設定でき、CPUのTLB動作はCONT範囲全体で効果的に収集されるためです。しかし、各ディスクリプタを個別に評価するページテーブルウォーカー(例えばDBM未対応のCPU、HTTU無しのSMMU、またはCD.TCRでHA/HDが無効な場合)は、変更されていないターゲットのサブPTEでフォルトを繰り返し無限フォルトループを引き起こす可能性があります。したがって、収集が兄弟のサブPTEのみが更新された場合に誤った無効処理を引き起こすことがあります。例えば、書き込みフォルトの場合、ターゲットは依然としてPTE_RDONLYを保持しており(PTE_RDONLY解除が必要です)、読み取りフォルトの場合はターゲットが依然としてPTE_AFを欠いています。修正として、無効処理を返す前に要求されたAF/dirty/write状態(__ptep_set_access_flags()と同じビット)に対して各サブPTEを生のPTE値でチェックするようにしました。書き込みビット展開の決定には引き続き生のターゲットPTEを使用します。Arm ARM(DDI 0487) D8.7.1("The Contiguous bit")によると、CONT範囲内の任意のサブPTEが有効なキャッシュ済み変換となる可能性があるため、ソフトウェアは範囲全体で一貫した属性を維持しなければなりません。

Possible impacts ・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 ・当該ソフトウェアが扱う情報について、書き換えは発生しません。 ・当該ソフトウェアが完全に停止する可能性があります。 
Solution

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

Publication Date May 13, 2026, midnight
Registration Date June 29, 2026, 11:19 a.m.
Last Update June 29, 2026, 11:19 a.m.
CVSS3.0 : 警告
Score 5.5
Vector CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Affected System
Linux
Linux Kernel 6.13 以上 6.18.19 未満
Linux Kernel 6.19 以上 6.19.9 未満
Linux Kernel 6.9 以上 6.12.78 未満
Linux Kernel 7.0
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年06月29日]
  掲載
June 29, 2026, 11:19 a.m.

NVD Vulnerability Information
CVE-2026-43486
Summary

In the Linux kernel, the following vulnerability has been resolved:

arm64: contpte: fix set_access_flags() no-op check for SMMU/ATS faults

contpte_ptep_set_access_flags() compared the gathered ptep_get() value
against the requested entry to detect no-ops. ptep_get() ORs AF/dirty
from all sub-PTEs in the CONT block, so a dirty sibling can make the
target appear already-dirty. When the gathered value matches entry, the
function returns 0 even though the target sub-PTE still has PTE_RDONLY
set in hardware.

For a CPU with FEAT_HAFDBS this gathered view is fine, since hardware may
set AF/dirty on any sub-PTE and CPU TLB behavior is effectively gathered
across the CONT range. But page-table walkers that evaluate each
descriptor individually (e.g. a CPU without DBM support, or an SMMU
without HTTU, or with HA/HD disabled in CD.TCR) can keep faulting on the
unchanged target sub-PTE, causing an infinite fault loop.

Gathering can therefore cause false no-ops when only a sibling has been
updated:
- write faults: target still has PTE_RDONLY (needs PTE_RDONLY cleared)
- read faults: target still lacks PTE_AF

Fix by checking each sub-PTE against the requested AF/dirty/write state
(the same bits consumed by __ptep_set_access_flags()), using raw
per-PTE values rather than the gathered ptep_get() view, before
returning no-op. Keep using the raw target PTE for the write-bit unfold
decision.

Per Arm ARM (DDI 0487) D8.7.1 ("The Contiguous bit"), any sub-PTE in a CONT
range may become the effective cached translation and software must
maintain consistent attributes across the range.

Publication Date May 14, 2026, 1:16 a.m.
Registration Date May 15, 2026, 4:21 a.m.
Last Update May 14, 2026, 1:16 a.m.
Related information, measures and tools
Common Vulnerabilities List