🇰🇷 한글 설명
리눅스 커널의 vsock/virtio 모듈에서 비선형 버퍼 처리 시 iov_iter.count가 초기화되지 않아 페이로드가 복사되지 않는 결함이 있습니다. 이로 인해 모니터링 인터페이스로 전달되는 데이터가 비어 있거나 초기화되지 않은 상태로 남게 됩니다.
💡 쉬운 설명
시스템의 네트워크 모니터링 기능이 작동할 때 필요한 데이터가 제대로 복사되지 않는 오류입니다. 이 결함으로 인해 보안 모니터링 도구가 실제 트래픽 데이터를 보지 못하게 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
vsock/virtio: fix empty payload in tap skb for non-linear buffers
For non-linear skbs, virtio_transport_build_skb() goes through
virtio_transport_copy_nonlinear_skb() to copy the original payload
in the new skb to be delivered to the vsockmon tap device.
This manually initializes an iov_iter but does not set iov_iter.count.
Since the iov_iter is zero-initialized, the copy length is zero and no
payload is actually copied to the monitor interface, leaving data
un-initialized.
Fix this by removing the linear vs non-linear split and using
skb_copy_datagram_iter() with iov_iter_kvec() for all cases, as
vhost-vsock already does. This handles both linear and non-linear skbs,
properly initializes the iov_iter, and removes the now unused
virtio_transport_copy_nonlinear_skb().
While touching this code, let's also check the return value of
skb_copy_datagram_iter(), even though it's unlikely to fail.
📍 영향받는 시스템
Linux kernel (vsock/virtio 서브시스템이 포함된 모든 버전)
⚔️ 공격 벡터
로컬에서 vsock 연결을 생성하여 모니터링 인터페이스의 데이터 무결성을 저해하거나 감시 회피
🛡️ 대응 방법
리눅스 커널을 최신 안정 버전으로 업데이트하여 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 CVE에 대해 패치된 최신 버전인지 확인