🇰🇷 한글 설명
Linux 커널의 XFS 파일시스템에서 capability 검사에 사용된 함수가 잘못 선택되어 있었습니다. capable() 대신 has_capability_noaudit()을 사용하면서 유효 자격증명(effective credentials)이 아닌 실제 자격증명(real credentials)을 검사하게 되었고, 이로 인해 그룹 쿼터 검사가 우회될 수 있었습니다. 수정은 ns_capable_noaudit()을 사용하도록 변경하는 것입니다.
💡 쉬운 설명
파일의 그룹 소유자를 같은 사용자가 속한 다른 그룹으로 바꾸면 그 그룹의 디스크 할당량 제한을 피할 수 있는 결함입니다. 이는 권한 검사 함수를 잘못 선택했기 때문에 발생했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xfs: fix capability check in xfs
An user reported a bug where he managed to evade group's quota
by changing a file's gid to a different group id the same user
belonged to, even though quotas were enforced on both gids and the
file's size was big enough to exceed the quota's hardlimit.
Commit eba0549bc7d1 replaced a capable() call by a
has_capability_noaudit() to prevent unnecessary selinux audit messages.
Turns out that both calls have slightly different semantics even though
their documentation seems similar. Where in a nutshell:
capable() - Tests the task's effective credentials
has_ns_capability_noaudit() - Tests the task's real credentials
This most of the time has no practical difference but in some cases like
changing attrs (specifically group id in this case) through a NFS client
this will allow the quota code to use XFS_QMOPT_FORCE_RES, effectively
bypassing quota accounting checks.
Using instead ns_capable_noaudit() should fix this issue and prevent
selinux audit messages.
This also fix the remaining calls to has_capability_noaudit()
📍 영향받는 시스템
XFS 파일시스템을 사용하는 수정 이전의 Linux 커널 버전 (정확한 영향 범위는 해당 배포판 보안 공지 확인 필요)
⚔️ 공격 벡터
NFS 클라이언트 등을 통해 파일의 그룹 ID를 변경하여 그룹 쿼터 회계 검사를 우회
🛡️ 대응 방법
커널을 업데이트하여 ns_capable_noaudit() 사용 패치가 적용된 버전으로 교체
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지의 CVE-2026-99131 패치 버전과 비교하여, 현재 버전이 패치 버전 이상이면 수정된 것이고 미만이면 취약합니다.