CVE-2026-90268 (GCVE-0-2026-90268)
Vulnerability from cvelistv5
Published
2026-09-17 16:08
Modified
2026-10-19 09:00
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
scsi: sd: Fix error handling in sd_probe() after large pool creation failure
After device_add(&sdkp->disk_dev) succeeds, sd_large_pool_create()
failure must unregister disk_dev and let scsi_disk_release() free
sdkp. Going through out_free_index kfree()s an already registered device
and leaks the sysfs entry.
References
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/scsi/sd.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "748a14a0d41cfe3017251c11b314f85045414942",
"status": "affected",
"version": "7179e626b76eb42f2529c6f6dd6ba88ea2445372",
"versionType": "git"
},
{
"lessThan": "e3cc6ea1a745e7f5d326f919a428b244fa119d8f",
"status": "affected",
"version": "7179e626b76eb42f2529c6f6dd6ba88ea2445372",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/scsi/sd.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "7.1"
},
{
"lessThan": "7.1",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.6",
"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": "7.2.6",
"versionStartIncluding": "7.1",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3",
"versionStartIncluding": "7.1",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nscsi: sd: Fix error handling in sd_probe() after large pool creation failure\n\nAfter device_add(\u0026sdkp-\u003edisk_dev) succeeds, sd_large_pool_create()\nfailure must unregister disk_dev and let scsi_disk_release() free\nsdkp. Going through out_free_index kfree()s an already registered device\nand leaks the sysfs entry."
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 8.1,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:N - After iscsi_scan_session()-\u003escsi_scan_target()-\u003escsi_probe_and_add_lun() binds TYPE_DISK, sd_probe()-\u003esd_revalidate_disk()-\u003eread_capacity_16() takes the Logical Block Length from the target\u2019s READ CAPACITY(16) Data-In at buffer[8] (or READ CAPACITY(10) at buffer[4]) over iSCSI TCP; that value is what enters the sd_large_pool_create() error path.\nAC:H - The bad goto is taken only when sd_large_page_pool is still NULL and mempool_create_page_pool(SD_MEMPOOL_SIZE=2, get_order(BLK_MAX_BLOCK_SIZE)) fails its GFP_KERNEL order-4 preallocation of two 64K pages; a remote target cannot force that allocator failure or whether an earlier large-sector disk already created the pool.\nPR:N - The attacker is the iSCSI target supplying INQUIRY PDT=TYPE_DISK and the READ CAPACITY block length during automatic LUN scan; scsi_bus_probe()-\u003esd_probe() runs on the initiator with no capability check against the target, and iSCSI is commonly deployed without CHAP.\nUI:N - Once the session is ISCSI_SESSION_LOGGED_IN, iscsi_scan_session work calls scsi_scan_target, which invokes sd_probe and sd_revalidate_disk with no open(), mount, or operator action; the target alone presents the LUN and the capacity response.\nS:U - kfree(sdkp) while sdkp-\u003edisk_dev remains registered after device_add() corrupts only the initiator kernel\u2019s device-model/sysfs state for that scsi_disk; it does not cross a VM, IOMMU, or other security-authority boundary.\nC:H - out_free_index kfree()s the scsi_disk that embeds the still-registered disk_dev, so later sysfs reads of sd_disk_groups attributes via to_scsi_disk() and scsi_disk_release() operate on a freed heap object, giving a use-after-free read primitive.\nI:H - The same kfree leaves disk_dev, gd-\u003eprivate_data, and the sdev drvdata set by dev_set_drvdata() pointing at freed sdkp; writable scsi_disk sysfs stores and scsi_disk_release()\u2019s second kfree/ida_free then write through that UAF, enabling heap corruption and control-flow hijack.\nA:H - Use-after-free of the registered scsi_disk, including scsi_disk_release() running on already-freed memory (double-free of sdkp and a second ida_free of sdkp-\u003eindex), oopses or panics when udev, sysfs, or parent sdev removal touches disk_dev."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T09:00:45.863Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/748a14a0d41cfe3017251c11b314f85045414942"
},
{
"url": "https://git.kernel.org/stable/c/e3cc6ea1a745e7f5d326f919a428b244fa119d8f"
}
],
"title": "scsi: sd: Fix error handling in sd_probe() after large pool creation failure",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-90268",
"datePublished": "2026-09-17T16:08:03.312Z",
"dateReserved": "2026-09-11T19:38:34.796Z",
"dateUpdated": "2026-10-19T09:00:45.863Z",
"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…