CVE-2026-72154 (GCVE-0-2026-72154)
Vulnerability from cvelistv5
Published
2026-08-15 05:53
Modified
2026-08-17 05:41
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
openrisc: Fix jump_label smp syncing
The original commit 8c30b0018f9d ("openrisc: Add jump label support")
copies from arm64 and does not properly consider how icache invalidation
on remote cores works in OpenRISC. On OpenRISC remote icaches need to
be invalidated otherwise static key's may remain state after updating.
Fix SMP cache syncing by:
1. Properly invalidate remote core icaches on SMP systems by using
icache_all_inv. The old code uses kick_all_cpus_sync() which runs a
no-op IPI function call on remote CPU's which does execute a lot of
code and flushes many cache lines in the process, but does not flush
all and it's not correct on OpenRISC.
2. For architectures that do not have WRITETHROUGH caches be sure
to flush the dcache after patching.
To test this I first reproduced the issue using a custom test module
[0]. The test confirmed that some icache lines maintained stale
static_key code sequences after calling static_branch_enable(). After
this patch there are no longer jump_label coherency issues.
[0] https://github.com/stffrdhrn/or1k-utils/tree/master/tests/smp_static_key_test
References
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"arch/openrisc/kernel/jump_label.c",
"arch/openrisc/kernel/patching.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "3fac46068fe4cea22ed373432b9173a915e8e60d",
"status": "affected",
"version": "8c30b0018f9d93391573e091960d257fd9de120a",
"versionType": "git"
},
{
"lessThan": "57740658042daf591c57d6e700d9a304d5972552",
"status": "affected",
"version": "8c30b0018f9d93391573e091960d257fd9de120a",
"versionType": "git"
},
{
"lessThan": "aca063c9024522e4e5b9a9d1927433f6a01785a3",
"status": "affected",
"version": "8c30b0018f9d93391573e091960d257fd9de120a",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"arch/openrisc/kernel/jump_label.c",
"arch/openrisc/kernel/patching.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.18"
},
{
"lessThan": "6.18",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.40",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.5",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.40",
"versionStartIncluding": "6.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.5",
"versionStartIncluding": "6.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "6.18",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nopenrisc: Fix jump_label smp syncing\n\nThe original commit 8c30b0018f9d (\"openrisc: Add jump label support\")\ncopies from arm64 and does not properly consider how icache invalidation\non remote cores works in OpenRISC. On OpenRISC remote icaches need to\nbe invalidated otherwise static key\u0027s may remain state after updating.\n\nFix SMP cache syncing by:\n\n 1. Properly invalidate remote core icaches on SMP systems by using\n icache_all_inv. The old code uses kick_all_cpus_sync() which runs a\n no-op IPI function call on remote CPU\u0027s which does execute a lot of\n code and flushes many cache lines in the process, but does not flush\n all and it\u0027s not correct on OpenRISC.\n 2. For architectures that do not have WRITETHROUGH caches be sure\n to flush the dcache after patching.\n\nTo test this I first reproduced the issue using a custom test module\n[0]. The test confirmed that some icache lines maintained stale\nstatic_key code sequences after calling static_branch_enable(). After\nthis patch there are no longer jump_label coherency issues.\n\n[0] https://github.com/stffrdhrn/or1k-utils/tree/master/tests/smp_static_key_test"
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The bug is in OpenRISC SMP jump_label icache sync during static_branch patching; jump_label_update() is only reached from local kernel entry points (netlink, sysctl, module load) that toggle static keys, not from remote packet or network service handlers.\nAC:L - Stale remote icache after static_branch_enable/disable was reliably reproduced by the fix author; an attacker who toggles static keys while other CPUs execute guarded code controls both sides and does not depend on uncontrollable timing or memory layout.\nPR:L - Triggering jump_label_update() requires static_branch_enable/disable/inc/dec from paths such as nftables/tc netlink (CAP_NET_ADMIN, obtainable in user namespaces) or sysctl/module operations (CAP_SYS_ADMIN in a user namespace), not init-namespace root.\nUI:N - No victim interaction is required; exploitation is driven entirely by the attacker\u0027s own syscalls/netlink configuration that toggles static keys on an SMP OpenRISC kernel with CONFIG_JUMP_LABEL.\nS:U - The flaw causes incorrect kernel branch execution and state on the same machine; it does not cross a VM, container, or IOMMU security boundary to impact a separate security authority.\nC:H - Remote CPUs can keep executing stale jmp/nop static_branch instruction sequences after patching, diverging from intended kernel control flow and running security-sensitive paths that should be disabled, enabling unintended kernel memory disclosure.\nI:H - The same stale icache coherency failure lets remote cores execute kernel write paths gated by static_branch keys in the wrong state, corrupting kernel integrity and enabling arbitrary kernel modification via unintended code execution.\nA:H - Incorrect cached jump_label branches on sibling SMP cores cause wrong kernel execution that can oops, hang, or panic the system; the fix author confirmed persistent stale static_key sequences after static_branch_enable() on remote CPUs."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-17T05:41:01.606Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/3fac46068fe4cea22ed373432b9173a915e8e60d"
},
{
"url": "https://git.kernel.org/stable/c/57740658042daf591c57d6e700d9a304d5972552"
},
{
"url": "https://git.kernel.org/stable/c/aca063c9024522e4e5b9a9d1927433f6a01785a3"
}
],
"title": "openrisc: Fix jump_label smp syncing",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-72154",
"datePublished": "2026-08-15T05:53:24.474Z",
"dateReserved": "2026-08-09T03:40:39.909Z",
"dateUpdated": "2026-08-17T05:41:01.606Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…