CVE-2026-23306 (GCVE-0-2026-23306)
Vulnerability from cvelistv5 – Published: 2026-03-25 10:27 – Updated: 2026-08-05 12:21| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Linux | Linux |
Affected:
e29c47fe8946cc732b0e0d393b65b13c84bb69d0 , < ebbb852ffbc952b95ddb7e3872b67b3e74c6da47
(git)
Affected: e29c47fe8946cc732b0e0d393b65b13c84bb69d0 , < 8b00427317ba7b7ec91252b034009f638d0f311b (git) Affected: e29c47fe8946cc732b0e0d393b65b13c84bb69d0 , < c5dc39f8ae055520fd778b7fb0423f11586f15c4 (git) Affected: e29c47fe8946cc732b0e0d393b65b13c84bb69d0 , < 824a7672e3540962d5c77d4c6666254d7aa6f0b3 (git) Affected: e29c47fe8946cc732b0e0d393b65b13c84bb69d0 , < 227ff4af00abc40b95123cc27ee8079069dcd8d7 (git) Affected: e29c47fe8946cc732b0e0d393b65b13c84bb69d0 , < 38353c26db28efd984f51d426eac2396d299cca7 (git) |
guessed | |
| Linux | Linux |
Affected:
5.18
Unaffected: 0 , < 5.18 (semver) Unaffected: 6.1.167 , ≤ 6.1.* (semver) Unaffected: 6.6.130 , ≤ 6.6.* (semver) Unaffected: 6.12.77 , ≤ 6.12.* (semver) Unaffected: 6.18.17 , ≤ 6.18.* (semver) Unaffected: 6.19.7 , ≤ 6.19.* (semver) Unaffected: 7.0 , ≤ * (original_commit_for_fix) |
guessed |
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/scsi/pm8001/pm8001_sas.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "ebbb852ffbc952b95ddb7e3872b67b3e74c6da47",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "8b00427317ba7b7ec91252b034009f638d0f311b",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "c5dc39f8ae055520fd778b7fb0423f11586f15c4",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "824a7672e3540962d5c77d4c6666254d7aa6f0b3",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "227ff4af00abc40b95123cc27ee8079069dcd8d7",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "38353c26db28efd984f51d426eac2396d299cca7",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/scsi/pm8001/pm8001_sas.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": "6.1.*",
"status": "unaffected",
"version": "6.1.167",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.130",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.77",
"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",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.167",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.130",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.77",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.17",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.19.7",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.0",
"versionStartIncluding": "5.18",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: pm8001: Fix use-after-free in pm8001_queue_command()\n\nCommit e29c47fe8946 (\"scsi: pm8001: Simplify pm8001_task_exec()\") refactors\npm8001_queue_command(), however it introduces a potential cause of a double\nfree scenario when it changes the function to return -ENODEV in case of phy\ndown/device gone state.\n\nIn this path, pm8001_queue_command() updates task status and calls\ntask_done to indicate to upper layer that the task has been handled.\nHowever, this also frees the underlying SAS task. A -ENODEV is then\nreturned to the caller. When libsas sas_ata_qc_issue() receives this error\nvalue, it assumes the task wasn\u0027t handled/queued by LLDD and proceeds to\nclean up and free the task again, resulting in a double free.\n\nSince pm8001_queue_command() handles the SAS task in this case, it should\nreturn 0 to the caller indicating that the task has been handled."
}
],
"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 pm8001 is a PCI-based SAS/SATA host bus adapter driver. Triggering this vulnerability requires local access to submit SCSI/ATA commands to a device managed by this HBA, which is done through local SCSI device interfaces.\nAC:L - The vulnerability triggers deterministically when I/O is submitted to a SATA device that is in the \"gone\" state. The attacker can control the device removal (e.g., by physically disconnecting a SATA drive or through hotplug) and then issue I/O, reliably triggering the double-free.\nPR:L - Submitting SCSI commands requires access to SCSI device files (e.g., /dev/sdX), which typically requires at least basic user-level access with appropriate device permissions. Root is not strictly required if the user has group access to the device.\nUI:N - No user interaction is required. The attacker can trigger the vulnerability by issuing I/O commands to a gone device independently.\nS:U - The vulnerability affects the kernel within its own security authority. There is no crossing of a security boundary such as a VM escape or sandbox escape.\nC:H - A double-free on slab memory (kmem_cache) is a powerful exploitation primitive. Through heap spraying, an attacker can control the contents of the reallocated object, potentially achieving arbitrary kernel memory read capabilities.\nI:H - The double-free allows an attacker to reclaim the freed slab object with controlled data, enabling type confusion and arbitrary kernel memory write primitives that can lead to code execution.\nA:H - The double-free will at minimum cause a kernel crash/panic when the slab allocator detects corruption, and can also be used to cause repeated crashes for denial of service."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-05T12:21:11.431Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/ebbb852ffbc952b95ddb7e3872b67b3e74c6da47"
},
{
"url": "https://git.kernel.org/stable/c/8b00427317ba7b7ec91252b034009f638d0f311b"
},
{
"url": "https://git.kernel.org/stable/c/c5dc39f8ae055520fd778b7fb0423f11586f15c4"
},
{
"url": "https://git.kernel.org/stable/c/824a7672e3540962d5c77d4c6666254d7aa6f0b3"
},
{
"url": "https://git.kernel.org/stable/c/227ff4af00abc40b95123cc27ee8079069dcd8d7"
},
{
"url": "https://git.kernel.org/stable/c/38353c26db28efd984f51d426eac2396d299cca7"
}
],
"title": "scsi: pm8001: Fix use-after-free in pm8001_queue_command()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-23306",
"datePublished": "2026-03-25T10:27:01.719Z",
"dateReserved": "2026-01-13T15:37:45.993Z",
"dateUpdated": "2026-08-05T12:21:11.431Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-23306",
"date": "2026-11-14",
"epss": "0.00133",
"percentile": "0.02937"
},
"microsoft_vex": {
"current_release_date": "2026-03-27T14:40:42.000Z",
"cve": "CVE-2026-23306",
"id": "msrc_CVE-2026-23306",
"initial_release_date": "2026-03-02T00:00:00.000Z",
"product_status:fixed": "1",
"product_status:known_affected": "1",
"source": "Microsoft CSAF VEX",
"status": "final",
"title": "scsi: pm8001: Fix use-after-free in pm8001_queue_command()",
"url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-23306.json",
"version": "2"
},
"nvd": {
"cve": {
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/scsi/pm8001/pm8001_sas.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "ebbb852ffbc952b95ddb7e3872b67b3e74c6da47",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "8b00427317ba7b7ec91252b034009f638d0f311b",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "c5dc39f8ae055520fd778b7fb0423f11586f15c4",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "824a7672e3540962d5c77d4c6666254d7aa6f0b3",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "227ff4af00abc40b95123cc27ee8079069dcd8d7",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
},
{
"lessThan": "38353c26db28efd984f51d426eac2396d299cca7",
"status": "affected",
"version": "e29c47fe8946cc732b0e0d393b65b13c84bb69d0",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/scsi/pm8001/pm8001_sas.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": "6.1.*",
"status": "unaffected",
"version": "6.1.167",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.130",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.77",
"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",
"versionType": "original_commit_for_fix"
}
]
}
],
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"configurations": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "25D24035-467E-4E84-987E-DA8067ECEAC4",
"versionEndExcluding": "6.1.167",
"versionStartIncluding": "5.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "C57BB918-DF28-46B3-94F7-144176841267",
"versionEndExcluding": "6.6.130",
"versionStartIncluding": "6.2",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "B3D12E00-E42D-4056-B354-BAD4903C03A5",
"versionEndExcluding": "6.12.77",
"versionStartIncluding": "6.7",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "A5E006E4-59C7-43C1-9231-62A72219F2BA",
"versionEndExcluding": "6.18.17",
"versionStartIncluding": "6.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "69245D10-0B71-485E-80C3-A64F077004D3",
"versionEndExcluding": "6.19.7",
"versionStartIncluding": "6.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*",
"matchCriteriaId": "F253B622-8837-4245-BCE5-A7BF8FC76A16",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: pm8001: Fix use-after-free in pm8001_queue_command()\n\nCommit e29c47fe8946 (\"scsi: pm8001: Simplify pm8001_task_exec()\") refactors\npm8001_queue_command(), however it introduces a potential cause of a double\nfree scenario when it changes the function to return -ENODEV in case of phy\ndown/device gone state.\n\nIn this path, pm8001_queue_command() updates task status and calls\ntask_done to indicate to upper layer that the task has been handled.\nHowever, this also frees the underlying SAS task. A -ENODEV is then\nreturned to the caller. When libsas sas_ata_qc_issue() receives this error\nvalue, it assumes the task wasn\u0027t handled/queued by LLDD and proceeds to\nclean up and free the task again, resulting in a double free.\n\nSince pm8001_queue_command() handles the SAS task in this case, it should\nreturn 0 to the caller indicating that the task has been handled."
},
{
"lang": "es",
"value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nscsi: pm8001: Correcci\u00f3n de uso despu\u00e9s de liberaci\u00f3n en pm8001_queue_command()\n\nEl commit e29c47fe8946 (\u0027scsi: pm8001: Simplificar pm8001_task_exec()\u0027) refactoriza pm8001_queue_command(), sin embargo, introduce una causa potencial de un escenario de doble liberaci\u00f3n cuando cambia la funci\u00f3n para que devuelva -ENODEV en caso de estado de phy inactivo/dispositivo desaparecido.\n\nEn esta ruta, pm8001_queue_command() actualiza el estado de la tarea y llama a task_done para indicar a la capa superior que la tarea ha sido gestionada. Sin embargo, esto tambi\u00e9n libera la tarea SAS subyacente. Entonces se devuelve un -ENODEV al llamador. Cuando libsas sas_ata_qc_issue() recibe este valor de error, asume que la tarea no fue gestionada/enviada a la cola por LLDD y procede a limpiar y liberar la tarea de nuevo, resultando en una doble liberaci\u00f3n.\n\nDado que pm8001_queue_command() gestiona la tarea SAS en este caso, deber\u00eda devolver 0 al llamador indicando que la tarea ha sido gestionada."
}
],
"id": "CVE-2026-23306",
"lastModified": "2026-06-17T10:21:17.810",
"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-03-25T11:16:26.487",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/227ff4af00abc40b95123cc27ee8079069dcd8d7"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/38353c26db28efd984f51d426eac2396d299cca7"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/824a7672e3540962d5c77d4c6666254d7aa6f0b3"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/8b00427317ba7b7ec91252b034009f638d0f311b"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/c5dc39f8ae055520fd778b7fb0423f11586f15c4"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/ebbb852ffbc952b95ddb7e3872b67b3e74c6da47"
}
],
"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": "Moderate",
"current_release_date": "2026-11-07T04:12:10+00:00",
"cve": "CVE-2026-23306",
"id": "CVE-2026-23306",
"initial_release_date": "2026-03-25T00:00:00+00:00",
"product_status:known_affected": "14",
"product_status:known_not_affected": "186",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "kernel: scsi: pm8001: Fix use-after-free in pm8001_queue_command()",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-23306.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.