CVE-2026-89489 (GCVE-0-2026-89489)
Vulnerability from cvelistv5 – Published: 2026-09-11 19:43 – Updated: 2026-10-19 08:47| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Linux | Linux |
Affected:
9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < bf310718c6fa6adeee06d207a55489546d860e2c
(git)
Affected: 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < 497cba0b02e5555d99fe9ee1dc478af743ab7f7a (git) Affected: 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < 1f2e92e499d863f81df1732af59b4a3559969193 (git) Affected: 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < 574ae2ac2b314aa33498cd2c28add106cbe644f2 (git) Affected: 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < a520e8cac54fb403f3800125b606f55fcad42cb9 (git) Affected: 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < d64a75369cd0f2ee79afcc9d9ca34a3890989379 (git) Affected: 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < b53435c079c78f89f70a62dd5a322cca4e292b34 (git) Affected: 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a , < 78004e9a87f240df03e2f73120d291763c32e0a7 (git) |
guessed | |
| Linux | Linux |
Affected:
3.1
Unaffected: 0 , < 3.1 (semver) Unaffected: 5.10.270 , ≤ 5.10.* (semver) Unaffected: 5.15.221 , ≤ 5.15.* (semver) Unaffected: 6.1.188 , ≤ 6.1.* (semver) Unaffected: 6.6.157 , ≤ 6.6.* (semver) Unaffected: 6.12.109 , ≤ 6.12.* (semver) Unaffected: 6.18.50 , ≤ 6.18.* (semver) Unaffected: 7.2.4 , ≤ 7.2.* (semver) Unaffected: 7.3 , ≤ * (original_commit_for_fix) |
guessed |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"arch/openrisc/kernel/entry.S"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "bf310718c6fa6adeee06d207a55489546d860e2c",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "497cba0b02e5555d99fe9ee1dc478af743ab7f7a",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "1f2e92e499d863f81df1732af59b4a3559969193",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "574ae2ac2b314aa33498cd2c28add106cbe644f2",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "a520e8cac54fb403f3800125b606f55fcad42cb9",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "d64a75369cd0f2ee79afcc9d9ca34a3890989379",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "b53435c079c78f89f70a62dd5a322cca4e292b34",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "78004e9a87f240df03e2f73120d291763c32e0a7",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"arch/openrisc/kernel/entry.S"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "3.1"
},
{
"lessThan": "3.1",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.109",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.50",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.4",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.10.270",
"versionStartIncluding": "3.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.15.221",
"versionStartIncluding": "3.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.188",
"versionStartIncluding": "3.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.157",
"versionStartIncluding": "3.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.109",
"versionStartIncluding": "3.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.50",
"versionStartIncluding": "3.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.4",
"versionStartIncluding": "3.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3",
"versionStartIncluding": "3.1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nopenrisc: fix arbitrary kernel memory access via or1k_atomic syscall\n\nsys_or1k_atomic() (syscall 244 in the \"or1k\" ABI) takes two user\npointers, v1 and v2, and swaps the words they point to in hand-written\nassembly.\n\n l.lwz r29,0(r4)\n l.lwz r27,0(r5)\n l.sw 0(r4),r27\n l.sw 0(r5),r29\n\nThe pointers are not checked with access_ok(). The four memory\naccesses also have no exception table entries.\n\nA caller passes a kernel address as either pointer, and the syscall\nreads from and writes to it directly.\n\nThis gives an unprivileged process a kernel read/write primitive. It\noverwrites kernel data such as the sys_call_table, gaining code\nexecution in kernel context.\n\nCheck both pointers before entering the critical section. Add fixups\nfor the four memory accesses so faults on valid but unmapped user\naddresses return -EFAULT.\n\n[shorne@gmail.com: fix comment style]"
}
],
"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 - sys_or1k_atomic (syscall 244) is reached only via a local OpenRISC syscall into _sys_call_handler and sys_call_table; there is no network, adjacent-wireless, or physical-device path to the unchecked loads/stores in arch/openrisc/kernel/entry.S.\nAC:L - The attacker fully controls both pointer arguments and the swap is deterministic with no race or KASLR (OpenRISC has none); a published unprivileged PoC on qemu-system-or1k overwrote sys_call_table[174] and obtained uid=0 on every run.\nPR:L - Any unprivileged local process can invoke syscall 244; the handler performs no capable()/ns_capable() check, authentication, or init-namespace root gate before dereferencing the caller-supplied pointers.\nUI:N - The attacking process issues or1k_atomic itself with crafted kernel addresses; no other user must mount a filesystem, open a device, or otherwise interact.\nS:U - This is a standard host-kernel privilege escalation (arbitrary kernel R/W and commit_creds via a hijacked syscall); it does not cross a VM guest/host, IOMMU, or other security-authority boundary.\nC:H - The syscall atomically swaps two 32-bit words at attacker-chosen addresses with no access_ok(), so pairing a kernel pointer with a userspace buffer yields an arbitrary kernel-memory read primitive of any mapped word.\nI:H - The same swap is an arbitrary kernel write; the fix commit documents overwriting sys_call_table to run commit_creds(init_cred) and gain root, i.e. control-flow hijacking and full integrity compromise.\nA:H - Writes to unmapped or critical kernel addresses oops or panic because the original accesses had no exception-table fixups, and corrupting kernel text, data, or the syscall table can hang or crash the machine even without a full root exploit."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T08:47:40.968Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/bf310718c6fa6adeee06d207a55489546d860e2c"
},
{
"url": "https://git.kernel.org/stable/c/497cba0b02e5555d99fe9ee1dc478af743ab7f7a"
},
{
"url": "https://git.kernel.org/stable/c/1f2e92e499d863f81df1732af59b4a3559969193"
},
{
"url": "https://git.kernel.org/stable/c/574ae2ac2b314aa33498cd2c28add106cbe644f2"
},
{
"url": "https://git.kernel.org/stable/c/a520e8cac54fb403f3800125b606f55fcad42cb9"
},
{
"url": "https://git.kernel.org/stable/c/d64a75369cd0f2ee79afcc9d9ca34a3890989379"
},
{
"url": "https://git.kernel.org/stable/c/b53435c079c78f89f70a62dd5a322cca4e292b34"
},
{
"url": "https://git.kernel.org/stable/c/78004e9a87f240df03e2f73120d291763c32e0a7"
}
],
"title": "openrisc: fix arbitrary kernel memory access via or1k_atomic syscall",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-89489",
"datePublished": "2026-09-11T19:43:42.164Z",
"dateReserved": "2026-09-11T19:38:34.713Z",
"dateUpdated": "2026-10-19T08:47:40.968Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-89489",
"date": "2026-11-09",
"epss": "0.00136",
"percentile": "0.03068"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"arch/openrisc/kernel/entry.S"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "bf310718c6fa6adeee06d207a55489546d860e2c",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "497cba0b02e5555d99fe9ee1dc478af743ab7f7a",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "1f2e92e499d863f81df1732af59b4a3559969193",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "574ae2ac2b314aa33498cd2c28add106cbe644f2",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "a520e8cac54fb403f3800125b606f55fcad42cb9",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "d64a75369cd0f2ee79afcc9d9ca34a3890989379",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "b53435c079c78f89f70a62dd5a322cca4e292b34",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
},
{
"lessThan": "78004e9a87f240df03e2f73120d291763c32e0a7",
"status": "affected",
"version": "9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"arch/openrisc/kernel/entry.S"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "3.1"
},
{
"lessThan": "3.1",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.270",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.221",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.188",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.157",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.109",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.50",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.4",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nopenrisc: fix arbitrary kernel memory access via or1k_atomic syscall\n\nsys_or1k_atomic() (syscall 244 in the \"or1k\" ABI) takes two user\npointers, v1 and v2, and swaps the words they point to in hand-written\nassembly.\n\n l.lwz r29,0(r4)\n l.lwz r27,0(r5)\n l.sw 0(r4),r27\n l.sw 0(r5),r29\n\nThe pointers are not checked with access_ok(). The four memory\naccesses also have no exception table entries.\n\nA caller passes a kernel address as either pointer, and the syscall\nreads from and writes to it directly.\n\nThis gives an unprivileged process a kernel read/write primitive. It\noverwrites kernel data such as the sys_call_table, gaining code\nexecution in kernel context.\n\nCheck both pointers before entering the critical section. Add fixups\nfor the four memory accesses so faults on valid but unmapped user\naddresses return -EFAULT.\n\n[shorne@gmail.com: fix comment style]"
}
],
"id": "CVE-2026-89489",
"lastModified": "2026-10-19T09:17:42.653",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"exploitabilityScore": 1.8,
"impactScore": 5.9,
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"type": "Secondary"
}
]
},
"published": "2026-09-11T20:19:30.683",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/1f2e92e499d863f81df1732af59b4a3559969193"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/497cba0b02e5555d99fe9ee1dc478af743ab7f7a"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/574ae2ac2b314aa33498cd2c28add106cbe644f2"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/78004e9a87f240df03e2f73120d291763c32e0a7"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/a520e8cac54fb403f3800125b606f55fcad42cb9"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/b53435c079c78f89f70a62dd5a322cca4e292b34"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/bf310718c6fa6adeee06d207a55489546d860e2c"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"url": "https://git.kernel.org/stable/c/d64a75369cd0f2ee79afcc9d9ca34a3890989379"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Received"
}
},
"redhat_vex": {
"aggregate_severity": "Moderate",
"current_release_date": "2026-11-06T01:16:08+00:00",
"cve": "CVE-2026-89489",
"id": "CVE-2026-89489",
"initial_release_date": "2026-09-11T00:00:00+00:00",
"product_status:known_affected": "1",
"product_status:known_not_affected": "202",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "kernel: openrisc: fix arbitrary kernel memory access via or1k_atomic syscall",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89489.json",
"version": "3"
}
}
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
How durations are calculated
Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.
Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.