🇰🇷 한글 설명
Linux 커널의 ipv6 모듈 내 ip6_finish_output2() 함수에서 Use-After-Free 취약점이 발견되었습니다. lwtunnel_xmit() 호출 과정에서 IPv6 목적지 주소 포인터가 가리키는 메모리가 해제될 수 있으며, 이후 해당 포인터를 다시 참조할 때 시스템 충돌이나 데이터 유출이 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 처리하는 과정에서 이미 사용이 끝나서 사라진 메모리 주소를 다시 사용하려고 시도하는 오류입니다. 이로 인해 컴퓨터 시스템이 갑자기 멈추거나 중요한 정보가 외부로 새 나갈 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ipv6: fix use-after-free in ip6_finish_output2()
ip6_finish_output2() caches a pointer to the IPv6 destination
address (daddr) before invoking lwtunnel_xmit(). The LWT-BPF
transmit path or other encapsulation operations within
lwtunnel_xmit() can reallocate the skb head, freeing the memory
that daddr points to. When lwtunnel_xmit() returns
LWTUNNEL_XMIT_CONTINUE, the function continues to use the stale
daddr pointer to compute the nexthop and to look up or create the
neighbour entry. This results in a use-after-free read, which can
leak sensitive kernel data, pollute the neighbour table with
arbitrary values, misdirect traffic, or crash the system.
Fix this by re-fetching the IPv6 header and the destination
address pointer after lwtunnel_xmit() returns
LWTUNNEL_XMIT_CONTINUE, ensuring that the subsequent nexthop
computation and neighbour lookup operate on valid memory.
📍 영향받는 시스템
Linux Kernel (IPv6 및 LWTunnel 기능이 활성화된 버전)
⚔️ 공격 벡터
특수하게 조작된 IPv6 패킷을 전송하여 캡슐화 과정을 유도함으로써 메모리 오류를 발생시킴
🛡️ 대응 방법
lwtunnel_xmit() 호출 이후 IPv6 헤더와 목적지 주소 포인터를 다시 가져오도록 커널 패치를 적용해야 함
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.