CVE-2026-68204 (GCVE-0-2026-68204)
Vulnerability from cvelistv5
Published
2026-08-10 12:00
Modified
2026-08-19 16:31
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
media: vivid: check for vb2_is_busy() when toggling caps
The vivid_update_format_cap/out() functions must only be called if the
capture/output queue are not busy. But for the controls that select
the CROP/COMPOSE/SCALE capability that is not checked.
Only when streaming starts will they be set to 'grabbed' and it is
impossible to change the control, but between REQBUFS and STREAMON you
are still allowed to set these controls. Since vivid_update_format_cap/out
will change the format, this can cause unexpected results.
Besides adding these checks, also add a WARN_ON in
vivid_update_format_cap/out() if the queue is busy.
I'm 90% certain that this is the cause of this syzbot bug:
https://syzkaller.appspot.com/bug?extid=dac8f5eaa46837e97b89
But since we never have reproducers, it is hard to be certain. In any case,
these checks are needed regardless.
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Linux | Linux |
Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 Version: 73c3f48230cda01402ae189b05d56f1f7e0d53c9 |
||
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/media/test-drivers/vivid/vivid-ctrls.c",
"drivers/media/test-drivers/vivid/vivid-vid-cap.c",
"drivers/media/test-drivers/vivid/vivid-vid-out.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "0a820f03727b509b887f3216a574062948761f34",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
},
{
"lessThan": "bbc96bc75de0fcd9bb6ac48798b206e3b09ec865",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
},
{
"lessThan": "6a5bc8aea111ccbca71ef2b9c868d5c81f2e89de",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
},
{
"lessThan": "a9cd0e8fb0b21faaa71199d9d3feb305c18ff576",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
},
{
"lessThan": "abaec6747304581f8d4a9936352fa10e13325f07",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
},
{
"lessThan": "492c97cb50feaa60ccd7792d3d6b904ed8ec61bf",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
},
{
"lessThan": "daf2d92669b4a659d805d88d811161c70cd325ee",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
},
{
"lessThan": "c2d1a2130c93f6d758af58590b86b2254c7a1dec",
"status": "affected",
"version": "73c3f48230cda01402ae189b05d56f1f7e0d53c9",
"versionType": "git"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/media/test-drivers/vivid/vivid-ctrls.c",
"drivers/media/test-drivers/vivid/vivid-vid-cap.c",
"drivers/media/test-drivers/vivid/vivid-vid-out.c"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "3.18"
},
{
"lessThan": "3.18",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"version": "5.10.265",
"versionType": "semver"
},
{
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"version": "5.15.216",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"version": "6.1.183",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.6.*",
"status": "unaffected",
"version": "6.6.148",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"version": "6.12.101",
"versionType": "semver"
},
{
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"version": "6.18.42",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"version": "7.1.6",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.2",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.10.265",
"versionStartIncluding": "3.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "5.15.216",
"versionStartIncluding": "3.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.1.183",
"versionStartIncluding": "3.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.6.148",
"versionStartIncluding": "3.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.12.101",
"versionStartIncluding": "3.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "6.18.42",
"versionStartIncluding": "3.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.1.6",
"versionStartIncluding": "3.18",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2",
"versionStartIncluding": "3.18",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: vivid: check for vb2_is_busy() when toggling caps\n\nThe vivid_update_format_cap/out() functions must only be called if the\ncapture/output queue are not busy. But for the controls that select\nthe CROP/COMPOSE/SCALE capability that is not checked.\n\nOnly when streaming starts will they be set to \u0027grabbed\u0027 and it is\nimpossible to change the control, but between REQBUFS and STREAMON you\nare still allowed to set these controls. Since vivid_update_format_cap/out\nwill change the format, this can cause unexpected results.\n\nBesides adding these checks, also add a WARN_ON in\nvivid_update_format_cap/out() if the queue is busy.\n\nI\u0027m 90% certain that this is the cause of this syzbot bug:\n\nhttps://syzkaller.appspot.com/bug?extid=dac8f5eaa46837e97b89\n\nBut since we never have reproducers, it is hard to be certain. In any case,\nthese checks are needed regardless."
}
],
"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 bug is reached purely through local ioctls (VIDIOC_REQBUFS/PREPARE_BUF/S_EXT_CTRLS/STREAMON) on the /dev/videoN character device exposed by the vivid driver. There is no remote or network component.\nAC:L - The attacker fully controls both the initial buffer allocation size and the later geometry change, so the undersized-buffer overflow is produced deterministically by a fixed ioctl sequence with no race or memory-layout precondition.\nPR:L - No capability check exists on the V4L2 control or buffer ioctls; any process able to open /dev/videoN can trigger it, which on desktops/Android and container images with video devices bind-mounted means an ordinary unprivileged user (video group / logind ACL).\nUI:N - The entire sequence is performed by the attacking process itself against a device node it opens; no victim action or cooperation is needed.\nS:U - The corruption stays within the kernel\u0027s own memory and security authority; no VM, IOMMU or sandbox boundary is crossed by the overflow itself.\nC:H - The stale-geometry mismatch also drives out-of-bounds reads on the output path and lets adjacent kernel allocations be read back through the mmap\u0027ed plane, and the resulting heap corruption can be shaped into a broader kernel-memory disclosure primitive.\nI:H - The capture kthread writes a full frame using the enlarged geometry into a plane allocated for the smaller format, giving an out-of-bounds kernel write of attacker-chosen length and largely attacker-influenced (test-pattern) content, which is exploitable for kernel memory corruption.\nA:H - Overwriting memory past the vb2 plane reliably corrupts neighbouring allocations or hits a vmalloc guard page, producing KASAN splats, oopses and kernel panics; the post-fix WARN_ON also panics on panic_on_warn systems."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-19T16:31:23.943Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/0a820f03727b509b887f3216a574062948761f34"
},
{
"url": "https://git.kernel.org/stable/c/bbc96bc75de0fcd9bb6ac48798b206e3b09ec865"
},
{
"url": "https://git.kernel.org/stable/c/6a5bc8aea111ccbca71ef2b9c868d5c81f2e89de"
},
{
"url": "https://git.kernel.org/stable/c/a9cd0e8fb0b21faaa71199d9d3feb305c18ff576"
},
{
"url": "https://git.kernel.org/stable/c/abaec6747304581f8d4a9936352fa10e13325f07"
},
{
"url": "https://git.kernel.org/stable/c/492c97cb50feaa60ccd7792d3d6b904ed8ec61bf"
},
{
"url": "https://git.kernel.org/stable/c/daf2d92669b4a659d805d88d811161c70cd325ee"
},
{
"url": "https://git.kernel.org/stable/c/c2d1a2130c93f6d758af58590b86b2254c7a1dec"
}
],
"title": "media: vivid: check for vb2_is_busy() when toggling caps",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-68204",
"datePublished": "2026-08-10T12:00:23.311Z",
"dateReserved": "2026-07-30T09:28:09.374Z",
"dateUpdated": "2026-08-19T16:31:23.943Z",
"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…