242 lines
13 KiB
JSON
242 lines
13 KiB
JSON
{
|
|
"dataType": "CVE_RECORD",
|
|
"dataVersion": "5.2",
|
|
"cveMetadata": {
|
|
"cveId": "CVE-2025-22068",
|
|
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
|
|
"state": "PUBLISHED",
|
|
"assignerShortName": "Linux",
|
|
"dateReserved": "2024-12-29T08:45:45.814Z",
|
|
"datePublished": "2025-04-16T14:12:21.436Z",
|
|
"dateUpdated": "2026-08-05T11:56:29.279Z"
|
|
},
|
|
"containers": {
|
|
"cna": {
|
|
"providerMetadata": {
|
|
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
|
|
"shortName": "Linux",
|
|
"dateUpdated": "2026-08-05T11:56:29.279Z"
|
|
},
|
|
"descriptions": [
|
|
{
|
|
"lang": "en",
|
|
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nublk: make sure ubq->canceling is set when queue is frozen\n\nNow ublk driver depends on `ubq->canceling` for deciding if the request\ncan be dispatched via uring_cmd & io_uring_cmd_complete_in_task().\n\nOnce ubq->canceling is set, the uring_cmd can be done via ublk_cancel_cmd()\nand io_uring_cmd_done().\n\nSo set ubq->canceling when queue is frozen, this way makes sure that the\nflag can be observed from ublk_queue_rq() reliably, and avoids\nuse-after-free on uring_cmd."
|
|
}
|
|
],
|
|
"metrics": [
|
|
{
|
|
"cvssV3_1": {
|
|
"version": "3.1",
|
|
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
|
|
"baseScore": 7.8,
|
|
"baseSeverity": "HIGH"
|
|
},
|
|
"scenarios": [
|
|
{
|
|
"lang": "en",
|
|
"value": "AV:L - Triggering requires local access to the ublk control/char/block devices (`/dev/ublk-control`, `/dev/ublkcN`, `/dev/ublkbN`) and io_uring syscalls. There is no remote or adjacent-network path into `ublk_queue_rq()` or the uring_cmd cancel handler.\nAC:L - The attacker controls both sides of the race — it submits a continuous block-I/O stream to its own ublk block device while concurrently closing the io_uring ring or killing the ublk server task to drive `ublk_uring_cmd_cancel_fn()` → `ublk_abort_requests()`. The window can be retried indefinitely at no cost, and ublk is enabled in mainstream distribution kernels.\nPR:L - `ublk_ctrl_add_dev()` explicitly allows a caller without CAP_SYS_ADMIN to create a device with `UBLK_F_UNPRIVILEGED_DEV`, with subsequent control commands gated only by `inode_permission()` on the owner-owned char device, so an ordinary local user can create, serve and issue I/O to a ublk device. Even for admin-created devices, the ublk server daemon and the exposed block device are routinely driven by non-root contexts.\nUI:N - The attacker performs every step itself — creating the device, running the server, submitting I/O, and tearing down the io_uring ring. No action by any other user or administrator is needed.\nS:U - The corruption is of an io_uring `io_kiocb` inside the kernel, exploited from a local process; impact stays within the kernel's own security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - This is a use-after-free on the uring_cmd/`io_kiocb`: the freed object is re-read (`ioucmd->task_work_cb`, `req->ctx`, `req->io_task_work`) after reallocation, and the resulting controlled call/deref can be steered into an arbitrary kernel-memory disclosure primitive via the io_uring completion path.\nI:H - `__io_uring_cmd_do_in_task()` writes `task_work_cb` and `io_task_work.func` into the already-freed request and links it onto the ring's task-work list, and `io_uring_cmd_work()` then performs an indirect call through a function pointer sourced from that freed, heap-sprayable slab object — a write plus control-flow-hijack primitive leading to privilege escalation.\nA:H - Even unweaponized, the double-use of the uring_cmd causes double completion and use-after-free of the io_uring request, producing kernel oops/panic; the sibling fix for the same pairing was reported as a reproducible kernel crash."
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"affected": [
|
|
{
|
|
"product": "Linux",
|
|
"vendor": "Linux",
|
|
"defaultStatus": "unaffected",
|
|
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
|
|
"programFiles": [
|
|
"drivers/block/ublk_drv.c"
|
|
],
|
|
"versions": [
|
|
{
|
|
"version": "216c8f5ef0f209a3797292c487bdaa6991ab4b92",
|
|
"lessThan": "7e3497d7dacb5aee69dd9be842b778083cae0e75",
|
|
"status": "affected",
|
|
"versionType": "git"
|
|
},
|
|
{
|
|
"version": "216c8f5ef0f209a3797292c487bdaa6991ab4b92",
|
|
"lessThan": "5491400589e7572c2d2627ed6384302f7672aa1d",
|
|
"status": "affected",
|
|
"versionType": "git"
|
|
},
|
|
{
|
|
"version": "216c8f5ef0f209a3797292c487bdaa6991ab4b92",
|
|
"lessThan": "9158359015f0eda00e521e35b7bc7ebce176aebf",
|
|
"status": "affected",
|
|
"versionType": "git"
|
|
},
|
|
{
|
|
"version": "216c8f5ef0f209a3797292c487bdaa6991ab4b92",
|
|
"lessThan": "8741d0737921ec1c03cf59aebf4d01400c2b461a",
|
|
"status": "affected",
|
|
"versionType": "git"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"product": "Linux",
|
|
"vendor": "Linux",
|
|
"defaultStatus": "affected",
|
|
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
|
|
"programFiles": [
|
|
"drivers/block/ublk_drv.c"
|
|
],
|
|
"versions": [
|
|
{
|
|
"version": "6.7",
|
|
"status": "affected"
|
|
},
|
|
{
|
|
"version": "0",
|
|
"lessThan": "6.7",
|
|
"status": "unaffected",
|
|
"versionType": "semver"
|
|
},
|
|
{
|
|
"version": "6.12.23",
|
|
"lessThanOrEqual": "6.12.*",
|
|
"status": "unaffected",
|
|
"versionType": "semver"
|
|
},
|
|
{
|
|
"version": "6.13.11",
|
|
"lessThanOrEqual": "6.13.*",
|
|
"status": "unaffected",
|
|
"versionType": "semver"
|
|
},
|
|
{
|
|
"version": "6.14.2",
|
|
"lessThanOrEqual": "6.14.*",
|
|
"status": "unaffected",
|
|
"versionType": "semver"
|
|
},
|
|
{
|
|
"version": "6.15",
|
|
"lessThanOrEqual": "*",
|
|
"status": "unaffected",
|
|
"versionType": "original_commit_for_fix"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"cpeApplicability": [
|
|
{
|
|
"nodes": [
|
|
{
|
|
"operator": "OR",
|
|
"negate": false,
|
|
"cpeMatch": [
|
|
{
|
|
"vulnerable": true,
|
|
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
|
"versionStartIncluding": "6.7",
|
|
"versionEndExcluding": "6.12.23"
|
|
},
|
|
{
|
|
"vulnerable": true,
|
|
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
|
"versionStartIncluding": "6.7",
|
|
"versionEndExcluding": "6.13.11"
|
|
},
|
|
{
|
|
"vulnerable": true,
|
|
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
|
"versionStartIncluding": "6.7",
|
|
"versionEndExcluding": "6.14.2"
|
|
},
|
|
{
|
|
"vulnerable": true,
|
|
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
|
|
"versionStartIncluding": "6.7",
|
|
"versionEndExcluding": "6.15"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"references": [
|
|
{
|
|
"url": "https://git.kernel.org/stable/c/7e3497d7dacb5aee69dd9be842b778083cae0e75"
|
|
},
|
|
{
|
|
"url": "https://git.kernel.org/stable/c/5491400589e7572c2d2627ed6384302f7672aa1d"
|
|
},
|
|
{
|
|
"url": "https://git.kernel.org/stable/c/9158359015f0eda00e521e35b7bc7ebce176aebf"
|
|
},
|
|
{
|
|
"url": "https://git.kernel.org/stable/c/8741d0737921ec1c03cf59aebf4d01400c2b461a"
|
|
}
|
|
],
|
|
"title": "ublk: make sure ubq->canceling is set when queue is frozen",
|
|
"x_generator": {
|
|
"engine": "bippy-1.2.0"
|
|
}
|
|
},
|
|
"adp": [
|
|
{
|
|
"problemTypes": [
|
|
{
|
|
"descriptions": [
|
|
{
|
|
"type": "CWE",
|
|
"cweId": "CWE-416",
|
|
"lang": "en",
|
|
"description": "CWE-416 Use After Free"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"metrics": [
|
|
{
|
|
"cvssV3_1": {
|
|
"scope": "UNCHANGED",
|
|
"version": "3.1",
|
|
"baseScore": 7.8,
|
|
"attackVector": "LOCAL",
|
|
"baseSeverity": "HIGH",
|
|
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
|
|
"integrityImpact": "HIGH",
|
|
"userInteraction": "NONE",
|
|
"attackComplexity": "LOW",
|
|
"availabilityImpact": "HIGH",
|
|
"privilegesRequired": "LOW",
|
|
"confidentialityImpact": "HIGH"
|
|
}
|
|
},
|
|
{
|
|
"other": {
|
|
"type": "ssvc",
|
|
"content": {
|
|
"timestamp": "2025-10-01T16:16:10.823275Z",
|
|
"id": "CVE-2025-22068",
|
|
"options": [
|
|
{
|
|
"Exploitation": "none"
|
|
},
|
|
{
|
|
"Automatable": "no"
|
|
},
|
|
{
|
|
"Technical Impact": "total"
|
|
}
|
|
],
|
|
"role": "CISA Coordinator",
|
|
"version": "2.0.3"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"title": "CISA ADP Vulnrichment",
|
|
"providerMetadata": {
|
|
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
|
|
"shortName": "CISA-ADP",
|
|
"dateUpdated": "2025-10-01T16:16:13.925Z"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
} |