🇰🇷 한글 설명
Linux 커널의 nfsd 구성 요소에서 ff_encode_getdeviceinfo 함수가 XDR 패딩 계산을 잘못 수행하는 취약점이 발견되었습니다. 이로 인해 선언된 데이터 길이와 실제 인코딩된 데이터 사이에 불일치가 발생하여, 클라이언트에 이전 응답 페이지의 잔여 데이터가 유출되거나 후속 데이터 디코딩이 어긋날 수 있습니다.
💡 쉬운 설명
데이터를 보낼 때 실제 크기보다 더 큰 크기라고 잘못 알려주는 오류가 있습니다. 이 과정에서 메모리에 남아있던 이전 데이터가 함께 전송되어 정보가 유출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfsd: fix XDR padding calculation in ff_encode_getdeviceinfo
nfsd4_ff_encode_getdeviceinfo() computes the da_addr_body reservation
as 16 + netid_len + addr_len, but the subsequent xdr_encode_opaque()
calls emit 8 + round_up(netid_len, 4) + round_up(addr_len, 4) bytes.
The mismatch means the declared da_addr_body length exceeds the actual
encoded data by 2-8 bytes on every flexfile GETDEVICEINFO reply,
leaking stale reply-page content to the client and mis-aligning the
subsequent version list decode.
Use xdr_align_size() for each string length to match what
xdr_encode_opaque() actually writes.
📍 영향받는 시스템
Linux kernel (nfsd component)
⚔️ 공격 벡터
네트워크를 통해 NFS GETDEVICEINFO 요청을 보내어 잘못된 패딩으로 인한 메모리 잔여 데이터 유출 유도
🛡️ 대응 방법
XDR 패딩 계산 시 xdr_align_size()를 사용하도록 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인