{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-57893",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-57893"
  ],
  "published": "2025-01-15T13:07:18Z",
  "summary": "ALSA: seq: oss: Fix races at processing SysEx messages",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: seq: oss: Fix races at processing SysEx messages\n\nOSS sequencer handles the SysEx messages split in 6 bytes packets, and\nALSA sequencer OSS layer tries to combine those.  It stores the data\nin the internal buffer and this access is racy as of now, which may\nlead to the out-of-bounds access.\n\nAs a temporary band-aid fix, introduce a mutex for serializing the\nprocess of the SysEx message packets.",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.124",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-57893"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/cff1de87ed14fc0f2332213d2367100e7ad0753a"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/d2392b79d8af3714ea8878b71c66dc49d3110f44"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/9d382112b36382aa65aad765f189ebde9926c101"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/0179488ca992d79908b8e26b9213f1554fc5bacc"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The vulnerable code is reached only through write() on the OSS sequencer character device /dev/sequencer or /dev/music, which requires local access to the machine. There is no remote or network path into snd_seq_oss_synth_sysex().\nAC:L - The attacker owns both sides of the race \u2014 two threads (or a concurrent SNDCTL_SEQ_RESET ioctl) hammering write() on the same file descriptor \u2014 and can retry the tight loop indefinitely until the unserialized dest/len window is hit. No condition outside the attacker's control is required.\nPR:L - Neither odev_open() nor the write path performs any capability check; only the device file permissions apply, and desktop udev/logind grant the logged-in unprivileged user access to /dev/sequencer and /dev/snd/seq (audio group / uaccess ACL). The attacker can even self-provision the required MIDI device by creating a MIDI_GENERIC sequencer port as an unprivileged user.\nUI:N - The attacker triggers the race entirely from its own threads via open/write/ioctl; no victim action, no file to be opened by another user, and no administrator step is involved.\nS:U - The corruption stays inside the kernel's own heap and security authority \u2014 a standard local kernel memory-safety bug with no VM, IOMMU, or sandbox boundary crossed.\nC:H - The race yields slab out-of-bounds access on a kmalloc'd object and, via the concurrent kfree() of info->sysex in the reset path, use-after-free access to freed heap memory; such heap corruption/UAF primitives are leverageable for kernel memory disclosure, and the SysEx event is dispatched with a racily-read length/pointer to a buffer the attacker can read back through the sequencer.\nI:H - This is an out-of-bounds heap *write* of fully attacker-chosen bytes past the 136-byte seq_oss_synth_sysex object (extendable further via chained lost-update races on the unlocked len++), plus a potential UAF write, which is the classic basis for heap grooming and control-flow hijack leading to privilege escalation.\nA:H - The out-of-bounds/use-after-free write reliably produces slab corruption and KASAN/SLUB-redzone-detected faults, and an unprivileged local user can repeat it in a loop to panic or destabilize the kernel."
    }
  }
}
