{"api_version":"1","generated_at":"2026-08-22T23:40:00+00:00","cve":"CVE-2026-74611","urls":{"html":"https://cve.report/CVE-2026-74611","api":"https://cve.report/api/cve/CVE-2026-74611.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-74611","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-74611"},"summary":{"title":"tls: rx: restore msg_iter before TLS 1.3 optimistic retry","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ntls: rx: restore msg_iter before TLS 1.3 optimistic retry\n\ntls_decrypt_sg() advances msg->msg_iter when it maps user pages for\nthe optimistic TLS 1.3 zero-copy path. If the decrypted record turns\nout not to be unpadded application data, tls_decrypt_sw() retries into\na kernel skb, but leaves the iterator advanced.\n\nThe subsequent copy from the skb then writes decrypted bytes again at\na later point in the caller iovecs while recvmsg() reports only the\npost-retry length. A TLS peer can trigger this after the receiver\nenables TLS_RX_EXPECT_NO_PAD.\n\nRevert the iterator by the number of bytes consumed by the optimistic\nmapping before retrying without zero-copy.\n\nAdd a selftest which sends a TLS 1.3 control record with\nTLS_RX_EXPECT_NO_PAD enabled and verifies that recvmsg() does not\noverwrite later iovecs beyond the returned length.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-22 16:16:33","updated_at":"2026-08-22 16:16:33"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/3c837266a734e2a22b24d2d567404a501d405835","name":"https://git.kernel.org/stable/c/3c837266a734e2a22b24d2d567404a501d405835","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/68787940274ec89f41dc91b1a68ee1a16a90735f","name":"https://git.kernel.org/stable/c/68787940274ec89f41dc91b1a68ee1a16a90735f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/1c8629651cb54f7b51db8fc0b1a9944e4a4b0f5e","name":"https://git.kernel.org/stable/c/1c8629651cb54f7b51db8fc0b1a9944e4a4b0f5e","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-74611","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-74611","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected ce61327ce989b63c0bd1cc7afee00e218ee696ac 68787940274ec89f41dc91b1a68ee1a16a90735f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected ce61327ce989b63c0bd1cc7afee00e218ee696ac 3c837266a734e2a22b24d2d567404a501d405835 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected ce61327ce989b63c0bd1cc7afee00e218ee696ac 1c8629651cb54f7b51db8fc0b1a9944e4a4b0f5e git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.0","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.0 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.45 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.9 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/tls/tls_sw.c","tools/testing/selftests/net/tls.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"68787940274ec89f41dc91b1a68ee1a16a90735f","status":"affected","version":"ce61327ce989b63c0bd1cc7afee00e218ee696ac","versionType":"git"},{"lessThan":"3c837266a734e2a22b24d2d567404a501d405835","status":"affected","version":"ce61327ce989b63c0bd1cc7afee00e218ee696ac","versionType":"git"},{"lessThan":"1c8629651cb54f7b51db8fc0b1a9944e4a4b0f5e","status":"affected","version":"ce61327ce989b63c0bd1cc7afee00e218ee696ac","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/tls/tls_sw.c","tools/testing/selftests/net/tls.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.0"},{"lessThan":"6.0","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.45","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.9","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.45","versionStartIncluding":"6.0","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.9","versionStartIncluding":"6.0","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2","versionStartIncluding":"6.0","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ntls: rx: restore msg_iter before TLS 1.3 optimistic retry\n\ntls_decrypt_sg() advances msg->msg_iter when it maps user pages for\nthe optimistic TLS 1.3 zero-copy path. If the decrypted record turns\nout not to be unpadded application data, tls_decrypt_sw() retries into\na kernel skb, but leaves the iterator advanced.\n\nThe subsequent copy from the skb then writes decrypted bytes again at\na later point in the caller iovecs while recvmsg() reports only the\npost-retry length. A TLS peer can trigger this after the receiver\nenables TLS_RX_EXPECT_NO_PAD.\n\nRevert the iterator by the number of bytes consumed by the optimistic\nmapping before retrying without zero-copy.\n\nAdd a selftest which sends a TLS 1.3 control record with\nTLS_RX_EXPECT_NO_PAD enabled and verifies that recvmsg() does not\noverwrite later iovecs beyond the returned length."}],"providerMetadata":{"dateUpdated":"2026-08-22T15:31:57.534Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/68787940274ec89f41dc91b1a68ee1a16a90735f"},{"url":"https://git.kernel.org/stable/c/3c837266a734e2a22b24d2d567404a501d405835"},{"url":"https://git.kernel.org/stable/c/1c8629651cb54f7b51db8fc0b1a9944e4a4b0f5e"}],"title":"tls: rx: restore msg_iter before TLS 1.3 optimistic retry","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-74611","datePublished":"2026-08-22T15:31:57.534Z","dateReserved":"2026-08-15T05:44:03.920Z","dateUpdated":"2026-08-22T15:31:57.534Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-22 16:16:33","lastModifiedDate":"2026-08-22 16:16:33","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"74611","Ordinal":"1","Title":"tls: rx: restore msg_iter before TLS 1.3 optimistic retry","CVE":"CVE-2026-74611","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"74611","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\ntls: rx: restore msg_iter before TLS 1.3 optimistic retry\n\ntls_decrypt_sg() advances msg->msg_iter when it maps user pages for\nthe optimistic TLS 1.3 zero-copy path. If the decrypted record turns\nout not to be unpadded application data, tls_decrypt_sw() retries into\na kernel skb, but leaves the iterator advanced.\n\nThe subsequent copy from the skb then writes decrypted bytes again at\na later point in the caller iovecs while recvmsg() reports only the\npost-retry length. A TLS peer can trigger this after the receiver\nenables TLS_RX_EXPECT_NO_PAD.\n\nRevert the iterator by the number of bytes consumed by the optimistic\nmapping before retrying without zero-copy.\n\nAdd a selftest which sends a TLS 1.3 control record with\nTLS_RX_EXPECT_NO_PAD enabled and verifies that recvmsg() does not\noverwrite later iovecs beyond the returned length.","Type":"Description","Title":"tls: rx: restore msg_iter before TLS 1.3 optimistic retry"}]}}}