🇰🇷 한글 설명
Linux 커널의 isofs 파일 시스템에서 NFS 파일 핸들을 통해 조작된 블록 번호를 처리할 때 발생하는 취약점입니다. 공격자가 조작된 파일 핸들을 사용하면 서버가 백킹 디바이스의 임의의 블록을 iso_directory_record로 읽어 들여, 인접한 파티션의 데이터를 dentry 메타데이터 형태로 NFS 클라이언트에 노출할 수 있습니다.
💡 쉬운 설명
해커가 특수하게 조작된 요청을 보내면, 서버가 원래 보여주면 안 되는 다른 데이터 영역을 읽어서 정보를 유출할 수 있는 문제입니다. 이는 시스템의 보안 경계를 넘어 다른 데이터에 접근할 수 있게 만듭니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
isofs: validate block number from NFS file handle in isofs_export_iget
isofs_fh_to_dentry() and isofs_fh_to_parent() pass an attacker-
controlled block number (ifid->block or ifid->parent_block) from
the NFS file handle to isofs_export_iget(), which only rejects
block == 0 before calling isofs_iget() and ultimately sb_bread().
A crafted file handle with fh_len sufficient to pass the check
added by commit 0405d4b63d08 ("isofs: Prevent the use of too small
fid") can still drive the server to read any in-range block on the
backing device as if it were an iso_directory_record. That earlier
fix was assigned CVE-2025-37780.
sb_bread() on an out-of-range block returns NULL cleanly via the
EIO path, so there is no memory-safety violation. For in-range
reads of adjacent-partition data on the same block device, the
unrelated bytes end up in iso_inode_info fields that reach the NFS
client as dentry metadata. The deployment surface (isofs exported
over NFS from loop-mounted images) is narrow and requires an
authenticated NFS peer, but the malformed-file-handle class is
reportable as hardening next to the existing CVE-2025-37780 fix.
Reject block >= ISOFS_SB(sb)->s_nzones in isofs_export_iget() so
the check covers both isofs_fh_to_dentry() and isofs_fh_to_parent()
call sites with a single line.
📍 영향받는 시스템
isofs를 NFS로 내보내는(export) 기능을 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
인증된 NFS 피어가 조작된 블록 번호를 포함한 NFS 파일 핸들을 전송하여 공격
🛡️ 대응 방법
isofs_export_iget() 함수에서 블록 번호가 ISOFS 존 범위를 벗어나는지 검증하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 최신 보안 패치 버전인지 확인