🇰🇷 한글 설명
Linux 커널의 xfrm/iptfs 구성 요소에서 frag 참조 복사 시 SKBFL_SHARED_FRAG 플래그를 제대로 전달하지 않는 취약점이 발견되었습니다. 이로 인해 ESP 복호화 과정에서 공유 중인 페이지를 덮어쓰게 되어 커널 메모리 오염 및 시스템 패닉(Panic)이 발생할 수 있습니다.
💡 쉬운 설명
데이터를 처리하는 과정에서 '이 데이터는 다른 곳에서도 사용 중'이라는 표시를 누락하여 발생한 문제입니다. 이 표시가 없으면 시스템이 데이터를 마음대로 수정하다가 컴퓨터 전체가 멈추거나 오류가 날 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xfrm: iptfs: propagate SKBFL_SHARED_FRAG in iptfs_skb_add_frags()
When iptfs_skb_add_frags() copies frag references from the source
frag walk into a new SKB, it increments the page reference count via
__skb_frag_ref() but does not propagate SKBFL_SHARED_FRAG to the
destination SKB's skb_shinfo->flags.
If the source SKB carries shared frags (e.g. from a page-pool backed
receive path), the new inner SKB will appear to ESP as having privately
owned frags. A subsequent esp_input() call for a nested transport-mode
SA then takes the no-COW fast path and decrypts in place, writing over
pages that are still referenced by the outer IPTFS SKB. This causes
kernel-visible memory corruption and can trigger a panic.
All other frag-transfer helpers in the kernel (skb_try_coalesce,
skb_gro_receive, __pskb_copy_fclone, skb_shift, skb_segment) correctly
propagate SKBFL_SHARED_FRAG; align iptfs_skb_add_frags() with this
convention by setting the flag inside the loop immediately after
__skb_frag_ref() and nr_frags++, so every exit path that attaches a frag
unconditionally propagates SKBFL_SHARED_FRAG.
📍 영향받는 시스템
Linux Kernel (xfrm/iptfs 모듈을 사용하는 시스템)
⚔️ 공격 벡터
특수하게 조작된 ESP(Encapsulating Security Payload) 패킷을 전송하여 커널 메모리 오염 유도
🛡️ 대응 방법
iptfs_skb_add_frags() 함수에 SKBFL_SHARED_FRAG 플래그 전파 로직이 포함된 최신 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.