{"api_version":"1","generated_at":"2026-07-31T21:33:42+00:00","cve":"CVE-2026-64479","urls":{"html":"https://cve.report/CVE-2026-64479","api":"https://cve.report/api/cve/CVE-2026-64479.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-64479","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-64479"},"summary":{"title":"ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()\n\nsnd_seq_event_dup() copies an incoming event into a pool cell and, in\nthe UMP-enabled build, clears the trailing cell->ump.raw.extra word that\nthe memcpy() did not cover.  The guard deciding whether to clear it\ncompares the copied size against sizeof(cell->event):\n\n\tmemcpy(&cell->ump, event, size);\n\tif (size < sizeof(cell->event))\n\t\tcell->ump.raw.extra = 0;\n\nFor a legacy (non-UMP) event, size == sizeof(struct snd_seq_event) ==\nsizeof(cell->event), so the condition is false and the extra word keeps\nstale data.  The cell pool is allocated with kvmalloc() (not zeroed) and\ncells are reused via a free list, so that word holds uninitialised heap\nor leftover event data.\n\nWhen such a cell is delivered to a UMP client (client->midi_version > 0)\nthat set SNDRV_SEQ_FILTER_NO_CONVERT -- so the legacy event reaches it\nunconverted -- snd_seq_read() reads it out as the larger struct\nsnd_seq_ump_event and copies the stale word to user space, a 4-byte\nkernel heap infoleak to an unprivileged /dev/snd/seq client.\n\nCompare against sizeof(cell->ump) instead, so the trailing word is zeroed\nfor every event shorter than the UMP cell.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-07-25 10:17:33","updated_at":"2026-07-25 10:17:33"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/651ba82fe2a144bc7356d940bfd235c3810b0549","name":"https://git.kernel.org/stable/c/651ba82fe2a144bc7356d940bfd235c3810b0549","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/a224c84e5d3d35708c082c84ad12d81d90762195","name":"https://git.kernel.org/stable/c/a224c84e5d3d35708c082c84ad12d81d90762195","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/435990e25bf1f4af3e6df12a6fbfd1f7ba4a97d4","name":"https://git.kernel.org/stable/c/435990e25bf1f4af3e6df12a6fbfd1f7ba4a97d4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/fb1aa5082847b98f44f9c6272aee9d0dca9244f0","name":"https://git.kernel.org/stable/c/fb1aa5082847b98f44f9c6272aee9d0dca9244f0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/6ded42615fa1f4949925afd0a8a9e1ab3bf96202","name":"https://git.kernel.org/stable/c/6ded42615fa1f4949925afd0a8a9e1ab3bf96202","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/ea672a9f6cc38f06fe69dd2c257ef8a3d4db179a","name":"https://git.kernel.org/stable/c/ea672a9f6cc38f06fe69dd2c257ef8a3d4db179a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/d7649aa11089a93ea2285c210397aa67e5800766","name":"https://git.kernel.org/stable/c/d7649aa11089a93ea2285c210397aa67e5800766","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-64479","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-64479","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6389f2c135311c4ce7c08c3b29145c8f95aacf1f d7649aa11089a93ea2285c210397aa67e5800766 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected d7e2ce72833bb23a82b4201fbed7214cc04a4a8c a224c84e5d3d35708c082c84ad12d81d90762195 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 46397622a3fa8372b8fda0f04b33d16923b03b1b ea672a9f6cc38f06fe69dd2c257ef8a3d4db179a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 46397622a3fa8372b8fda0f04b33d16923b03b1b fb1aa5082847b98f44f9c6272aee9d0dca9244f0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 46397622a3fa8372b8fda0f04b33d16923b03b1b 651ba82fe2a144bc7356d940bfd235c3810b0549 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 46397622a3fa8372b8fda0f04b33d16923b03b1b 6ded42615fa1f4949925afd0a8a9e1ab3bf96202 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 46397622a3fa8372b8fda0f04b33d16923b03b1b 435990e25bf1f4af3e6df12a6fbfd1f7ba4a97d4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.5","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.5 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.145 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.96 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.39 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.4 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2-rc1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"64479","cve":"CVE-2026-64479","epss":"0.001810000","percentile":"0.079690000","score_date":"2026-07-28","updated_at":"2026-07-29 00:05:33"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["sound/core/seq/seq_memory.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"d7649aa11089a93ea2285c210397aa67e5800766","status":"affected","version":"6389f2c135311c4ce7c08c3b29145c8f95aacf1f","versionType":"git"},{"lessThan":"a224c84e5d3d35708c082c84ad12d81d90762195","status":"affected","version":"d7e2ce72833bb23a82b4201fbed7214cc04a4a8c","versionType":"git"},{"lessThan":"ea672a9f6cc38f06fe69dd2c257ef8a3d4db179a","status":"affected","version":"46397622a3fa8372b8fda0f04b33d16923b03b1b","versionType":"git"},{"lessThan":"fb1aa5082847b98f44f9c6272aee9d0dca9244f0","status":"affected","version":"46397622a3fa8372b8fda0f04b33d16923b03b1b","versionType":"git"},{"lessThan":"651ba82fe2a144bc7356d940bfd235c3810b0549","status":"affected","version":"46397622a3fa8372b8fda0f04b33d16923b03b1b","versionType":"git"},{"lessThan":"6ded42615fa1f4949925afd0a8a9e1ab3bf96202","status":"affected","version":"46397622a3fa8372b8fda0f04b33d16923b03b1b","versionType":"git"},{"lessThan":"435990e25bf1f4af3e6df12a6fbfd1f7ba4a97d4","status":"affected","version":"46397622a3fa8372b8fda0f04b33d16923b03b1b","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["sound/core/seq/seq_memory.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.6.*","status":"unaffected","version":"6.6.145","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.96","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.39","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.4","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2-rc1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.145","versionStartIncluding":"6.5","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.96","versionStartIncluding":"6.5","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.39","versionStartIncluding":"6.5","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.4","versionStartIncluding":"6.5","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2-rc1","versionStartIncluding":"6.5","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()\n\nsnd_seq_event_dup() copies an incoming event into a pool cell and, in\nthe UMP-enabled build, clears the trailing cell->ump.raw.extra word that\nthe memcpy() did not cover.  The guard deciding whether to clear it\ncompares the copied size against sizeof(cell->event):\n\n\tmemcpy(&cell->ump, event, size);\n\tif (size < sizeof(cell->event))\n\t\tcell->ump.raw.extra = 0;\n\nFor a legacy (non-UMP) event, size == sizeof(struct snd_seq_event) ==\nsizeof(cell->event), so the condition is false and the extra word keeps\nstale data.  The cell pool is allocated with kvmalloc() (not zeroed) and\ncells are reused via a free list, so that word holds uninitialised heap\nor leftover event data.\n\nWhen such a cell is delivered to a UMP client (client->midi_version > 0)\nthat set SNDRV_SEQ_FILTER_NO_CONVERT -- so the legacy event reaches it\nunconverted -- snd_seq_read() reads it out as the larger struct\nsnd_seq_ump_event and copies the stale word to user space, a 4-byte\nkernel heap infoleak to an unprivileged /dev/snd/seq client.\n\nCompare against sizeof(cell->ump) instead, so the trailing word is zeroed\nfor every event shorter than the UMP cell."}],"providerMetadata":{"dateUpdated":"2026-07-25T08:51:41.006Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/d7649aa11089a93ea2285c210397aa67e5800766"},{"url":"https://git.kernel.org/stable/c/a224c84e5d3d35708c082c84ad12d81d90762195"},{"url":"https://git.kernel.org/stable/c/ea672a9f6cc38f06fe69dd2c257ef8a3d4db179a"},{"url":"https://git.kernel.org/stable/c/fb1aa5082847b98f44f9c6272aee9d0dca9244f0"},{"url":"https://git.kernel.org/stable/c/651ba82fe2a144bc7356d940bfd235c3810b0549"},{"url":"https://git.kernel.org/stable/c/6ded42615fa1f4949925afd0a8a9e1ab3bf96202"},{"url":"https://git.kernel.org/stable/c/435990e25bf1f4af3e6df12a6fbfd1f7ba4a97d4"}],"title":"ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-64479","datePublished":"2026-07-25T08:51:41.006Z","dateReserved":"2026-07-19T15:36:31.791Z","dateUpdated":"2026-07-25T08:51:41.006Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-07-25 10:17:33","lastModifiedDate":"2026-07-25 10:17:33","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"64479","Ordinal":"1","Title":"ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()","CVE":"CVE-2026-64479","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"64479","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()\n\nsnd_seq_event_dup() copies an incoming event into a pool cell and, in\nthe UMP-enabled build, clears the trailing cell->ump.raw.extra word that\nthe memcpy() did not cover.  The guard deciding whether to clear it\ncompares the copied size against sizeof(cell->event):\n\n\tmemcpy(&cell->ump, event, size);\n\tif (size < sizeof(cell->event))\n\t\tcell->ump.raw.extra = 0;\n\nFor a legacy (non-UMP) event, size == sizeof(struct snd_seq_event) ==\nsizeof(cell->event), so the condition is false and the extra word keeps\nstale data.  The cell pool is allocated with kvmalloc() (not zeroed) and\ncells are reused via a free list, so that word holds uninitialised heap\nor leftover event data.\n\nWhen such a cell is delivered to a UMP client (client->midi_version > 0)\nthat set SNDRV_SEQ_FILTER_NO_CONVERT -- so the legacy event reaches it\nunconverted -- snd_seq_read() reads it out as the larger struct\nsnd_seq_ump_event and copies the stale word to user space, a 4-byte\nkernel heap infoleak to an unprivileged /dev/snd/seq client.\n\nCompare against sizeof(cell->ump) instead, so the trailing word is zeroed\nfor every event shorter than the UMP cell.","Type":"Description","Title":"ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()"}]}}}