Files
vuln-cve/data/2023/53xxx/CVE-2023-53640.json
T

180 lines
11 KiB
JSON

{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2023-53640",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2025-10-07T15:16:59.658Z",
"datePublished": "2025-10-07T15:19:40.348Z",
"dateUpdated": "2026-08-05T09:15:17.951Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-05T09:15:17.951Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nASoC: lpass: Fix for KASAN use_after_free out of bounds\n\nWhen we run syzkaller we get below Out of Bounds error.\n\n\"KASAN: slab-out-of-bounds Read in regcache_flat_read\"\n\nBelow is the backtrace of the issue:\n\nBUG: KASAN: slab-out-of-bounds in regcache_flat_read+0x10c/0x110\nRead of size 4 at addr ffffff8088fbf714 by task syz-executor.4/14144\nCPU: 6 PID: 14144 Comm: syz-executor.4 Tainted: G W\nHardware name: Qualcomm Technologies, Inc. sc7280 CRD platform (rev5+) (DT)\nCall trace:\ndump_backtrace+0x0/0x4ec\nshow_stack+0x34/0x50\ndump_stack_lvl+0xdc/0x11c\nprint_address_description+0x30/0x2d8\nkasan_report+0x178/0x1e4\n__asan_report_load4_noabort+0x44/0x50\nregcache_flat_read+0x10c/0x110\nregcache_read+0xf8/0x5a0\n_regmap_read+0x45c/0x86c\n_regmap_update_bits+0x128/0x290\nregmap_update_bits_base+0xc0/0x15c\nsnd_soc_component_update_bits+0xa8/0x22c\nsnd_soc_component_write_field+0x68/0xd4\ntx_macro_put_dec_enum+0x1d0/0x268\nsnd_ctl_elem_write+0x288/0x474\n\nBy Error checking and checking valid values issue gets rectifies."
}
],
"metrics": [
{
"cvssV3_1": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H",
"baseScore": 7.3,
"baseSeverity": "HIGH"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The vulnerability is reached through an SNDRV_CTL_IOCTL_ELEM_WRITE ioctl on the local ALSA control device /dev/snd/controlC*, targeting the \"TX SMIC MUXn\" DAPM mux control. There is no network-facing path to lpass-tx-macro.\nAC:L - A single ioctl with an attacker-chosen 32-bit enumerated value deterministically produces the out-of-bounds access; the attacker directly selects the offending register offset via val, with no race, timing, or memory-layout precondition.\nPR:L - The attacker needs only an unprivileged local account with access to the sound control device (granted by udev ACL/audio group on desktops, and demonstrated by syzkaller running as an ordinary user process on sc7280); snd_ctl_elem_write performs no capability check.\nUI:N - The attacker triggers the bug entirely from their own process with one ioctl; no victim action, no file open, and no device plug-in is required.\nS:U - The out-of-bounds access and the resulting corruption/crash are confined to the kernel's own memory and the codec device it manages, with no crossing into a different security authority such as a hypervisor or IOMMU boundary.\nC:H - regcache_flat_read() performs an unchecked 4-byte read at an attacker-selected index up to 16383 into a 491-entry array, exposing up to ~63.5 KB of adjacent kernel heap, and the read value is observable as a repeatable oracle since the subsequent write (and its dev_err/return code) only occurs when the leaked word's masked bits differ from tx->dmic_clk_div.\nI:L - The out-of-bounds cache write is blocked by regmap_writeable()'s max_register check, but the u16 truncation of dmic_clk_reg lets the attacker force a 3-bit CDC_TX_SWR_DMIC_CLK_SEL field into any writable TX-macro register and its regcache entry, giving unintended but bounded modification of codec clocking, routing, and mute state.\nA:H - The 64 KB out-of-bounds read can land in an unmapped no-map carveout hole in the arm64 linear map (common on Qualcomm SoCs) causing an oops while card->controls_rwsem is held for write, permanently deadlocking the ALSA control device, and it panics outright on KASAN/hardened builds; stray writes to TX-macro clock/reset registers can additionally wedge the audio hardware."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"sound/soc/codecs/lpass-tx-macro.c"
],
"versions": [
{
"version": "c39667ddcfc516fee084e449179d54430a558298",
"lessThan": "8f1512d78b5de928f4616a871e77b58fd546e651",
"status": "affected",
"versionType": "git"
},
{
"version": "c39667ddcfc516fee084e449179d54430a558298",
"lessThan": "8d81d3b0ed3610d24191d24f8e9e20f6775f0cc5",
"status": "affected",
"versionType": "git"
},
{
"version": "c39667ddcfc516fee084e449179d54430a558298",
"lessThan": "f5e61e3fe799ba2fda4320af23d26d28c3302045",
"status": "affected",
"versionType": "git"
},
{
"version": "c39667ddcfc516fee084e449179d54430a558298",
"lessThan": "75e5fab7db0cecb6e16b22c34608f0b40a4c7cd1",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"sound/soc/codecs/lpass-tx-macro.c"
],
"versions": [
{
"version": "5.12",
"status": "affected"
},
{
"version": "0",
"lessThan": "5.12",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.15.114",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.1.31",
"lessThanOrEqual": "6.1.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.3.5",
"lessThanOrEqual": "6.3.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.4",
"lessThanOrEqual": "*",
"status": "unaffected",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.12",
"versionEndExcluding": "5.15.114"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.12",
"versionEndExcluding": "6.1.31"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.12",
"versionEndExcluding": "6.3.5"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.12",
"versionEndExcluding": "6.4"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/8f1512d78b5de928f4616a871e77b58fd546e651"
},
{
"url": "https://git.kernel.org/stable/c/8d81d3b0ed3610d24191d24f8e9e20f6775f0cc5"
},
{
"url": "https://git.kernel.org/stable/c/f5e61e3fe799ba2fda4320af23d26d28c3302045"
},
{
"url": "https://git.kernel.org/stable/c/75e5fab7db0cecb6e16b22c34608f0b40a4c7cd1"
}
],
"title": "ASoC: lpass: Fix for KASAN use_after_free out of bounds",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}