{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64046","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-07-19T07:54:57.029Z","datePublished":"2026-07-19T15:39:31.129Z","dateUpdated":"2026-08-05T12:38:38.201Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T12:38:38.201Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: tls: prevent chain-after-chain in plain text SG\n\nSashiko points out that if end = 0 (start != 0) the current\ncode will create a chain link to content type right after\nthe wrap link:\n\n  This would create a chain where the wrap link points directly\n  to another chain link. The scatterlist API sg_next iterator\n  does not recursively resolve consecutive chain links.\n\nmeaning this is illegal input to crypto.\n\nThe wrapping link is unnecessary if end = 0. end is the entry after\nthe last one used so end = 0 means there's nothing pushed after\nthe wrap:\n\n   end         start            i\n    v            v              v\n  [   ]...[   ][ d ][ d ][ d ][ d ][rsv for wrap]\n\nSkip the wrapping in this case.\n\nTLS 1.3 can use the \"wrapping slot\" for it's chaining if end = 0.\nThis avoids the chain-after-chain.\n\nMove the wrap chaining before marking END and chaining off content\ntype, that feels like more logical ordering to me, but should not\nmatter from functional perspective."}],"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 TX (`tls_push_record` in `net/tls/tls_sw.c`), reached when encrypting outbound TLS 1.3 records on a connected socket; a remote TLS peer triggers this path on internet-facing servers and L7 proxies (kTLS+sockmap) by causing the host to send TLS responses.\nAC:L - The wrapped `sk_msg` ring state (`end=0`, `start!=0`) needed to hit the chain-after-chain bug is deterministically created via BPF `sk_msg` helpers (`bpf_msg_push_data`/`bpf_msg_pop_data`), which the attacker controls on the local path or can steer on servers whose sockmap programs manipulate messages based on connection traffic.\nPR:N - Exploitation does not require Linux capabilities on the attacking side when targeting a TLS service already running kTLS with sockmap; any unauthenticated remote client that completes a TLS 1.3 handshake and causes record transmission can reach the vulnerable encrypt path.\nUI:N - No victim user action beyond normal automated TLS server/client operation is required; triggering the bug is achieved through crafted network traffic and/or syscall-driven sends on an already-established kTLS socket.\nS:U - Impact is confined to kernel memory corruption and privilege escalation within the same host/kernel security boundary, not a cross-boundary escape such as VM guest-to-host or IOMMU bypass.\nC:H - Passing a scatterlist with consecutive chain links to `crypto_aead_encrypt` is illegal; the crypto scatterwalk treats chain entries as data pages, causing out-of-bounds kernel memory reads and information disclosure primitives.\nI:H - The malformed scatterlist fed to AEAD encryption can cause the crypto layer to write ciphertext to incorrect kernel addresses, providing a memory corruption primitive that can be developed into arbitrary kernel write or code execution.\nA:H - Invalid scatterlist traversal in the crypto path can dereference bogus page pointers and kernel-oops the system; encryption failure also invokes `tls_err_abort`, reliably disrupting the affected TLS connection and potentially the hosting service."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tls/tls_sw.c"],"versions":[{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"49a5faaa471ddcd37b6893970c9916eb836e7c31","status":"affected","versionType":"git"},{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"91359966e247c0244c66d50bbb8e74aefa4321c3","status":"affected","versionType":"git"},{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"410351158dfef2d67fea6603680b3a6013c6ed9d","status":"affected","versionType":"git"},{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"acdc12b71c9aa4be5dcd2c8062753c6d2033e235","status":"affected","versionType":"git"},{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"929b1548e63ac72e104c07d8ee8cbbeeba2fa89a","status":"affected","versionType":"git"},{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"af855f4c966afafef74faf8390c7b86568c0d46d","status":"affected","versionType":"git"},{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"b9c015ef1a7bf1e8dc67f21c6381f36deb2c3a36","status":"affected","versionType":"git"},{"version":"9aaaa56845a06aeabdd597cbe19492dc01f281ec","lessThan":"ff26a0e8377dec07e4a7230db7675bed1b9a6d03","status":"affected","versionType":"git"},{"version":"d529d6c9f7e3aaeac13c4948f79799ccb825f29d","status":"affected","versionType":"git"},{"version":"5.4.14","lessThan":"5.5","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tls/tls_sw.c"],"versions":[{"version":"5.5","status":"affected"},{"version":"0","lessThan":"5.5","status":"unaffected","versionType":"semver"},{"version":"5.10.258","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.209","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.175","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.142","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.92","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.34","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.0.11","lessThanOrEqual":"7.0.*","status":"unaffected","versionType":"semver"},{"version":"7.1","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.5","versionEndExcluding":"5.10.258"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"5.15.209"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.6.142"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.12.92"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.18.34"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"7.0.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"7.1"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.4.14"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/49a5faaa471ddcd37b6893970c9916eb836e7c31"},{"url":"https://git.kernel.org/stable/c/91359966e247c0244c66d50bbb8e74aefa4321c3"},{"url":"https://git.kernel.org/stable/c/410351158dfef2d67fea6603680b3a6013c6ed9d"},{"url":"https://git.kernel.org/stable/c/acdc12b71c9aa4be5dcd2c8062753c6d2033e235"},{"url":"https://git.kernel.org/stable/c/929b1548e63ac72e104c07d8ee8cbbeeba2fa89a"},{"url":"https://git.kernel.org/stable/c/af855f4c966afafef74faf8390c7b86568c0d46d"},{"url":"https://git.kernel.org/stable/c/b9c015ef1a7bf1e8dc67f21c6381f36deb2c3a36"},{"url":"https://git.kernel.org/stable/c/ff26a0e8377dec07e4a7230db7675bed1b9a6d03"}],"title":"net: tls: prevent chain-after-chain in plain text SG","x_generator":{"engine":"bippy-1.2.0"}}}}