🇰🇷 한글 설명
Linux 커널의 nfsd 구성 요소에서 위임 회수(delegation recall) 큐 작업이 실패할 경우 CALLBACK_RUNNING 비트가 해제되지 않는 취약점이 발견되었습니다. 이로 인해 해당 비트가 영구적으로 설정되어 이후의 모든 위임 해제 요청이 무시되며, 결과적으로 충돌하는 파일 오픈이나 잠금 작업이 중단되는 현상이 발생합니다.
💡 쉬운 설명
파일 공유 서비스(NFS)에서 권한을 회수하려 할 때 오류가 발생하면 시스템이 '작업 중' 상태에 영원히 갇히게 됩니다. 이 때문에 다른 사용자가 파일을 수정하려고 해도 권한 회수가 이루어지지 않아 시스템이 멈춘 것처럼 보일 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nfsd: clear CALLBACK_RUNNING on failed delegation recall queue
nfsd_break_one_deleg() sets NFSD4_CALLBACK_RUNNING via test_and_set_bit
at entry to serialize recall work, then calls nfsd4_run_cb() to queue
the recall. When the queue attempt fails the refcount bump is undone,
but the RUNNING bit is left set. The only site that clears the bit is
nfsd41_destroy_cb() (fs/nfsd/nfs4callback.c), which runs from the
workqueue and is therefore unreachable when nothing was queued.
The bit becomes a permanent latch on dp->dl_recall.cb_flags: every
subsequent break_lease() on the same delegation hits the early-return
guard in nfsd_break_one_deleg() and silently skips the recall, so the
delegation is never broken and the conflicting open or lock stalls.
Fix by clearing NFSD4_CALLBACK_RUNNING on the !queued branch alongside
the refcount_dec.
📍 영향받는 시스템
Linux kernel (nfsd module 포함 버전)
⚔️ 공격 벡터
직접적인 공격보다는 특정 조건에서 위임 회수 실패를 유도하여 서비스 가용성을 저해하는 DoS(서비스 거부) 형태의 영향 가능성
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 nfsd_break_one_deleg() 함수의 오류 수정 사항을 반영해야 함
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 배포판 보안 공지를 통해 대조함