CVE-2026-80849 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 04.

리눅스 커널에서 다음 취약점이 해결되었습니다:

net/tcp-ao: 다른 피어와의 재연결 시 current_key의 use-after-free 수정

tcp_inbound_ao_hash()는 bh_lock_sock_nested()이 획득되기 전에 호출되며, 이때 rcu_read_lock()만 보유됩니다. 확립된 소켓에 대한 빠른 경로에서 페어가 보낸 rnext_keyid가 current_key->sndid와 다른 경우, 페어가 요청한 키를 조회하여 current_key에 저장합니다. 이 조회는 RCU 읽기 사이드 내에서 수행되지만, current_key의 수명은 이를 초과합니다.

소켓이 연결 해제되고 다시 connect()가 호출되어 다른 피어로 연결할 때, tcp_ao_connect_init()은 새 페어와 일치하지 않는 모든 키를 언링크하고 call_rcu()로 해지합니다. 만약 current_key가 이러한 키를 가리키고 있다면, 해당 값은 NULL로 초기화됩니다.

빠른 경로는 진입 시 sk_state를 한 번만 읽으므로, 소켓이 여전히 확립된 상태일 때 발생한 softirq는 이미 루프가 실행된 후에 current_key를 업데이트할 수 있습니다. 이 업데이트는 RCU 읽기 사이드 내에서 발생하므로 call_rcu() 콜백보다 먼저 수행되며, 콜백이 키를 해지하면 current_key는 해제된 메모리를 가리킨 채로 남게 됩니다.

다음 전송 시 tcp_get_current_key()에서 해당 포인터가 참조됩니다. 이후 tcp_ao_transmit_skb()은 해제된 객체로부터 트래픽 키를 읽는데, 이것이 바로 use-after-free입니다.

키가 제거될 경우에만 언링크하기 전에 하나의 그race 기간을 기다립니다. tcp_connect()이 실행되는 시점에는 소켓이 이미 TCP_SYN_SENT 상태이며, TCP_AO_ESTABLISHED는 TCPF_SYN_SENT를 포함하지 않으므로, 대기 이후에 진입하는 softirq는 빠른 경로에 도달할 수 없으며, 이미 해당 경로에 있는 것들은 완료됩니다. 루프 내의 기존 NULL 처리가 충분해집니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2026. 08. 26.

모더레이션

수락

항목

VDB-398910

EPSS

0.00000

출처

Might our Artificial Intelligence support you?

Check our Alexa App!