🇰🇷 한글 설명
Linux 커널의 net: drop_monitor 구성 요소에서 NET_DM_ATTR_PAYLOAD 속성을 처리할 때 정보 유출 취약점이 발견되었습니다. 패킷 페이로드 길이가 4바이트 정렬되지 않을 경우, 초기화되지 않은 패딩 바이트가 사용자 공간으로 유출될 수 있습니다.
💡 쉬운 설명
컴퓨터의 메모리 데이터 중 일부가 제대로 지워지지 않은 채 외부로 전달될 수 있는 문제입니다. 이로 인해 시스템 내부의 민감한 정보가 공격자에게 노출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: drop_monitor: fix info leak in NET_DM_ATTR_PAYLOAD
net_dm_packet_report_fill() and net_dm_hw_packet_report_fill() open code
the NET_DM_ATTR_PAYLOAD attribute to avoid zeroing the packet payload
before overwriting it with skb_copy_bits().
skb_put() reserves nla_total_size(payload_len), i.e. the header plus the
NLA_ALIGN() padding, but only payload_len bytes are copied in. When
payload_len is not a multiple of 4 the 1-3 padding bytes are never
initialized and are leaked to user space inside the netlink message.
KMSAN confirms the leak for the software path when the packet payload
length is not 4-byte aligned:
BUG: KMSAN: kernel-infoleak in _copy_to_iter
_copy_to_iter
__skb_datagram_iter
skb_copy_datagram_iter
netlink_recvmsg
sock_recvmsg
__sys_recvfrom
Uninit was created at:
kmem_cache_alloc_node_noprof
__alloc_skb
net_dm_packet_work
Bytes 173-175 of 176 are uninitialized
Use __nla_reserve(), which sets up the attribute header and zeroes the
padding, instead of open coding the attribute construction.
📍 영향받는 시스템
Linux Kernel (net: drop_monitor 모듈 사용 버전)
⚔️ 공격 벡터
로컬 사용자가 Netlink 메시지를 통해 초기화되지 않은 커널 메모리 패딩 데이터를 읽어내는 방식
🛡️ 대응 방법
커널 패치를 적용하여 __nla_reserve() 함수를 사용해 속성 헤더와 패딩을 올바르게 초기화해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 최신 패치 버전인지 확인합니다.
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux