🇰🇷 한글 설명
Linux kernel의 IPsec(xfrm) 모듈에서 XFRMA_IF_ID 속성 크기 계산 누락으로 인한 버그입니다. xfrm_get_ae() 함수가 버퍼를 할당할 때 XFRMA_IF_ID 공간을 포함하지 않아, if_id가 설정된 상태에서 메모리 부족 오류(EMSGSIZE)가 발생하고 커널 패닉으로 이어집니다.
💡 쉬운 설명
Linux 커널의 VPN/네트워크 암호화 기능에서 메모리 크기 계산 오류로 시스템이 강제 종료될 수 있습니다. 공격자가 특정 네트워크 설정을 가진 시스템에서 의도적으로 이를 트리거하여 서비스 거부 상태를 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xfrm: account XFRMA_IF_ID in aevent size calculation
xfrm_get_ae() allocates the reply skb with xfrm_aevent_msgsize(), then
build_aevent() appends attributes including XFRMA_IF_ID when x->if_id is
set.
xfrm_aevent_msgsize() does not include space for XFRMA_IF_ID. For states
with if_id, build_aevent() can fail with -EMSGSIZE and hit BUG_ON(err < 0)
in xfrm_get_ae(), turning a malformed netlink interaction into a kernel
panic.
Account XFRMA_IF_ID in the size calculation unconditionally and replace
the BUG_ON with normal error unwinding.
📍 영향받는 시스템
Linux kernel 6.0~6.8 버전 (xfrm if_id 기능이 포함된 모든 커널)
⚔️ 공격 벡터
악의적인 netlink 요청 또는 특정 xfrm 상태 설정으로 XFRMA_IF_ID 포함 aevent 생성 시도
🛡️ 대응 방법
Linux kernel을 6.9 이상으로 업그레이드하거나 해당 패치 적용
🔧 검증 코드
커널 버전이 6.9 미만이면 'Vulnerable'이 출력되며, 6.9 이상이면 출력 없음(패치됨)
uname -r | grep -oE '^[0-9]+\.[0-9]+' | awk -F. '{if($1<6 || ($1==6 && $2<9)) print "Vulnerable"}'