CVE-2026-97578 (GCVE-0-2026-97578)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:22 – Updated: 2026-09-25 14:41
VLAI
Title
media: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer
Summary
In the Linux kernel, the following vulnerability has been resolved: media: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer rockchip_vpu981_av1_dec_set_tile_info() divides context_update_tile_id by tile_info->tile_cols and writes one descriptor per tile into the tile_info DMA buffer, which holds AV1_MAX_TILES entries; tile_cols and tile_rows come from the bitstream. Guard the division against a zero tile_cols by initialising the context-update values to zero and computing them only when tile_cols is non-zero, and stop the descriptor writes once the tile_info buffer is full. The tile geometry written to the hardware registers is left unmodified; the per-dimension and total tile bounds are enforced by the control validation.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 727a400686a2c0d25015c9e44916a59b72882f83 , < 7baa7bb1b784c19170df8c99466fa412040eb431 (git)
Affected: 727a400686a2c0d25015c9e44916a59b72882f83 , < 8f19d869a9f6800547c9ad7ebaf3b94f973dab50 (git)
Affected: 727a400686a2c0d25015c9e44916a59b72882f83 , < 6b7a281a815ae7c5e7bb2aad039ffea9bc933157 (git)
Affected: 727a400686a2c0d25015c9e44916a59b72882f83 , < b84f6533a8ed2fd7b282fc7ab4b8efadc745a89c (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/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "7baa7bb1b784c19170df8c99466fa412040eb431",
              "status": "affected",
              "version": "727a400686a2c0d25015c9e44916a59b72882f83",
              "versionType": "git"
            },
            {
              "lessThan": "8f19d869a9f6800547c9ad7ebaf3b94f973dab50",
              "status": "affected",
              "version": "727a400686a2c0d25015c9e44916a59b72882f83",
              "versionType": "git"
            },
            {
              "lessThan": "6b7a281a815ae7c5e7bb2aad039ffea9bc933157",
              "status": "affected",
              "version": "727a400686a2c0d25015c9e44916a59b72882f83",
              "versionType": "git"
            },
            {
              "lessThan": "b84f6533a8ed2fd7b282fc7ab4b8efadc745a89c",
              "status": "affected",
              "version": "727a400686a2c0d25015c9e44916a59b72882f83",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.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: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer\n\nrockchip_vpu981_av1_dec_set_tile_info() divides context_update_tile_id by\ntile_info-\u003etile_cols and writes one descriptor per tile into the tile_info\nDMA buffer, which holds AV1_MAX_TILES entries; tile_cols and tile_rows\ncome from the bitstream. Guard the division against a zero tile_cols by\ninitialising the context-update values to zero and computing them only\nwhen tile_cols is non-zero, and stop the descriptor writes once the\ntile_info buffer is full. The tile geometry written to the hardware\nregisters is left unmodified; the per-dimension and total tile bounds are\nenforced by the control validation."
        }
      ],
      "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 bad tile_cols/tile_rows reach rockchip_vpu981_av1_dec_set_tile_info() through the V4L2_CID_STATELESS_AV1_FRAME control, set with VIDIOC_S_EXT_CTRLS/media request ioctls on the local hantro /dev/videoN node and run via rockchip_vpu981_av1_dec_run(). No remote protocol carries the values; a userspace AV1 parser would have to pass through values that break the spec.\nAC:L - validate_av1_frame() never checks tile_cols or tile_rows, so any caller can set tile_cols=0 (divide by zero) or 255x255 tiles (writes far past the 2 KiB tile_info buffer). Nothing outside the attacker\u0027s control is needed; the fault happens every time the job runs.\nPR:L - The only requirement is opening the VPU981 AV1 stateless decoder video node, which the logged-in user (video group) or the Android/ChromeOS media codec process normally can do. The ioctl path has no capability check.\nUI:N - The attacker queues the malicious control and request themselves, and the device_run worker processes it without any action by another user.\nS:U - The corruption stays in the kernel\u0027s own memory and security authority. No VM, IOMMU, or other boundary is crossed.\nC:H - tile_id reaches about 65,000 while the tile_group_entry dynamic array holds at most 512 entries, and indexes of width/height_in_sbs_minus_1 above 64 run past those arrays. Out-of-bounds kernel data is read into the descriptors, and the memory corruption can be used to leak data.\nI:H - The loop writes 16 bytes per tile, up to 255*255 tiles (about 1 MiB), past the 128-entry (2 KiB) dma_alloc_coherent tile_info buffer. The x0/y0/start/end values it writes are largely user-controlled, so it is a large, content-controlled kernel memory overwrite.\nA:H - tile_cols=0 causes a divide error when computing context_update_tile_id, which oopses the kernel. The large out-of-bounds write also corrupts memory next to the buffer and crashes the system."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T14:41:21.395Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/7baa7bb1b784c19170df8c99466fa412040eb431"
        },
        {
          "url": "https://git.kernel.org/stable/c/8f19d869a9f6800547c9ad7ebaf3b94f973dab50"
        },
        {
          "url": "https://git.kernel.org/stable/c/6b7a281a815ae7c5e7bb2aad039ffea9bc933157"
        },
        {
          "url": "https://git.kernel.org/stable/c/b84f6533a8ed2fd7b282fc7ab4b8efadc745a89c"
        }
      ],
      "title": "media: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97578",
    "datePublished": "2026-09-25T10:22:00.541Z",
    "dateReserved": "2026-09-24T16:01:01.156Z",
    "dateUpdated": "2026-09-25T14:41:21.395Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97578",
      "date": "2026-09-28",
      "epss": "0.00163",
      "percentile": "0.04906"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-28T00:40:26.000Z",
      "cve": "CVE-2026-97578",
      "id": "msrc_CVE-2026-97578",
      "initial_release_date": "2026-09-28T00:40:26.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "media: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-97578.json",
      "version": "1"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "7baa7bb1b784c19170df8c99466fa412040eb431",
                    "status": "affected",
                    "version": "727a400686a2c0d25015c9e44916a59b72882f83",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "8f19d869a9f6800547c9ad7ebaf3b94f973dab50",
                    "status": "affected",
                    "version": "727a400686a2c0d25015c9e44916a59b72882f83",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6b7a281a815ae7c5e7bb2aad039ffea9bc933157",
                    "status": "affected",
                    "version": "727a400686a2c0d25015c9e44916a59b72882f83",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "b84f6533a8ed2fd7b282fc7ab4b8efadc745a89c",
                    "status": "affected",
                    "version": "727a400686a2c0d25015c9e44916a59b72882f83",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.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: verisilicon: rockchip: guard VPU981 AV1 divisor and tile buffer\n\nrockchip_vpu981_av1_dec_set_tile_info() divides context_update_tile_id by\ntile_info-\u003etile_cols and writes one descriptor per tile into the tile_info\nDMA buffer, which holds AV1_MAX_TILES entries; tile_cols and tile_rows\ncome from the bitstream. Guard the division against a zero tile_cols by\ninitialising the context-update values to zero and computing them only\nwhen tile_cols is non-zero, and stop the descriptor writes once the\ntile_info buffer is full. The tile geometry written to the hardware\nregisters is left unmodified; the per-dimension and total tile bounds are\nenforced by the control validation."
          }
        ],
        "id": "CVE-2026-97578",
        "lastModified": "2026-09-25T15:17:59.930",
        "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.567",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/6b7a281a815ae7c5e7bb2aad039ffea9bc933157"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/7baa7bb1b784c19170df8c99466fa412040eb431"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/8f19d869a9f6800547c9ad7ebaf3b94f973dab50"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b84f6533a8ed2fd7b282fc7ab4b8efadc745a89c"
          }
        ],
        "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…