🇰🇷 한글 설명
Linux 커널의 nf_tables 구성 요소에서 nf_tables_addchain() 함수 호출 시 Use-After-Free 취약점이 발견되었습니다. 체인 등록 중 오류가 발생할 경우 RCU grace period를 기다리지 않고 메모리를 해제하여, 데이터 덤프 프로세스나 패킷 처리 경로에서 해제된 메모리에 접근할 수 있습니다.
💡 쉬운 설명
네트워크 규칙을 설정하는 과정에서 오류가 발생했을 때, 사용 중인 메모리를 너무 빨리 삭제하여 시스템이 충돌하거나 보안 문제가 생길 수 있는 결함입니다. 이로 인해 네트워크 데이터가 처리되는 도중 시스템이 멈추거나 잘못된 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nf_tables: fix use-after-free in nf_tables_addchain()
nf_tables_addchain() publishes the chain to table->chains via
list_add_tail_rcu() (in nft_chain_add()) before registering hooks.
If nf_tables_register_hook() then fails, the error path calls
nft_chain_del() (list_del_rcu()) followed by nf_tables_chain_destroy()
with no RCU grace period in between.
This creates two use-after-free conditions:
1) Control-plane: nf_tables_dump_chains() traverses table->chains
under rcu_read_lock(). A concurrent dump can still be walking
the chain when the error path frees it.
2) Packet path: for NFPROTO_INET, nf_register_net_hook() briefly
installs the IPv4 hook before IPv6 registration fails. Packets
entering nft_do_chain() via the transient IPv4 hook can still be
dereferencing chain->blob_gen_X when the error path frees the
chain.
Add synchronize_rcu() between nft_chain_del() and the chain destroy
so that all RCU readers -- both dump threads and in-flight packet
evaluation -- have finished before the chain is freed.
📍 영향받는 시스템
Linux Kernel (nf_tables 모듈을 사용하는 시스템)
⚔️ 공격 벡터
특수하게 조작된 네트워크 체인 생성 요청을 통해 오류 경로를 유도하여 메모리 참조 오류 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 synchronize_rcu()가 적용된 수정본을 설치하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.