CVE-2026-23248 (GCVE-0-2026-23248)
Vulnerability from cvelistv5 – Published: 2026-03-18 10:05 – Updated: 2026-03-18 16:21
VLAI?
Title
perf/core: Fix refcount bug and potential UAF in perf_mmap
Summary
In the Linux kernel, the following vulnerability has been resolved:
perf/core: Fix refcount bug and potential UAF in perf_mmap
Syzkaller reported a refcount_t: addition on 0; use-after-free warning
in perf_mmap.
The issue is caused by a race condition between a failing mmap() setup
and a concurrent mmap() on a dependent event (e.g., using output
redirection).
In perf_mmap(), the ring_buffer (rb) is allocated and assigned to
event->rb with the mmap_mutex held. The mutex is then released to
perform map_range().
If map_range() fails, perf_mmap_close() is called to clean up.
However, since the mutex was dropped, another thread attaching to
this event (via inherited events or output redirection) can acquire
the mutex, observe the valid event->rb pointer, and attempt to
increment its reference count. If the cleanup path has already
dropped the reference count to zero, this results in a
use-after-free or refcount saturation warning.
Fix this by extending the scope of mmap_mutex to cover the
map_range() call. This ensures that the ring buffer initialization
and mapping (or cleanup on failure) happens atomically effectively,
preventing other threads from accessing a half-initialized or
dying ring buffer.
Severity ?
No CVSS data available.
Assigner
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Linux | Linux |
Affected:
b709eb872e19a19607bbb6d2975bc264d59735cf , < c27dea9f50ed525facb62ef647dddc4722456e07
(git)
Affected: b709eb872e19a19607bbb6d2975bc264d59735cf , < ac7ecb65af170a7fc193e7bd8be15dac84ec6a56 (git) Affected: b709eb872e19a19607bbb6d2975bc264d59735cf , < 77de62ad3de3967818c3dbe656b7336ebee461d2 (git) |
||
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"kernel/events/core.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "c27dea9f50ed525facb62ef647dddc4722456e07",
"status": "affected",
"version": "b709eb872e19a19607bbb6d2975bc264d59735cf",
"versionType": "git"
},
{
"lessThan": "ac7ecb65af170a7fc193e7bd8be15dac84ec6a56",
"status": "affected",
"version": "b709eb872e19a19607bbb6d2975bc264d59735cf",
"versionType": "git"
},
{
"lessThan": "77de62ad3de3967818c3dbe656b7336ebee461d2",
"status": "affected",
"version": "b709eb872e19a19607bbb6d2975bc264d59735cf",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"kernel/events/core.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "6.14"
},
{
"lessThan": "6.14",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.17",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.19.*",
"status": "unaffected",
"version": "6.19.7",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.0-rc2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.17",
"versionStartIncluding": "6.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.19.7",
"versionStartIncluding": "6.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.0-rc2",
"versionStartIncluding": "6.14",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nperf/core: Fix refcount bug and potential UAF in perf_mmap\n\nSyzkaller reported a refcount_t: addition on 0; use-after-free warning\nin perf_mmap.\n\nThe issue is caused by a race condition between a failing mmap() setup\nand a concurrent mmap() on a dependent event (e.g., using output\nredirection).\n\nIn perf_mmap(), the ring_buffer (rb) is allocated and assigned to\nevent-\u003erb with the mmap_mutex held. The mutex is then released to\nperform map_range().\n\nIf map_range() fails, perf_mmap_close() is called to clean up.\nHowever, since the mutex was dropped, another thread attaching to\nthis event (via inherited events or output redirection) can acquire\nthe mutex, observe the valid event-\u003erb pointer, and attempt to\nincrement its reference count. If the cleanup path has already\ndropped the reference count to zero, this results in a\nuse-after-free or refcount saturation warning.\n\nFix this by extending the scope of mmap_mutex to cover the\nmap_range() call. This ensures that the ring buffer initialization\nand mapping (or cleanup on failure) happens atomically effectively,\npreventing other threads from accessing a half-initialized or\ndying ring buffer."
}
],
"providerMetadata": {
"dateUpdated": "2026-03-18T16:21:48.553Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/c27dea9f50ed525facb62ef647dddc4722456e07"
},
{
"url": "https://git.kernel.org/stable/c/ac7ecb65af170a7fc193e7bd8be15dac84ec6a56"
},
{
"url": "https://git.kernel.org/stable/c/77de62ad3de3967818c3dbe656b7336ebee461d2"
}
],
"title": "perf/core: Fix refcount bug and potential UAF in perf_mmap",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-23248",
"datePublished": "2026-03-18T10:05:10.070Z",
"dateReserved": "2026-01-13T15:37:45.989Z",
"dateUpdated": "2026-03-18T16:21:48.553Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"nvd": "{\"cve\":{\"id\":\"CVE-2026-23248\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-03-18T11:16:16.863\",\"lastModified\":\"2026-03-18T14:52:44.227\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nperf/core: Fix refcount bug and potential UAF in perf_mmap\\n\\nSyzkaller reported a refcount_t: addition on 0; use-after-free warning\\nin perf_mmap.\\n\\nThe issue is caused by a race condition between a failing mmap() setup\\nand a concurrent mmap() on a dependent event (e.g., using output\\nredirection).\\n\\nIn perf_mmap(), the ring_buffer (rb) is allocated and assigned to\\nevent-\u003erb with the mmap_mutex held. The mutex is then released to\\nperform map_range().\\n\\nIf map_range() fails, perf_mmap_close() is called to clean up.\\nHowever, since the mutex was dropped, another thread attaching to\\nthis event (via inherited events or output redirection) can acquire\\nthe mutex, observe the valid event-\u003erb pointer, and attempt to\\nincrement its reference count. If the cleanup path has already\\ndropped the reference count to zero, this results in a\\nuse-after-free or refcount saturation warning.\\n\\nFix this by extending the scope of mmap_mutex to cover the\\nmap_range() call. This ensures that the ring buffer initialization\\nand mapping (or cleanup on failure) happens atomically effectively,\\npreventing other threads from accessing a half-initialized or\\ndying ring buffer.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/77de62ad3de3967818c3dbe656b7336ebee461d2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ac7ecb65af170a7fc193e7bd8be15dac84ec6a56\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c27dea9f50ed525facb62ef647dddc4722456e07\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}"
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
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.
Loading…
Loading…