🇰🇷 한글 설명
Linux 커널의 hfsplus 파일 시스템에서 스레드 레코드를 삭제하기 전에 유효성을 검사하지 않아 발생하는 취약점입니다. 손상된 이미지를 통해 스레드 이름의 길이를 조작하면 hfs_bnode_read() 함수가 할당된 메모리 범위를 넘어 데이터를 쓰는 버퍼 오버플로우가 발생할 수 있습니다.
💡 쉬운 설명
파일 시스템의 정보를 읽는 과정에서 데이터의 길이를 제대로 확인하지 않아 발생하는 오류입니다. 공격자가 조작된 파일을 사용하면 컴퓨터의 메모리 영역을 침범하여 시스템을 불안정하게 만들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
hfsplus: validate thread record before delete key rebuild
hfsplus_delete_cat() is called with str == NULL when the last open
reference to an unlinked HFS+ hardlink backing inode is closed. In that
case, the function finds the catalog thread by CNID and rebuilds the
catalog key from thread.nodeName.
That reconstruction path reads thread.nodeName.length directly from the
catalog B-tree into fd.search_key and then copies length * 2 bytes into
fd.search_key->cat.name.unicode. It does not first check that the found
record is a thread record or that its size matches the thread name.
A corrupted image can therefore provide an oversized thread name length
and make hfs_bnode_read() write past the catalog search-key allocation.
Read the CNID record through hfsplus_brec_read_cat(), which bounds the
record read to sizeof(hfsplus_cat_entry) and verifies that a thread
record's size exactly matches nodeName.length. Together, these checks
ensure an accepted thread name fits HFSPLUS_MAX_STRLEN. Reject non-thread
records before building the delete key from the validated thread name.
Share the thread-record-type helper between hfsplus_find_cat() and
hfsplus_delete_cat().
📍 영향받는 시스템
HFS+ 파일 시스템을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된(corrupted) HFS+ 이미지 파일을 마운트하거나 읽는 행위
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.