Description
In the Linux kernel, the following vulnerability has been resolved: ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup() snd_seq_event_dup() copies an incoming event into a pool cell and, in the UMP-enabled build, clears the trailing cell->ump.raw.extra word that the memcpy() did not cover. The guard deciding whether to clear it compares the copied size against sizeof(cell->event): memcpy(&cell->ump, event, size); if (size < sizeof(cell->event)) cell->ump.raw.extra = 0; For a legacy (non-UMP) event, size == sizeof(struct snd_seq_event) == sizeof(cell->event), so the condition is false and the extra word keeps stale data. The cell pool is allocated with kvmalloc() (not zeroed) and cells are reused via a free list, so that word holds uninitialised heap or leftover event data. When such a cell is delivered to a UMP client (client->midi_version > 0) that set SNDRV_SEQ_FILTER_NO_CONVERT -- so the legacy event reaches it unconverted -- snd_seq_read() reads it out as the larger struct snd_seq_ump_event and copies the stale word to user space, a 4-byte kernel heap infoleak to an unprivileged /dev/snd/seq client. Compare against sizeof(cell->ump) instead, so the trailing word is zeroed for every event shorter than the UMP cell.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
6389f2c135311c4ce7c08c3b29145c8f95aacf1f to < d7649aa11089a93ea2285c210397aa67e5800766affectedd7e2ce72833bb23a82b4201fbed7214cc04a4a8c to < a224c84e5d3d35708c082c84ad12d81d90762195affected46397622a3fa8372b8fda0f04b33d16923b03b1b to < ea672a9f6cc38f06fe69dd2c257ef8a3d4db179aaffected46397622a3fa8372b8fda0f04b33d16923b03b1b to < fb1aa5082847b98f44f9c6272aee9d0dca9244f0affected46397622a3fa8372b8fda0f04b33d16923b03b1b to < 651ba82fe2a144bc7356d940bfd235c3810b0549affected46397622a3fa8372b8fda0f04b33d16923b03b1b to < 6ded42615fa1f4949925afd0a8a9e1ab3bf96202affected46397622a3fa8372b8fda0f04b33d16923b03b1b to < 435990e25bf1f4af3e6df12a6fbfd1f7ba4a97d4affected
Linux Linux
Default version status: affected
6.5affected0 to < 6.5unaffected6.6.145 to ≤ 6.6.*unaffected6.12.96 to ≤ 6.12.*unaffected6.18.39 to ≤ 6.18.*unaffected7.1.4 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/d7649aa11089a93ea2285c210397aa67e5800766 ↗
- https://git.kernel.org/stable/c/a224c84e5d3d35708c082c84ad12d81d90762195 ↗
- https://git.kernel.org/stable/c/ea672a9f6cc38f06fe69dd2c257ef8a3d4db179a ↗
- https://git.kernel.org/stable/c/fb1aa5082847b98f44f9c6272aee9d0dca9244f0 ↗
- https://git.kernel.org/stable/c/651ba82fe2a144bc7356d940bfd235c3810b0549 ↗
- https://git.kernel.org/stable/c/6ded42615fa1f4949925afd0a8a9e1ab3bf96202 ↗
- https://git.kernel.org/stable/c/435990e25bf1f4af3e6df12a6fbfd1f7ba4a97d4 ↗