{"id":"CVE-2026-80849","revision":"9c0b2a14c9654eb4b39e120e95e53c71","records":[{"revision":"9c0b2a14c9654eb4b39e120e95e53c71","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-80849","aliases":[],"title":"net/tcp-ao: fix use-after-free of current_key on reconnect to another peer","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/tcp-ao: fix use-after-free of current_key on reconnect to another peer\n\ntcp_inbound_ao_hash() is called before bh_lock_sock_nested() is taken,\nwith only rcu_read_lock() held. On the fast path for established\nsockets, if the rnext_keyid sent by the peer differs from\ncurrent_key->sndid, the key the peer asked for is looked up and stored\nin current_key. The lookup is inside the RCU read side, but current_key\noutlives it.\n\nWhen the socket is disconnected and connect() is called again for\nanother peer, tcp_ao_connect_init() unlinks every key that does not\nmatch the new peer and frees it with call_rcu(). If current_key points\nat such a key, it is cleared to NULL.\n\nThe fast path reads sk_state only once on entry, so a softirq that got\ninto it while the socket was still established can update current_key\nafter that loop has already run. The update is inside the RCU read side,\nso it comes before the call_rcu() callback, and once the callback frees\nthe key, current_key is left pointing at freed memory.\n\nThe next transmission picks that pointer up in tcp_get_current_key().\ntcp_ao_transmit_skb() then reads the traffic key from the freed object,\nwhich is the use-after-free.\n\nWait for one grace period before unlinking, and only if a key is going\nto be removed. By the time tcp_connect() runs the socket is already in\nTCP_SYN_SENT, and TCP_AO_ESTABLISHED does not contain TCPF_SYN_SENT, so\na softirq entering after the wait cannot reach the fast path, and the\nones already in it have finished. The existing NULL handling in the loop\nis then enough.","state":0,"publishedAt":"2026-09-04T15:54:59.412+00:00","modifiedAt":"2026-10-19T08:44:43.405+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"net/ipv4/tcp_ao.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"0a3a809089eb1d4a0a2fd0c16b520d603988c859\",\n                            \"lessThan\": \"84a93b4e012587d0a4a84ffb23ec6da18e9d85f9\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"0a3a809089eb1d4a0a2fd0c16b520d603988c859\",\n                            \"lessThan\": \"73fde8fe4469f4ed8f0afcc0b9d6413002a9e6b3\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"0a3a809089eb1d4a0a2fd0c16b520d603988c859\",\n                            \"lessThan\": \"e54ad693eddb40c595add013f545354c538e325b\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"0a3a809089eb1d4a0a2fd0c16b520d603988c859\",\n                            \"lessThan\": \"2857dcbd03cf3354af0fba1b65c6a260fb43811a\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"0a3a809089eb1d4a0a2fd0c16b520d603988c859\",\n                            \"lessThan\": \"da4471557f279d0f56605158a625bb6e49ef7d41\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"net/ipv4/tcp_ao.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"6.7\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"6.7\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.12.108\",\n                            \"lessThanOrEqual\": \"6.12.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.18.49\",\n                            \"lessThanOrEqual\": \"6.18.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.1.13\",\n                            \"lessThanOrEqual\": \"7.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.2.3\",\n                            \"lessThanOrEqual\": \"7.2.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.3\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[],"references":["https://git.kernel.org/stable/c/84a93b4e012587d0a4a84ffb23ec6da18e9d85f9","https://git.kernel.org/stable/c/73fde8fe4469f4ed8f0afcc0b9d6413002a9e6b3","https://git.kernel.org/stable/c/e54ad693eddb40c595add013f545354c538e325b","https://git.kernel.org/stable/c/2857dcbd03cf3354af0fba1b65c6a260fb43811a","https://git.kernel.org/stable/c/da4471557f279d0f56605158a625bb6e49ef7d41"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-80849","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-80849","identifiers":["CVE-2026-80849"]},"retained":false,"historicalAffected":[]}],"coverage":[]}