🇰🇷 한글 설명
Linux 커널의 JFS 파일 시스템에서 마운트 시 db_l2nbperpage 값을 검증하지 않아 발생하는 취약점입니다. 잘못된 값이 전달될 경우 비트 시프트 연산 중 범위를 벗어난 메모리 접근이 발생하여 시스템 충돌(Crash)을 유발할 수 있습니다.
💡 쉬운 설명
파일 시스템을 읽어오는 과정에서 잘못된 숫자가 입력되어 컴퓨터가 계산 오류를 일으키고 멈추게 되는 문제입니다. 공격자가 특수하게 조작된 디스크 이미지를 사용하면 시스템을 강제로 종료시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
jfs: jfs_dmap: Validate db_l2nbperpage while mounting
In jfs_dmap.c at line 381, BLKTODMAP is used to get a logical block
number inside dbFree(). db_l2nbperpage, which is the log2 number of
blocks per page, is passed as an argument to BLKTODMAP which uses it
for shifting.
Syzbot reported a shift out-of-bounds crash because db_l2nbperpage is
too big. This happens because the large value is set without any
validation in dbMount() at line 181.
Thus, make sure that db_l2nbperpage is correct while mounting.
Max number of blocks per page = Page size / Min block size
=> log2(Max num_block per page) = log2(Page size / Min block size)
= log2(Page size) - log2(Min block size)
=> Max db_l2nbperpage = L2PSIZE - L2MINBLOCKSIZE
📍 영향받는 시스템
JFS 파일 시스템을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된 JFS 파일 시스템 이미지를 마운트하여 시스템 충돌 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인