🇰🇷 한글 설명
Linux 커널의 nfsd 구성 요소에서 nfsd4_create 함수 내 ACL 충돌 방지 로직이 잘못 구현되어 발생하는 취약점입니다. 특정 클라이언트 요청 시 기존 ACL 객체를 해제하지 않고 덮어씀으로써 메모리 누수가 발생하며, 반복적인 요청을 통해 시스템의 슬랩(slab) 메모리를 고갈시킬 수 있습니다.
💡 쉬운 설명
리눅스 서버의 파일 공유 기능(NFS)에서 특정 요청을 반복하면 서버의 메모리가 계속해서 새어나가게 됩니다. 이로 인해 결국 서버의 메모리가 가득 차서 시스템이 멈추거나 느려질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfsd: fix dead ACL conflict guard in nfsd4_create
nfsd4_create() steals create->cr_dpacl/cr_pacl into the local
nfsd_attrs via the designated initializer, then immediately sets the
source pointers to NULL. The subsequent conflict guard tests the
already-nilled source fields, making it permanently dead code:
if (create->cr_acl) {
if (create->cr_dpacl || create->cr_pacl) /* always false */
When a client encodes both FATTR4_WORD0_ACL and
FATTR4_WORD2_POSIX_{DEFAULT,ACCESS}_ACL in the same CREATE fattr
bitmap, nfsd4_acl_to_attr() overwrites attrs.na_pacl/na_dpacl without
releasing the originals, leaking two posix_acl slab objects per
request. Repeated requests cause unbounded slab exhaustion.
Fix by checking attrs.na_dpacl/na_pacl (the stolen values) instead of
the nilled create->cr_dpacl/cr_pacl, matching the correct pattern
already used in nfsd4_setattr().
📍 영향받는 시스템
Linux kernel (nfsd module 사용 환경)
⚔️ 공격 벡터
특수하게 조작된 FATTR4 ACL 비트맵을 포함한 NFSv4 CREATE 요청을 반복적으로 전송
🛡️ 대응 방법
nfsd4_create 함수 내 ACL 충돌 검사 로직이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 보안 업데이트 버전인지 배포판 보안 공지를 통해 확인