🇰🇷 한글 설명
Linux 커널의 NFSD에서 관리자에 의해 취소된 레이아웃 stid에 대해 클라이언트가 FREE_STATEID를 보낼 때, 특정 케이스 처리가 누락되어 stid가 메모리에서 해제되지 않는 취약점입니다. 이로 인해 해당 stid가 클라이언트가 파괴될 때까지 IDR 및 클라이언트 목록에 남아 리소스 누수가 발생할 수 있습니다.
💡 쉬운 설명
리눅스 서버의 파일 공유 기능에서 사용이 끝난 데이터 식별 정보가 메모리에서 제대로 삭제되지 않는 문제입니다. 이 문제가 지속되면 서버의 메모리가 조금씩 계속 차올라 시스템 성능이 떨어지거나 불안정해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
NFSD: Handle layout stid in nfsd4_drop_revoked_stid()
nfsd4_drop_revoked_stid() has no SC_TYPE_LAYOUT case, so when a
client sends FREE_STATEID for an admin-revoked layout stid, the
default branch releases cl_lock and returns without unhashing or
releasing the stid. The stid remains in the IDR and on the
per-client list until the client is destroyed.
Remove the layout stid from the per-client list and call
nfs4_put_stid() to drop the creation reference. When the
refcount reaches zero, nfsd4_free_layout_stateid() handles the
remaining cleanup: cancelling the fence worker, removing from
the per-file list, and freeing the slab object.
📍 영향받는 시스템
Linux kernel (NFSD module 포함 버전)
⚔️ 공격 벡터
악의적인 클라이언트가 관리자에 의해 취소된 레이아웃 stid에 대해 FREE_STATEID 요청을 반복적으로 전송하여 메모리 누수 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인