{"id":"CVE-2022-49094","state":"PUBLISHED","title":"net/tls: fix slab-out-of-bounds bug in decrypt_internal","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/tls: fix slab-out-of-bounds bug in decrypt_internal\n\nThe memory size of tls_ctx->rx.iv for AES128-CCM is 12 setting in\ntls_set_sw_offload(). The return value of crypto_aead_ivsize()\nfor \"ccm(aes)\" is 16. So memcpy() require 16 bytes from 12 bytes\nmemory space will trigger slab-out-of-bounds bug as following:\n\n==================================================================\nBUG: KASAN: slab-out-of-bounds in decrypt_internal+0x385/0xc40 [tls]\nRead of size 16 at addr ffff888114e84e60 by task tls/10911\n\nCall Trace:\n <TASK>\n dump_stack_lvl+0x34/0x44\n print_report.cold+0x5e/0x5db\n ? decrypt_internal+0x385/0xc40 [tls]\n kasan_report+0xab/0x120\n ? decrypt_internal+0x385/0xc40 [tls]\n kasan_check_range+0xf9/0x1e0\n memcpy+0x20/0x60\n decrypt_internal+0x385/0xc40 [tls]\n ? tls_get_rec+0x2e0/0x2e0 [tls]\n ? process_rx_list+0x1a5/0x420 [tls]\n ? tls_setup_from_iter.constprop.0+0x2e0/0x2e0 [tls]\n decrypt_skb_update+0x9d/0x400 [tls]\n tls_sw_recvmsg+0x3c8/0xb50 [tls]\n\nAllocated by task 10911:\n kasan_save_stack+0x1e/0x40\n __kasan_kmalloc+0x81/0xa0\n tls_set_sw_offload+0x2eb/0xa20 [tls]\n tls_setsockopt+0x68c/0x700 [tls]\n __sys_setsockopt+0xfe/0x1b0\n\nReplace the crypto_aead_ivsize() with prot->iv_size + prot->salt_size\nwhen memcpy() iv value in TLS_1_3_VERSION scenario.","publishedAt":"2025-02-26T01:54:48.163Z","updatedAt":"2026-10-15T21:21:06.791Z","severity":{"score":9.8,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"2b7d14c105dd8f6412eda5a91e1e6154653731e3","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"589154d0f18945f41d138a5b4e49e518d294474b","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"6e2f1b033b17dedda51d465861b69e58317d6343","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"29be1816cbab9a0dc6243120939fd10a92753756","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"2304660ab6c425df64d95301b601424c6a50f28b","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"9381fe8c849cfbe50245ac01fc077554f6eaa0e2","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tls/tls_sw.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.2","versionType":"semver"},{"version":"5.4.189","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.111","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.34","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"5.16.20","status":"unaffected","lessThanOrEqual":"5.16.*","versionType":"semver"},{"version":"5.17.3","status":"unaffected","lessThanOrEqual":"5.17.*","versionType":"semver"},{"version":"5.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tls/tls_sw.c"]}],"references":["https://git.kernel.org/stable/c/2b7d14c105dd8f6412eda5a91e1e6154653731e3","https://git.kernel.org/stable/c/589154d0f18945f41d138a5b4e49e518d294474b","https://git.kernel.org/stable/c/6e2f1b033b17dedda51d465861b69e58317d6343","https://git.kernel.org/stable/c/29be1816cbab9a0dc6243120939fd10a92753756","https://git.kernel.org/stable/c/2304660ab6c425df64d95301b601424c6a50f28b","https://git.kernel.org/stable/c/9381fe8c849cfbe50245ac01fc077554f6eaa0e2"],"weaknesses":[],"ingestedAt":"2026-10-29T20:05:26.763Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2022/49xxx/CVE-2022-49094.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2022-49094","state":"PUBLISHED","datePublished":"2025-02-26T01:54:48.163Z","dateUpdated":"2026-10-15T21:21:06.791Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-02-26T01:49:39.249Z"},"containers":{"cna":{"title":"net/tls: fix slab-out-of-bounds bug in decrypt_internal","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/tls: fix slab-out-of-bounds bug in decrypt_internal\n\nThe memory size of tls_ctx->rx.iv for AES128-CCM is 12 setting in\ntls_set_sw_offload(). The return value of crypto_aead_ivsize()\nfor \"ccm(aes)\" is 16. So memcpy() require 16 bytes from 12 bytes\nmemory space will trigger slab-out-of-bounds bug as following:\n\n==================================================================\nBUG: KASAN: slab-out-of-bounds in decrypt_internal+0x385/0xc40 [tls]\nRead of size 16 at addr ffff888114e84e60 by task tls/10911\n\nCall Trace:\n <TASK>\n dump_stack_lvl+0x34/0x44\n print_report.cold+0x5e/0x5db\n ? decrypt_internal+0x385/0xc40 [tls]\n kasan_report+0xab/0x120\n ? decrypt_internal+0x385/0xc40 [tls]\n kasan_check_range+0xf9/0x1e0\n memcpy+0x20/0x60\n decrypt_internal+0x385/0xc40 [tls]\n ? tls_get_rec+0x2e0/0x2e0 [tls]\n ? process_rx_list+0x1a5/0x420 [tls]\n ? tls_setup_from_iter.constprop.0+0x2e0/0x2e0 [tls]\n decrypt_skb_update+0x9d/0x400 [tls]\n tls_sw_recvmsg+0x3c8/0xb50 [tls]\n\nAllocated by task 10911:\n kasan_save_stack+0x1e/0x40\n __kasan_kmalloc+0x81/0xa0\n tls_set_sw_offload+0x2eb/0xa20 [tls]\n tls_setsockopt+0x68c/0x700 [tls]\n __sys_setsockopt+0xfe/0x1b0\n\nReplace the crypto_aead_ivsize() with prot->iv_size + prot->salt_size\nwhen memcpy() iv value in TLS_1_3_VERSION scenario."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"2b7d14c105dd8f6412eda5a91e1e6154653731e3","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"589154d0f18945f41d138a5b4e49e518d294474b","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"6e2f1b033b17dedda51d465861b69e58317d6343","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"29be1816cbab9a0dc6243120939fd10a92753756","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"2304660ab6c425df64d95301b601424c6a50f28b","versionType":"git"},{"version":"f295b3ae9f5927e084bd5decdff82390e3471801","status":"affected","lessThan":"9381fe8c849cfbe50245ac01fc077554f6eaa0e2","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tls/tls_sw.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.2","versionType":"semver"},{"version":"5.4.189","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.111","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.34","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"5.16.20","status":"unaffected","lessThanOrEqual":"5.16.*","versionType":"semver"},{"version":"5.17.3","status":"unaffected","lessThanOrEqual":"5.17.*","versionType":"semver"},{"version":"5.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tls/tls_sw.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/2b7d14c105dd8f6412eda5a91e1e6154653731e3"},{"url":"https://git.kernel.org/stable/c/589154d0f18945f41d138a5b4e49e518d294474b"},{"url":"https://git.kernel.org/stable/c/6e2f1b033b17dedda51d465861b69e58317d6343"},{"url":"https://git.kernel.org/stable/c/29be1816cbab9a0dc6243120939fd10a92753756"},{"url":"https://git.kernel.org/stable/c/2304660ab6c425df64d95301b601424c6a50f28b"},{"url":"https://git.kernel.org/stable/c/9381fe8c849cfbe50245ac01fc077554f6eaa0e2"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - The bug is in kTLS software RX decrypt_internal(), reached when decrypting TLS records on an established kTLS socket; a remote TLS peer’s application data drives tls_sw_recvmsg → decrypt_skb_update → decrypt_internal on network-facing kTLS services (including embedded/IoT AES-CCM deployments).\nAC:L - For TLS 1.3 AES-CCM-128 (or SM4-CCM), every decrypt reliably performs the oversized memcpy; the attacker only needs to send TLS records to a socket already configured with that cipher, with no race or uncontrollable timing.\nPR:N - A remote client needs no local account or capability on the victim host; there is no authentication gate on the kTLS decrypt path beyond being a peer on the TLS connection.\nUI:N - No separate victim action is required; normal automated receive/decrypt of attacker-sent TLS records triggers the bug.\nS:U - Impact is kernel heap corruption within the same host/kernel security authority, not a VM escape, IOMMU bypass, or other cross-boundary compromise.\nC:H - The memcpy both reads 4 bytes past the 12-byte rx.iv allocation (heap adjacent/padding contents enter the IV) and, with CCM iv_offset=1, writes one byte past the destination IV buffer—memory corruption that can be leveraged for information disclosure.\nI:H - The destination overrun is a heap out-of-bounds write past the decrypt scratch allocation, which is exploitable memory corruption consistent with integrity compromise or control-flow hijacking.\nA:H - KASAN reports a slab-out-of-bounds fault in decrypt_internal, and the heap corruption can cause kernel oops/panic when adjacent objects are corrupted."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T08:53:54.079Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.4.189"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.10.111"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.15.34"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.16.20"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.17.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.2","versionEndExcluding":"5.18"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2022-49094","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-15T21:17:38.615000Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-15T21:21:06.791Z"}}]}}}