🇰🇷 한글 설명
Linux 커널의 net/tcp-ao 구성 요소에서 del_async 경로 실행 시 Use-After-Free 취약점이 발견되었습니다. 소켓이 LISTEN 상태로 전환될 때 특정 키 값이 남아있을 수 있으며, 비동기 삭제 과정에서 포인터를 초기화하지 않아 메모리 해제 후 잘못된 참조가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 메모리에서 이미 사용이 끝나 삭제된 데이터를 프로그램이 다시 읽으려고 시도할 때 발생하는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 공격에 악용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/tcp-ao: fix use-after-free of key in del_async path
In tcp_ao_delete_key(), the del_async path skips the current_key
and rnext_key validity checks present in the synchronous path,
assuming these pointers are always NULL on LISTEN sockets. However,
if a key was added with set_current=1/set_rnext=1 while the socket
was in CLOSE state, current_key and rnext_key will be non-NULL
after listen() transitions the socket to LISTEN.
When such a key is deleted with del_async=1, hlist_del_rcu() and
call_rcu() free the key without clearing the dangling pointers.
After the RCU grace period, getsockopt(TCP_AO_INFO) dereferences
current_key->sndid and rnext_key->rcvid from freed slab memory.
Clear current_key and rnext_key in the del_async path when they
reference the key being deleted.
📍 영향받는 시스템
Linux Kernel (net/tcp-ao 모듈을 사용하는 시스템)
⚔️ 공격 벡터
특정 TCP Authentication Option(TCP-AO) 설정이 된 소켓을 대상으로 비동기 삭제를 유도하여 메모리 참조 오류 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 del_async 경로의 포인터 초기화 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 보안 공지(Security Advisory)와 대조합니다.