🇰🇷 한글 설명
Linux 커널의 netfilter 구성 요소 중 nft_objref에서 발생하는 취약점으로, OUTPUT 훅에서 synproxy 상태 저장 객체를 참조할 때 무한 재귀 호출이 발생하여 커널 충돌(Kernel Crash)을 유발합니다. 이 문제는 objref 및 objrefmap 표현식에 대한 검증 로직을 구현함으로써 해결되었습니다.
💡 쉬운 설명
리눅스 시스템의 네트워크 관리 기능에서 특정 설정을 잘못 사용하면 시스템이 무한 루프에 빠져 갑자기 꺼질 수 있는 문제입니다. 보안 패치를 통해 잘못된 설정이 들어오면 시스템이 멈추는 대신 오류 메시지를 띄우도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nft_objref: validate objref and objrefmap expressions
Referencing a synproxy stateful object from OUTPUT hook causes kernel
crash due to infinite recursive calls:
BUG: TASK stack guard page was hit at 000000008bda5b8c (stack is 000000003ab1c4a5..00000000494d8b12)
[...]
Call Trace:
__find_rr_leaf+0x99/0x230
fib6_table_lookup+0x13b/0x2d0
ip6_pol_route+0xa4/0x400
fib6_rule_lookup+0x156/0x240
ip6_route_output_flags+0xc6/0x150
__nf_ip6_route+0x23/0x50
synproxy_send_tcp_ipv6+0x106/0x200
synproxy_send_client_synack_ipv6+0x1aa/0x1f0
nft_synproxy_do_eval+0x263/0x310
nft_do_chain+0x5a8/0x5f0 [nf_tables
nft_do_chain_inet+0x98/0x110
nf_hook_slow+0x43/0xc0
__ip6_local_out+0xf0/0x170
ip6_local_out+0x17/0x70
synproxy_send_tcp_ipv6+0x1a2/0x200
synproxy_send_client_synack_ipv6+0x1aa/0x1f0
[...]
Implement objref and objrefmap expression validate functions.
Currently, only NFT_OBJECT_SYNPROXY object type requires validation.
This will also handle a jump to a chain using a synproxy object from the
OUTPUT hook.
Now when trying to reference a synproxy object in the OUTPUT hook, nft
will produce the following error:
synproxy_crash.nft: Error: Could not process rule: Operation not supported
synproxy name mysynproxy
^^^^^^^^^^^^^^^^^^^^^^^^
📍 영향받는 시스템
Linux kernel (netfilter/nftables component)
⚔️ 공격 벡터
공격자가 조작된 nftables 규칙을 사용하여 OUTPUT 훅에서 synproxy 객체를 참조하도록 유도하여 커널 패닉 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 nft_objref 검증 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인