Files
vuln-cve/data/2026/53xxx/CVE-2026-53170.json
T

138 lines
8.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-53170",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-06-09T07:44:35.389Z",
"datePublished": "2026-06-25T08:38:48.728Z",
"dateUpdated": "2026-08-05T12:33:39.324Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-05T12:33:39.324Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\naccel/ethosu: reject DMA commands with uninitialized length\n\ncmd_state_init() initializes the command state with memset(0xff),\nleaving dma->len at U64_MAX to signal missing setup. The only setter\nis NPU_SET_DMA0_LEN; if userspace omits this command and issues\nNPU_OP_DMA_START, dma->len remains U64_MAX.\n\nIn dma_length(), a positive stride added to U64_MAX wraps to a small\nvalue. With size0 == 1, check_mul_overflow() does not trigger and\ndma_length() returns 0 instead of U64_MAX. The caller's U64_MAX check\nthen passes, region_size[] stays 0, and the bounds check in\nethosu_job.c is bypassed, allowing hardware to execute DMA with stale\nphysical addresses.\n\nFix by checking for U64_MAX at the start of dma_length() before any\narithmetic, consistent with the sentinel value used throughout the\ndriver to detect uninitialized fields."
}
],
"metrics": [
{
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
"baseScore": 8.8,
"baseSeverity": "HIGH"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The vulnerable path is reached through local DRM accel device ioctls for Ethos-U command stream creation and job submission. There is no network, adjacent, or physical packet/device insertion path to this parser.\nAC:L - The attacker controls the userspace command stream, can omit NPU_SET_DMA0_LEN, set the DMA mode/stride/size values needed for wraparound, and can prime stale base registers with prior jobs. No race or condition outside the attacker’s control is required.\nPR:L - The Ethos-U ioctls are registered without DRM_ROOT_ONLY, DRM_AUTH, or DRM_MASTER checks, so no kernel capability or administrator privilege is required. Exploitation requires a local low-privileged user able to open the accel device node.\nUI:N - Once the local attacker can issue the ioctls, the command stream validation bypass and hardware job execution occur without any victim action. No user needs to open a file, mount anything, or approve the job.\nS:C - The bug lets a userspace client drive an external DMA-capable NPU using stale DMA addresses outside the per-job GEM/DMA isolation the driver is supposed to enforce. This is a DMA boundary bypass, so impact can extend beyond the vulnerable parser’s normal security authority.\nC:H - A malicious DMA command can use a stale source base address and copy data from another or freed DMA mapping into attacker-controlled memory. In the highest reasonable embedded deployment, stale physical DMA access can expose sensitive kernel or cross-process memory.\nI:H - A malicious DMA command can use a stale destination base address and write attacker-controlled data outside the authorized GEM buffer. This can corrupt other DMA buffers or reused kernel memory and is defensibly an arbitrary memory modification primitive.\nA:H - Invalid or malicious DMA can trigger NPU bus faults, scheduler resets, hangs, or broader kernel memory corruption. Repeated local submission can therefore cause high availability impact."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/accel/ethosu/ethosu_gem.c"
],
"versions": [
{
"version": "5a5e9c0228e613f0ef2a58b9782d7c0ea8f1e58b",
"lessThan": "fb25c76a820ca8a547aa478bfb503da0a11494ab",
"status": "affected",
"versionType": "git"
},
{
"version": "5a5e9c0228e613f0ef2a58b9782d7c0ea8f1e58b",
"lessThan": "d9d021218162b6c4fe0bdf42b2b340f1aae23a12",
"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/accel/ethosu/ethosu_gem.c"
],
"versions": [
{
"version": "6.19",
"status": "affected"
},
{
"version": "0",
"lessThan": "6.19",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.0.13",
"lessThanOrEqual": "7.0.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.1",
"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.19",
"versionEndExcluding": "7.0.13"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.19",
"versionEndExcluding": "7.1"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/fb25c76a820ca8a547aa478bfb503da0a11494ab"
},
{
"url": "https://git.kernel.org/stable/c/d9d021218162b6c4fe0bdf42b2b340f1aae23a12"
}
],
"title": "accel/ethosu: reject DMA commands with uninitialized length",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}