CVE-2023-54284 (GCVE-0-2023-54284)
Vulnerability from cvelistv5
Published
2025-12-30 12:23
Modified
2026-08-05 09:18
Summary
In the Linux kernel, the following vulnerability has been resolved: media: av7110: prevent underflow in write_ts_to_decoder() The buf[4] value comes from the user via ts_play(). It is a value in the u8 range. The final length we pass to av7110_ipack_instant_repack() is "len - (buf[4] + 1) - 4" so add a check to ensure that the length is not negative. It's not clear that passing a negative len value does anything bad necessarily, but it's not best practice. With the new bounds checking the "if (!len)" condition is no longer possible or required so remove that.
Impacted products
Vendor Product Version
Linux Linux Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Version: fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/staging/media/av7110/av7110_av.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6680af5be9f08d830567e9118f76d3e64684db8f",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "6606e2404ee9e20a3ae5b42fc3660d41b739ed3e",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "620b983589e0223876bf1463b01100a9c67b56ba",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "86ba65e5357bfbb6c082f68b265a292ee1bdde1d",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "ca4ce92e3ec9fd3c7c936b912b95c53331d5159c",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "423350af9e27f005611bd881b1df2cab66de943d",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "77eeb4732135c18c2fdfab80839645b393f3e774",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "7b93ab60fe9ed04be0ff155bc30ad39dea23e22b",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            },
            {
              "lessThan": "eed9496a0501357aa326ddd6b71408189ed872eb",
              "status": "affected",
              "version": "fd46d16d602ab7fd53cef7ff55b9dcb0b47ad3bf",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/staging/media/av7110/av7110_av.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "2.6.31"
            },
            {
              "lessThan": "2.6.31",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.14.*",
              "status": "unaffected",
              "version": "4.14.315",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "4.19.*",
              "status": "unaffected",
              "version": "4.19.283",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.243",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.211",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.28",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.15",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.3.*",
              "status": "unaffected",
              "version": "6.3.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.4",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.14.315",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "4.19.283",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.243",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.211",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.111",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.28",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.15",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3.2",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4",
                  "versionStartIncluding": "2.6.31",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: av7110: prevent underflow in write_ts_to_decoder()\n\nThe buf[4] value comes from the user via ts_play().  It is a value in\nthe u8 range.  The final length we pass to av7110_ipack_instant_repack()\nis \"len - (buf[4] + 1) - 4\" so add a check to ensure that the length is\nnot negative.  It\u0027s not clear that passing a negative len value does\nanything bad necessarily, but it\u0027s not best practice.\n\nWith the new bounds checking the \"if (!len)\" condition is no longer\npossible or required so remove that."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable code is reached only by writing crafted MPEG-TS packets to local DVB character devices (`/dev/dvb/adapterN/video0`, `audio0`, or `dvr0`) via `ts_play()`/`dvbdmx_write()`. No network or remote peer is involved.\nAC:L - The attacker directly supplies `buf[3]` (ADAPT_FIELD flag) and `buf[4]` (adaptation length 184\u2013255) in the 188-byte packet, so the underflow triggers deterministically; the preceding ipack state (`mpeg=1, found=7, which=0, check=0x40`) is set up with one prior well-formed packet, with no race or uncontrolled condition.\nPR:L - Only an open file descriptor on the DVB device node is needed \u2014 `dvb_video_ioctl()` applies no capability check to `VIDEO_SELECT_SOURCE`, and `dvb_dvr_write()`/`dvbdmx_write()` require no privilege. Any unprivileged user in the `video` group, or the unprivileged media process on a DVB appliance, can trigger it.\nUI:N - Exploitation is entirely self-contained in the attacker\u0027s own `open()`/`ioctl()`/`write()` sequence; no victim action or interaction is required.\nS:U - The overread and state corruption stay within the kernel\u0027s own security authority in the av7110 driver; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The negative length defeats the `c \u003c count` guards in the PES-header path of `av7110_ipack_instant_repack()`, letting the attacker read kernel memory at a self-chosen offset 1\u201372 bytes past the end of the 188-byte packet \u2014 via the `dvr0`/`memdup_user()` path that is adjacent slab data past a kmalloc-192 object, repeatable to sweep the whole window into the decoder stream.\nI:N - All `write_ipack()` copies remain clamped by `p-\u003esize`, and the `u32` comparisons against `p-\u003eplength` prevent `p-\u003efound` from going negative, so no out-of-bounds or attacker-controlled write primitive exists.\nA:H - The out-of-bounds slab read past a kmalloc-192 object can fault or trip KASAN/KFENCE/DEBUG_PAGEALLOC guard pages, panicking the kernel, and the same malformed packet drives `p-\u003efound` past `p-\u003eplength + 6`, permanently wedging the A/V decoder feed until the device is reset."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:18:55.094Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/6680af5be9f08d830567e9118f76d3e64684db8f"
        },
        {
          "url": "https://git.kernel.org/stable/c/6606e2404ee9e20a3ae5b42fc3660d41b739ed3e"
        },
        {
          "url": "https://git.kernel.org/stable/c/620b983589e0223876bf1463b01100a9c67b56ba"
        },
        {
          "url": "https://git.kernel.org/stable/c/86ba65e5357bfbb6c082f68b265a292ee1bdde1d"
        },
        {
          "url": "https://git.kernel.org/stable/c/ca4ce92e3ec9fd3c7c936b912b95c53331d5159c"
        },
        {
          "url": "https://git.kernel.org/stable/c/423350af9e27f005611bd881b1df2cab66de943d"
        },
        {
          "url": "https://git.kernel.org/stable/c/77eeb4732135c18c2fdfab80839645b393f3e774"
        },
        {
          "url": "https://git.kernel.org/stable/c/7b93ab60fe9ed04be0ff155bc30ad39dea23e22b"
        },
        {
          "url": "https://git.kernel.org/stable/c/eed9496a0501357aa326ddd6b71408189ed872eb"
        }
      ],
      "title": "media: av7110: prevent underflow in write_ts_to_decoder()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54284",
    "datePublished": "2025-12-30T12:23:25.116Z",
    "dateReserved": "2025-12-30T12:06:44.525Z",
    "dateUpdated": "2026-08-05T09:18:55.094Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

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…