🇰🇷 한글 설명
Linux 커널의 NFSv4.2 프로토콜 구현 중 READ_PLUS 작업 시 스크래치 버퍼를 중복 해제하거나 잘못된 포인터를 참조하는 취약점이 발견되었습니다. 이로 인해 커널 오류(oops)가 발생하며 시스템 안정성이 저해될 수 있습니다.
💡 쉬운 설명
컴퓨터가 네트워크를 통해 파일을 읽을 때 사용하는 임시 메모리 공간을 관리하는 과정에서 실수가 발생했습니다. 이 실수 때문에 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
NFSv4.2: Rework scratch handling for READ_PLUS (again)
I found that the read code might send multiple requests using the same
nfs_pgio_header, but nfs4_proc_read_setup() is only called once. This is
how we ended up occasionally double-freeing the scratch buffer, but also
means we set a NULL pointer but non-zero length to the xdr scratch
buffer. This results in an oops the first time decoding needs to copy
something to scratch, which frequently happens when decoding READ_PLUS
hole segments.
I fix this by moving scratch handling into the pageio read code. I
provide a function to allocate scratch space for decoding read replies,
and free the scratch buffer when the nfs_pgio_header is freed.
📍 영향받는 시스템
NFSv4.2 프로토콜을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된 NFSv4.2 READ_PLUS 요청을 전송하여 커널 메모리 오류 유도
🛡️ 대응 방법
NFSv4.2 스크래치 버퍼 처리 로직이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 버전인지 배포판 보안 공지를 통해 확인