CVE-2026-98116 (GCVE-0-2026-98116)
Vulnerability from cvelistv5 – Published: 2026-09-25 10:36 – Updated: 2026-10-19 09:14| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Linux | Linux |
Affected:
33061d0fba51d2bf70a2ef9645f703c33fe8e438 , < e6cdd2a0470d64073349a970dc1691433804b271
(git)
Affected: 92ee3c60ec9fe64404dc035e7c41277d74aa26cb , < 9857a75714bb5df4781e4d8b1a1753b1e17bf07a (git) Affected: 92ee3c60ec9fe64404dc035e7c41277d74aa26cb , < cbadf2575d25e7dcc0d4da2717817ae569fbc99b (git) Affected: 92ee3c60ec9fe64404dc035e7c41277d74aa26cb , < cbc7ec97601d09b74e05e44470fa6b0bcdabf3f5 (git) Affected: 92ee3c60ec9fe64404dc035e7c41277d74aa26cb , < fd137bf8149bc6460f9b7b1fc292025da04cb9ee (git) Affected: 92ee3c60ec9fe64404dc035e7c41277d74aa26cb , < 8c1882dfee8f404d118020664b73eb4592172226 (git) Affected: 92ee3c60ec9fe64404dc035e7c41277d74aa26cb , < 9b110a9dcecc59516c77cb3c0caf1f492f75df2d (git) Affected: a42aa926843acca96c0dfbde2e835b8137f2f092 (git) Affected: 9cb6c40a6ebe4a0cfc9d6a181958211682cffea9 (git) Affected: fbeb492694ce0441053de57699e1e2b7bc148a69 (git) Affected: 0f6947f5f5208f6ebd4d76a82a4757e2839a23f8 (git) Affected: 0090c13cbbdffd7da079ac56f80373a9a1be0bf8 (git) Affected: 1bbf82d9f961414d6c76a08f7f843ea068e0ab7b (git) Affected: 5.15.32 , < 5.15.222 (semver) Affected: 4.14.279 , < 4.15 (semver) Affected: 4.19.243 , < 4.20 (semver) Affected: 5.4.193 , < 5.5 (semver) Affected: 5.10.109 , < 5.11 (semver) Affected: 5.16.18 , < 5.17 (semver) Affected: 5.17.1 , < 5.18 (semver) |
guessed | |
| Linux | Linux |
Affected:
5.18
Unaffected: 0 , < 5.18 (semver) Unaffected: 5.15.222 , ≤ 5.15.* (semver) Unaffected: 6.1.189 , ≤ 6.1.* (semver) Unaffected: 6.6.158 , ≤ 6.6.* (semver) Unaffected: 6.12.111 , ≤ 6.12.* (semver) Unaffected: 6.18.53 , ≤ 6.18.* (semver) Unaffected: 7.2.7 , ≤ 7.2.* (semver) Unaffected: 7.3 , ≤ * (original_commit_for_fix) |
guessed |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"sound/core/pcm_native.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "e6cdd2a0470d64073349a970dc1691433804b271",
"status": "affected",
"version": "33061d0fba51d2bf70a2ef9645f703c33fe8e438",
"versionType": "git"
},
{
"lessThan": "9857a75714bb5df4781e4d8b1a1753b1e17bf07a",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "cbadf2575d25e7dcc0d4da2717817ae569fbc99b",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "cbc7ec97601d09b74e05e44470fa6b0bcdabf3f5",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "fd137bf8149bc6460f9b7b1fc292025da04cb9ee",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "8c1882dfee8f404d118020664b73eb4592172226",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "9b110a9dcecc59516c77cb3c0caf1f492f75df2d",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"status": "affected",
"version": "a42aa926843acca96c0dfbde2e835b8137f2f092",
"versionType": "git"
},
{
"status": "affected",
"version": "9cb6c40a6ebe4a0cfc9d6a181958211682cffea9",
"versionType": "git"
},
{
"status": "affected",
"version": "fbeb492694ce0441053de57699e1e2b7bc148a69",
"versionType": "git"
},
{
"status": "affected",
"version": "0f6947f5f5208f6ebd4d76a82a4757e2839a23f8",
"versionType": "git"
},
{
"status": "affected",
"version": "0090c13cbbdffd7da079ac56f80373a9a1be0bf8",
"versionType": "git"
},
{
"status": "affected",
"version": "1bbf82d9f961414d6c76a08f7f843ea068e0ab7b",
"versionType": "git"
},
{
"lessThan": "5.15.222",
"status": "affected",
"version": "5.15.32",
"versionType": "semver"
},
{
"lessThan": "4.15",
"status": "affected",
"version": "4.14.279",
"versionType": "semver"
},
{
"lessThan": "4.20",
"status": "affected",
"version": "4.19.243",
"versionType": "semver"
},
{
"lessThan": "5.5",
"status": "affected",
"version": "5.4.193",
"versionType": "semver"
},
{
"lessThan": "5.11",
"status": "affected",
"version": "5.10.109",
"versionType": "semver"
},
{
"lessThan": "5.17",
"status": "affected",
"version": "5.16.18",
"versionType": "semver"
},
{
"lessThan": "5.18",
"status": "affected",
"version": "5.17.1",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"sound/core/pcm_native.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.18"
},
{
"lessThan": "5.18",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.222",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.189",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.158",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.111",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.53",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.7",
"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.15.222",
"versionStartIncluding": "5.15.32",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.189",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.158",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.111",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.53",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.7",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.14.279",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "4.19.243",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.4.193",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.10.109",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.16.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.17.1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF\n\nsnd_pcm_hw_params() and snd_pcm_hw_free() guard buffer reallocation\nwith an mmap_count check performed under the PCM stream lock, but the\nlock is released long before the buffer is actually freed:\nsnd_pcm_sync_stop(), constraint refinement and do_free_pages() all\nhappen in between. snd_pcm_mmap_data(), on the other hand, takes no\nlock at all: it validates against the old buffer\u0027s state and\ndma_bytes, remaps its pages into the VMA, and only then increments\nmmap_count.\n\nA concurrent mmap() can therefore slip in between the check and the\nfree. remap_pfn_range() installs writable PTEs for the old buffer\u0027s\npages without taking page references, and the subsequent\ndo_free_pages() returns those pages to the page allocator while the\nVMA still maps them. This leaves a stale, writable mapping of freed\npages: a page-level use-after-free that can be leveraged for local\nprivilege escalation.\n\nMake snd_pcm_mmap_data() participate in the buffer-access scheme\nintroduced for hw_params/hw_free: acquire runtime-\u003ebuffer_accessing\nbefore validating and remapping, and release it afterwards. Buffer\nreallocation already fails with -EBUSY while accessors are active,\nand the mmap side now fails with -EBUSY while a reallocation is in\nprogress, so the validate/remap sequence and the check/free sequence\ncan no longer interleave.\n\nA reproducer that turns this race into a stale writable mapping of\nthe freed DMA buffer pages is available on request."
}
],
"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 triggered by mmap() on a local /dev/snd/pcmC*D* file descriptor (snd_pcm_mmap -\u003e snd_pcm_mmap_data) racing with SNDRV_PCM_IOCTL_HW_PARAMS/HW_FREE ioctls on the same fd. No remote protocol carries any of the inputs.\nAC:L - One process controls both sides of the race: one thread calls mmap() and another calls hw_free/hw_params. The window runs from the mmap_count check under the stream lock through snd_pcm_sync_stop and refinement to do_free_pages, and the attacker can retry as often as needed.\nPR:L - Opening the PCM device node takes ordinary local user access, either the audio group or the udev uaccess ACL given to the logged-in seat user. No capability is checked on the mmap or hw_params/hw_free paths.\nUI:N - The attacker opens the device, sets hw_params and races the mmap against hw_free entirely through their own syscalls. No other user has to do anything.\nS:U - This is a local kernel privilege escalation within the same kernel security authority. It crosses no VM or IOMMU boundary.\nC:H - remap_pfn_range installs PTEs for the old DMA buffer pages without taking page references, and do_free_pages then frees them. The attacker keeps a direct mapping of whatever the page allocator reuses those pages for, such as page tables, cred or slab pages, and can read it.\nI:H - The stale mapping of the freed buffer pages is writable, which gives direct write access to reallocated kernel pages. This is a page-level UAF that enables privilege escalation, as the fix commit itself states.\nA:H - Writing through the stale PTEs into pages that have been reallocated corrupts arbitrary kernel memory, which leads to oopses, panics or page-state BUGs."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T09:14:08.504Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/e6cdd2a0470d64073349a970dc1691433804b271"
},
{
"url": "https://git.kernel.org/stable/c/9857a75714bb5df4781e4d8b1a1753b1e17bf07a"
},
{
"url": "https://git.kernel.org/stable/c/cbadf2575d25e7dcc0d4da2717817ae569fbc99b"
},
{
"url": "https://git.kernel.org/stable/c/cbc7ec97601d09b74e05e44470fa6b0bcdabf3f5"
},
{
"url": "https://git.kernel.org/stable/c/fd137bf8149bc6460f9b7b1fc292025da04cb9ee"
},
{
"url": "https://git.kernel.org/stable/c/8c1882dfee8f404d118020664b73eb4592172226"
},
{
"url": "https://git.kernel.org/stable/c/9b110a9dcecc59516c77cb3c0caf1f492f75df2d"
}
],
"title": "ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-98116",
"datePublished": "2026-09-25T10:36:01.723Z",
"dateReserved": "2026-09-25T10:25:14.317Z",
"dateUpdated": "2026-10-19T09:14:08.504Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-98116",
"date": "2026-11-14",
"epss": "0.00126",
"percentile": "0.02341"
},
"microsoft_vex": {
"current_release_date": "2026-10-21T18:40:26.000Z",
"cve": "CVE-2026-98116",
"id": "msrc_CVE-2026-98116",
"initial_release_date": "2026-09-28T00:00:52.000Z",
"product_status:fixed": "1",
"product_status:known_affected": "1",
"product_status:under_investigation": "1",
"source": "Microsoft CSAF VEX",
"status": "final",
"title": "ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF",
"url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-98116.json",
"version": "5"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"sound/core/pcm_native.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "e6cdd2a0470d64073349a970dc1691433804b271",
"status": "affected",
"version": "33061d0fba51d2bf70a2ef9645f703c33fe8e438",
"versionType": "git"
},
{
"lessThan": "9857a75714bb5df4781e4d8b1a1753b1e17bf07a",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "cbadf2575d25e7dcc0d4da2717817ae569fbc99b",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "cbc7ec97601d09b74e05e44470fa6b0bcdabf3f5",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "fd137bf8149bc6460f9b7b1fc292025da04cb9ee",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "8c1882dfee8f404d118020664b73eb4592172226",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"lessThan": "9b110a9dcecc59516c77cb3c0caf1f492f75df2d",
"status": "affected",
"version": "92ee3c60ec9fe64404dc035e7c41277d74aa26cb",
"versionType": "git"
},
{
"status": "affected",
"version": "a42aa926843acca96c0dfbde2e835b8137f2f092",
"versionType": "git"
},
{
"status": "affected",
"version": "9cb6c40a6ebe4a0cfc9d6a181958211682cffea9",
"versionType": "git"
},
{
"status": "affected",
"version": "fbeb492694ce0441053de57699e1e2b7bc148a69",
"versionType": "git"
},
{
"status": "affected",
"version": "0f6947f5f5208f6ebd4d76a82a4757e2839a23f8",
"versionType": "git"
},
{
"status": "affected",
"version": "0090c13cbbdffd7da079ac56f80373a9a1be0bf8",
"versionType": "git"
},
{
"status": "affected",
"version": "1bbf82d9f961414d6c76a08f7f843ea068e0ab7b",
"versionType": "git"
},
{
"lessThan": "5.15.222",
"status": "affected",
"version": "5.15.32",
"versionType": "semver"
},
{
"lessThan": "4.15",
"status": "affected",
"version": "4.14.279",
"versionType": "semver"
},
{
"lessThan": "4.20",
"status": "affected",
"version": "4.19.243",
"versionType": "semver"
},
{
"lessThan": "5.5",
"status": "affected",
"version": "5.4.193",
"versionType": "semver"
},
{
"lessThan": "5.11",
"status": "affected",
"version": "5.10.109",
"versionType": "semver"
},
{
"lessThan": "5.17",
"status": "affected",
"version": "5.16.18",
"versionType": "semver"
},
{
"lessThan": "5.18",
"status": "affected",
"version": "5.17.1",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"sound/core/pcm_native.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "5.18"
},
{
"lessThan": "5.18",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.222",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.189",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.158",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.111",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.53",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.7",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"configurations": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "74A30740-4A22-4010-9DE2-ECC961DA4E1F",
"versionEndExcluding": "4.15",
"versionStartIncluding": "4.14.279",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "377B69E2-76BA-4327-8D8D-9E978D218DFC",
"versionEndExcluding": "4.20",
"versionStartIncluding": "4.19.243",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "AFD473DD-DFA3-44BB-B228-3D4572832AF3",
"versionEndExcluding": "5.5",
"versionStartIncluding": "5.4.193",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "B08717F2-D179-40D5-9380-75A360456651",
"versionEndExcluding": "5.11",
"versionStartIncluding": "5.10.109",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "AF7A01DF-61B5-4270-AD0E-63B8C4DD81F0",
"versionEndExcluding": "5.15.222",
"versionStartIncluding": "5.15.32",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "13C4237C-3C38-4C41-BFB6-8BD2D9EF33BF",
"versionEndIncluding": "5.17.1",
"versionStartIncluding": "5.16.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "47BC31C9-3D9E-4B96-B5F8-291D6AD55D81",
"versionEndExcluding": "6.12.111",
"versionStartIncluding": "6.7",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "7561AABB-6D5A-4324-BC66-C6C6B012AFD8",
"versionEndExcluding": "6.18.53",
"versionStartIncluding": "6.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "19917B2D-B4B2-4416-A482-9C7C4929A921",
"versionEndExcluding": "7.2.7",
"versionStartIncluding": "6.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:7.3:rc1:*:*:*:*:*:*",
"matchCriteriaId": "11E35E1B-5DB4-4AB9-9706-CD73B799EADF",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF\n\nsnd_pcm_hw_params() and snd_pcm_hw_free() guard buffer reallocation\nwith an mmap_count check performed under the PCM stream lock, but the\nlock is released long before the buffer is actually freed:\nsnd_pcm_sync_stop(), constraint refinement and do_free_pages() all\nhappen in between. snd_pcm_mmap_data(), on the other hand, takes no\nlock at all: it validates against the old buffer\u0027s state and\ndma_bytes, remaps its pages into the VMA, and only then increments\nmmap_count.\n\nA concurrent mmap() can therefore slip in between the check and the\nfree. remap_pfn_range() installs writable PTEs for the old buffer\u0027s\npages without taking page references, and the subsequent\ndo_free_pages() returns those pages to the page allocator while the\nVMA still maps them. This leaves a stale, writable mapping of freed\npages: a page-level use-after-free that can be leveraged for local\nprivilege escalation.\n\nMake snd_pcm_mmap_data() participate in the buffer-access scheme\nintroduced for hw_params/hw_free: acquire runtime-\u003ebuffer_accessing\nbefore validating and remapping, and release it afterwards. Buffer\nreallocation already fails with -EBUSY while accessors are active,\nand the mmap side now fails with -EBUSY while a reallocation is in\nprogress, so the validate/remap sequence and the check/free sequence\ncan no longer interleave.\n\nA reproducer that turns this race into a stale writable mapping of\nthe freed DMA buffer pages is available on request."
}
],
"id": "CVE-2026-98116",
"lastModified": "2026-10-28T16:10:22.600",
"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-25T11:17:42.780",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/8c1882dfee8f404d118020664b73eb4592172226"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/9857a75714bb5df4781e4d8b1a1753b1e17bf07a"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/9b110a9dcecc59516c77cb3c0caf1f492f75df2d"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/cbadf2575d25e7dcc0d4da2717817ae569fbc99b"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/cbc7ec97601d09b74e05e44470fa6b0bcdabf3f5"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/e6cdd2a0470d64073349a970dc1691433804b271"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/fd137bf8149bc6460f9b7b1fc292025da04cb9ee"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Analyzed",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-416"
}
],
"source": "nvd@nist.gov",
"type": "Primary"
}
]
}
},
"redhat_vex": {
"aggregate_severity": "Important",
"current_release_date": "2026-11-12T05:33:45+00:00",
"cve": "CVE-2026-98116",
"id": "CVE-2026-98116",
"initial_release_date": "2026-09-25T00:00:00+00:00",
"product_status:fixed": "1122",
"product_status:known_affected": "23",
"product_status:known_not_affected": "42",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "kernel: ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-98116.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.