🇰🇷 한글 설명
Linux 커널의 IPVS 구성 요소에서 ICMPv6 패킷에 대한 체크섬 검증이 누락된 취약점이 발견되었습니다. 이로 인해 하드웨어가 체크섬을 검증하지 않을 경우 잘못된 ICMPv6 메시지가 처리될 수 있으며, 이를 해결하기 위해 TCP, UDP, ICMP 모두에 적용되는 공통 체크섬 검증 헬퍼 함수가 도입되었습니다.
💡 쉬운 설명
네트워크 데이터를 검사할 때 데이터가 변조되었는지 확인하는 과정이 일부 빠져 있었습니다. 이로 인해 잘못된 네트워크 신호가 시스템에 전달될 위험이 있어 이를 수정하는 보안 패치가 적용되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ipvs: fix the checksum validations
ip_vs_in_icmp_v6() is missing checksum validation for ICMPv6
packets from clients. In fact, as for TCP/UDP we should
validate the checksum for ICMP packets only when we
mangle the packets on MASQ or on reply for tunnel.
Also, Sashiko points out that handle_response_icmp() being
common for IPv4 and IPv6 is missing the pseudo-header
calculation while validating ICMPv6 messages from real
servers which is a problem if checksum is not validated
by the hardware.
Fix the problems by creating ip_vs_checksum_common_check()
helper and use it for TCP/UDP/ICMP both for IPv4 and IPv6.
Rely on the nf_checksum() for validating the ICMP messages
but use it also for TCP and UDP.
Use correct IP offset for IP_VS_DBG_RL_PKT for TCP/UDP/SCTP.
IPVS packets (TCP/UDP/SCTP/ICMP) do not need checksum
validation on LOCAL_OUT (local clients or local real
servers) and on FORWARD (traffic from servers on LAN).
Do it only on LOCAL_IN, in case nf_checksum() is not
called on PRE_ROUTING.
Also, ip_vs_checksum_complete() can be marked static.
📍 영향받는 시스템
Linux Kernel (IPVS 모듈 사용 시스템)
⚔️ 공격 벡터
조작된 ICMPv6 패킷을 전송하여 체크섬 검증을 우회하고 잘못된 네트워크 응답을 유도
🛡️ 대응 방법
IPVS 체크섬 검증 로직이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이상인지 확인