CVE-2026-97575 (GCVE-0-2026-97575)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:21 – Updated: 2026-09-25 14:41
VLAI
Title
media: v4l2-ctrls: validate AV1 tile counts
Summary
In the Linux kernel, the following vulnerability has been resolved: media: v4l2-ctrls: validate AV1 tile counts The stateless AV1 decoders use tile_info.tile_cols and tile_rows as loop bounds and as indices into the mi_*_starts[] and *_in_sbs_minus_1[] arrays, as the divisor for context_update_tile_id, and their product bounds the per-tile descriptor buffers, but std_validate_compound() does not bound these u8 fields. Reject a V4L2_CTRL_TYPE_AV1_FRAME whose tile_cols or tile_rows exceeds V4L2_AV1_MAX_TILE_COLS / _ROWS, or whose product exceeds V4L2_AV1_MAX_TILE_COUNT. A zero tile count is left to the consuming driver so the zero-initialised control that existing userspace submits is still accepted.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 9de30f579980b498606a9c2440b73ae3b670771b , < 85df9fc79b07f1cc7c953f930ae7e675d0c1e820 (git)
Affected: 9de30f579980b498606a9c2440b73ae3b670771b , < c8891da0186fe4c04bccbbd7d84b01a3c941ac7a (git)
Affected: 9de30f579980b498606a9c2440b73ae3b670771b , < c4c88b5ba85685043d171e0e9c9d00a8cf6a89e8 (git)
Affected: 9de30f579980b498606a9c2440b73ae3b670771b , < 439058ced617fbb3febc017b9e93bb7387f309e0 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.5
Unaffected: 0 , < 6.5 (semver)
Unaffected: 6.12.111 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2.7 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc3 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/media/v4l2-core/v4l2-ctrls-core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "85df9fc79b07f1cc7c953f930ae7e675d0c1e820",
              "status": "affected",
              "version": "9de30f579980b498606a9c2440b73ae3b670771b",
              "versionType": "git"
            },
            {
              "lessThan": "c8891da0186fe4c04bccbbd7d84b01a3c941ac7a",
              "status": "affected",
              "version": "9de30f579980b498606a9c2440b73ae3b670771b",
              "versionType": "git"
            },
            {
              "lessThan": "c4c88b5ba85685043d171e0e9c9d00a8cf6a89e8",
              "status": "affected",
              "version": "9de30f579980b498606a9c2440b73ae3b670771b",
              "versionType": "git"
            },
            {
              "lessThan": "439058ced617fbb3febc017b9e93bb7387f309e0",
              "status": "affected",
              "version": "9de30f579980b498606a9c2440b73ae3b670771b",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/media/v4l2-core/v4l2-ctrls-core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.5"
            },
            {
              "lessThan": "6.5",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.111",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc3",
                  "versionStartIncluding": "6.5",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: v4l2-ctrls: validate AV1 tile counts\n\nThe stateless AV1 decoders use tile_info.tile_cols and tile_rows as loop\nbounds and as indices into the mi_*_starts[] and *_in_sbs_minus_1[]\narrays, as the divisor for context_update_tile_id, and their product\nbounds the per-tile descriptor buffers, but std_validate_compound() does\nnot bound these u8 fields. Reject a V4L2_CTRL_TYPE_AV1_FRAME whose\ntile_cols or tile_rows exceeds V4L2_AV1_MAX_TILE_COLS / _ROWS, or whose\nproduct exceeds V4L2_AV1_MAX_TILE_COUNT. A zero tile count is left to the\nconsuming driver so the zero-initialised control that existing userspace\nsubmits is still accepted."
        }
      ],
      "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 attacker-controlled tile_info.tile_cols/tile_rows u8s enter the kernel in V4L2_CID_STATELESS_AV1_FRAME via VIDIOC_S_EXT_CTRLS (or the request-fd path through try_set_ext_ctrls_request) on a local /dev/videoN AV1 decoder; validate_av1_frame() in std_validate_compound() is that ioctl\u0027s check. No network protocol carries those fields.\nAC:L - The attacker sets tile_cols and tile_rows to any u8 (e.g. 255) in that AV1_FRAME control and queues STREAMON/MEDIA_REQUEST_IOC_QUEUE; vdec_av1_slice_setup_tile() and rockchip_vpu981_av1_dec_set_tile_info() then loop and index on those values deterministically, with no race or victim-side state.\nPR:L - hantro_open() and fops_vcodec_open() have no capable() check; v4l2_prio_check() only compares V4L2 file-handle priority among openers. An unprivileged local user who can open the decoder node (video group, udev uaccess, or Android media-codec UID) is sufficient.\nUI:N - The attacking process itself opens the stateless AV1 decoder, submits the crafted AV1_FRAME control, queues buffers, and starts streaming. No victim action such as mounting media or opening a file is required.\nS:U - The overflows stay inside the kernel\u0027s kzalloc\u0027d vdec_av1_slice_pfc (lat_buf-\u003eprivate_data) and the hantro tile_info coherent DMA buffer in the same kernel security authority. No VM, IOMMU, or sandbox boundary is crossed.\nC:H - rockchip_vpu981_av1_dec_set_tile_info() reads group_entry[tile1*tile_cols+tile0] with a product up to 255*255 past the V4L2_AV1_MAX_TILE_COUNT TILE_GROUP_ENTRY array, and indexes height_in_sbs_minus_1[tile1] past its 64-entry field, pulling adjacent kernel heap into the decode path.\nI:H - vdec_av1_slice_setup_tile() writes tile_cols+1 entries into mi_col_starts[V4L2_AV1_MAX_TILE_COLS+1] on the kzalloc\u0027d pfc before the later product check; rockchip_vpu981_av1_dec_set_tile_info() writes 16 bytes per tile into a 128-slot (AV1_TILE_INFO_SIZE) DMA buffer for up to 255*255 tiles, an attacker-controlled kernel write.\nA:H - Those heap and DMA-buffer overruns walk into unmapped or poisoned memory and produce a kernel oops or KASAN report, and the attacker can repeat the AV1_FRAME request at will."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T14:41:18.210Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/85df9fc79b07f1cc7c953f930ae7e675d0c1e820"
        },
        {
          "url": "https://git.kernel.org/stable/c/c8891da0186fe4c04bccbbd7d84b01a3c941ac7a"
        },
        {
          "url": "https://git.kernel.org/stable/c/c4c88b5ba85685043d171e0e9c9d00a8cf6a89e8"
        },
        {
          "url": "https://git.kernel.org/stable/c/439058ced617fbb3febc017b9e93bb7387f309e0"
        }
      ],
      "title": "media: v4l2-ctrls: validate AV1 tile counts",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97575",
    "datePublished": "2026-09-25T10:21:58.700Z",
    "dateReserved": "2026-09-24T16:01:01.156Z",
    "dateUpdated": "2026-09-25T14:41:18.210Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97575",
      "date": "2026-09-28",
      "epss": "0.00163",
      "percentile": "0.04907"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-27T23:24:12.000Z",
      "cve": "CVE-2026-97575",
      "id": "msrc_CVE-2026-97575",
      "initial_release_date": "2026-09-27T23:24:12.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "media: v4l2-ctrls: validate AV1 tile counts",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-97575.json",
      "version": "1"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/media/v4l2-core/v4l2-ctrls-core.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "85df9fc79b07f1cc7c953f930ae7e675d0c1e820",
                    "status": "affected",
                    "version": "9de30f579980b498606a9c2440b73ae3b670771b",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "c8891da0186fe4c04bccbbd7d84b01a3c941ac7a",
                    "status": "affected",
                    "version": "9de30f579980b498606a9c2440b73ae3b670771b",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "c4c88b5ba85685043d171e0e9c9d00a8cf6a89e8",
                    "status": "affected",
                    "version": "9de30f579980b498606a9c2440b73ae3b670771b",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "439058ced617fbb3febc017b9e93bb7387f309e0",
                    "status": "affected",
                    "version": "9de30f579980b498606a9c2440b73ae3b670771b",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/media/v4l2-core/v4l2-ctrls-core.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.5"
                  },
                  {
                    "lessThan": "6.5",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.111",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.53",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.7",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc3",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: v4l2-ctrls: validate AV1 tile counts\n\nThe stateless AV1 decoders use tile_info.tile_cols and tile_rows as loop\nbounds and as indices into the mi_*_starts[] and *_in_sbs_minus_1[]\narrays, as the divisor for context_update_tile_id, and their product\nbounds the per-tile descriptor buffers, but std_validate_compound() does\nnot bound these u8 fields. Reject a V4L2_CTRL_TYPE_AV1_FRAME whose\ntile_cols or tile_rows exceeds V4L2_AV1_MAX_TILE_COLS / _ROWS, or whose\nproduct exceeds V4L2_AV1_MAX_TILE_COUNT. A zero tile count is left to the\nconsuming driver so the zero-initialised control that existing userspace\nsubmits is still accepted."
          }
        ],
        "id": "CVE-2026-97575",
        "lastModified": "2026-09-25T15:17:59.567",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-25T11:17:08.230",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/439058ced617fbb3febc017b9e93bb7387f309e0"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/85df9fc79b07f1cc7c953f930ae7e675d0c1e820"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/c4c88b5ba85685043d171e0e9c9d00a8cf6a89e8"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/c8891da0186fe4c04bccbbd7d84b01a3c941ac7a"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…