{"id":"CVE-2022-48945","state":"PUBLISHED","title":"media: vivid: fix compose size exceed boundary","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: vivid: fix compose size exceed boundary\n\nsyzkaller found a bug:\n\n BUG: unable to handle page fault for address: ffffc9000a3b1000\n #PF: supervisor write access in kernel mode\n #PF: error_code(0x0002) - not-present page\n PGD 100000067 P4D 100000067 PUD 10015f067 PMD 1121ca067 PTE 0\n Oops: 0002 [#1] PREEMPT SMP\n CPU: 0 PID: 23489 Comm: vivid-000-vid-c Not tainted 6.1.0-rc1+ #512\n Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014\n RIP: 0010:memcpy_erms+0x6/0x10\n[...]\n Call Trace:\n  <TASK>\n  ? tpg_fill_plane_buffer+0x856/0x15b0\n  vivid_fillbuff+0x8ac/0x1110\n  vivid_thread_vid_cap_tick+0x361/0xc90\n  vivid_thread_vid_cap+0x21a/0x3a0\n  kthread+0x143/0x180\n  ret_from_fork+0x1f/0x30\n  </TASK>\n\nThis is because we forget to check boundary after adjust compose->height\nint V4L2_SEL_TGT_CROP case. Add v4l2_rect_map_inside() to fix this problem\nfor this case.","publishedAt":"2024-09-23T09:46:40.851Z","updatedAt":"2026-08-05T08:53:04.470Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"8c0ee15d9a102c732d0745566d254040085d5663","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"5edc3604151919da8da0fb092b71d7dce07d848a","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"9c7fba9503b826f0c061d136f8f0c9f953ed18b9","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"54f259906039dbfe46c550011409fa16f72370f6","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"f9d19f3a044ca651b0be52a4bf951ffe74259b9f","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"ab54081a2843aefb837812fac5488cc8f1696142","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"ccb5392c4fea0e7d9f7ab35567e839d74cb3998b","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"2f558c5208b0f70c8140e08ce09fcc84da48e789","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"94a7ad9283464b75b12516c5512541d467cefcf8","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/test-drivers/vivid/vivid-vid-cap.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.18","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.18","versionType":"semver"},{"version":"4.9.337","status":"unaffected","lessThanOrEqual":"4.9.*","versionType":"semver"},{"version":"4.14.303","status":"unaffected","lessThanOrEqual":"4.14.*","versionType":"semver"},{"version":"4.19.270","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.229","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.163","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.86","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.0.16","status":"unaffected","lessThanOrEqual":"6.0.*","versionType":"semver"},{"version":"6.1.2","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/test-drivers/vivid/vivid-vid-cap.c"]}],"references":["https://git.kernel.org/stable/c/8c0ee15d9a102c732d0745566d254040085d5663","https://git.kernel.org/stable/c/5edc3604151919da8da0fb092b71d7dce07d848a","https://git.kernel.org/stable/c/9c7fba9503b826f0c061d136f8f0c9f953ed18b9","https://git.kernel.org/stable/c/54f259906039dbfe46c550011409fa16f72370f6","https://git.kernel.org/stable/c/f9d19f3a044ca651b0be52a4bf951ffe74259b9f","https://git.kernel.org/stable/c/ab54081a2843aefb837812fac5488cc8f1696142","https://git.kernel.org/stable/c/ccb5392c4fea0e7d9f7ab35567e839d74cb3998b","https://git.kernel.org/stable/c/2f558c5208b0f70c8140e08ce09fcc84da48e789","https://git.kernel.org/stable/c/94a7ad9283464b75b12516c5512541d467cefcf8"],"weaknesses":[],"ingestedAt":"2026-10-29T20:05:26.763Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2022/48xxx/CVE-2022-48945.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2022-48945","state":"PUBLISHED","datePublished":"2024-09-23T09:46:40.851Z","dateUpdated":"2026-08-05T08:53:04.470Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-08-22T01:27:53.624Z"},"containers":{"cna":{"title":"media: vivid: fix compose size exceed boundary","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: vivid: fix compose size exceed boundary\n\nsyzkaller found a bug:\n\n BUG: unable to handle page fault for address: ffffc9000a3b1000\n #PF: supervisor write access in kernel mode\n #PF: error_code(0x0002) - not-present page\n PGD 100000067 P4D 100000067 PUD 10015f067 PMD 1121ca067 PTE 0\n Oops: 0002 [#1] PREEMPT SMP\n CPU: 0 PID: 23489 Comm: vivid-000-vid-c Not tainted 6.1.0-rc1+ #512\n Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014\n RIP: 0010:memcpy_erms+0x6/0x10\n[...]\n Call Trace:\n  <TASK>\n  ? tpg_fill_plane_buffer+0x856/0x15b0\n  vivid_fillbuff+0x8ac/0x1110\n  vivid_thread_vid_cap_tick+0x361/0xc90\n  vivid_thread_vid_cap+0x21a/0x3a0\n  kthread+0x143/0x180\n  ret_from_fork+0x1f/0x30\n  </TASK>\n\nThis is because we forget to check boundary after adjust compose->height\nint V4L2_SEL_TGT_CROP case. Add v4l2_rect_map_inside() to fix this problem\nfor this case."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"8c0ee15d9a102c732d0745566d254040085d5663","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"5edc3604151919da8da0fb092b71d7dce07d848a","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"9c7fba9503b826f0c061d136f8f0c9f953ed18b9","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"54f259906039dbfe46c550011409fa16f72370f6","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"f9d19f3a044ca651b0be52a4bf951ffe74259b9f","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"ab54081a2843aefb837812fac5488cc8f1696142","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"ccb5392c4fea0e7d9f7ab35567e839d74cb3998b","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"2f558c5208b0f70c8140e08ce09fcc84da48e789","versionType":"git"},{"version":"ef834f7836ec0502f49f20bbc42f1240577a9c83","status":"affected","lessThan":"94a7ad9283464b75b12516c5512541d467cefcf8","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/test-drivers/vivid/vivid-vid-cap.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.18","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.18","versionType":"semver"},{"version":"4.9.337","status":"unaffected","lessThanOrEqual":"4.9.*","versionType":"semver"},{"version":"4.14.303","status":"unaffected","lessThanOrEqual":"4.14.*","versionType":"semver"},{"version":"4.19.270","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.229","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.163","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.86","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.0.16","status":"unaffected","lessThanOrEqual":"6.0.*","versionType":"semver"},{"version":"6.1.2","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/test-drivers/vivid/vivid-vid-cap.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/8c0ee15d9a102c732d0745566d254040085d5663"},{"url":"https://git.kernel.org/stable/c/5edc3604151919da8da0fb092b71d7dce07d848a"},{"url":"https://git.kernel.org/stable/c/9c7fba9503b826f0c061d136f8f0c9f953ed18b9"},{"url":"https://git.kernel.org/stable/c/54f259906039dbfe46c550011409fa16f72370f6"},{"url":"https://git.kernel.org/stable/c/f9d19f3a044ca651b0be52a4bf951ffe74259b9f"},{"url":"https://git.kernel.org/stable/c/ab54081a2843aefb837812fac5488cc8f1696142"},{"url":"https://git.kernel.org/stable/c/ccb5392c4fea0e7d9f7ab35567e839d74cb3998b"},{"url":"https://git.kernel.org/stable/c/2f558c5208b0f70c8140e08ce09fcc84da48e789"},{"url":"https://git.kernel.org/stable/c/94a7ad9283464b75b12516c5512541d467cefcf8"}],"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 - The bug is reached only via local V4L2 ioctls (VIDIOC_S_SELECTION / STREAMON) on the vivid /dev/videoN node; there is no network or adjacent-protocol path into vivid_vid_cap_s_selection or the capture kthread fill path.\nAC:L - An attacker-controlled, race-free ioctl sequence (enable crop+compose+scaler, set a crop that expands compose past fmt) deterministically leaves compose outside the buffer bounds; syzkaller reproduces the page-fault OOB write reliably.\nPR:L - Opening the vivid video node and issuing S_SELECTION requires no capability check—only video-group or seat uaccess on /dev/videoN—and crop/compose/scaler are ordinary unprivileged V4L2 controls (default-enabled).\nUI:N - The attacker opens the device, configures selection/format/streaming themselves; the OOB write then runs in the vivid capture kthread with no victim action.\nS:U - The out-of-bounds write corrupts kernel memory within the host kernel’s security authority and does not cross a VM, IOMMU, or sandbox boundary.\nC:H - Heap/vmalloc memory corruption from the oversized compose write is leverageable for kernel information disclosure (same class as CVE-2025-38226), and related loop/copy paths can surface adjacent data into attacker-readable capture buffers.\nI:H - This is an attacker-triggered out-of-bounds write in tpg_fill_plane_buffer (memcpy past the allocated frame buffer via compose.top/height/left), a classic heap corruption primitive suitable for control-flow hijacking.\nA:H - The demonstrated effect is a kernel oops (supervisor write page fault in memcpy_erms during tpg_fill_plane_buffer in the vivid kthread), which can panic the machine and is re-triggerable at will."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T08:53:04.470Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"4.9.337"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"4.14.303"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"4.19.270"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"5.4.229"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"5.10.163"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"5.15.86"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"6.0.16"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"6.1.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.18","versionEndExcluding":"6.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-09-29T14:21:20.078497Z","id":"CVE-2022-48945","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-09-29T14:21:31.001Z"}}]}}}