🇰🇷 한글 설명
Linux 커널의 isofs에서 Rock Ridge CE 지속 확장에 대한 볼륨 크기 검증 누락으로 인해 인접 파일시스템 데이터 읽기 가능성이 있습니다. 이는 악의적으로 제작된 ISO 이미지를 통해 정보 유출로 이어질 수 있는 취약점입니다.
💡 쉬운 설명
Linux 시스템이 악의적으로 조작된 CD/DVD 이미지를 마운트할 때, 시스템의 다른 파일 시스템 정보를 유출할 수 있는 구멍이 있습니다. 이는 시스템이 이미지 내의 잘못된 위치를 제대로 검사하지 않아 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
isofs: validate Rock Ridge CE continuation extent against volume size
rock_continue() reads rs->cont_extent verbatim from the Rock Ridge CE
record and passes it to sb_bread() without checking that the block
number is within the mounted ISO 9660 volume. commit e595447e177b
("[PATCH] rock.c: handle corrupted directories") added cont_offset
and cont_size rejection for the CE continuation but did not validate
the extent block number itself. commit f54e18f1b831 ("isofs: Fix
infinite looping over CE entries") later capped the CE chain length
at RR_MAX_CE_ENTRIES = 32 but again left the block number unchecked.
With a crafted ISO mounted via udisks2 (desktop optical auto-mount)
or via CAP_SYS_ADMIN mount, rs->cont_extent can therefore point at
an out-of-range block or at blocks belonging to an adjacent
filesystem on the same block device. sb_bread() on an out-of-range
block returns NULL cleanly via the block layer EIO path, so there
is no memory-safety violation. For in-range reads of adjacent-
filesystem data, the CE buffer is parsed as Rock Ridge records and
only the text of SL sub-records reaches userspace through
readlink(), which makes the info-leak channel narrow and difficult
to exploit; still, rejecting the malformed CE outright matches the
rejection shape already present in the same function for
cont_offset and cont_size.
Add an ISOFS_SB(sb)->s_nzones bounds check to rock_continue() next
to the existing offset/size rejection, printing the same
corrupted-directory-entry notice.
📍 영향받는 시스템
Linux kernel (isofs 모듈)
⚔️ 공격 벡터
악성 ISO 9660 이미지 생성 및 udisks2 자동 마운트 또는 CAP_SYS_ADMIN 권한을 이용한 수동 마운트
🛡️ 대응 방법
Linux 커널 패치 적용 및 isofs 관련 코드에 볼륨 경계 검사 추가
🔧 검증 코드
출력된 커널 버전이 패치가 적용된 최신 버전인지 확인하거나, 해당 CVE가 해결된 커널 업데이트를 적용해야 합니다.