🇰🇷 한글 설명
Linux kernel ocfs2 파일시스템에서 journal shutdown 후 journal inode 해제 시 null pointer dereference 발생 취약점. 마운트 해제 과정에서 이미 정리된 osb->journal에 접근하려다 NULL 포인터 참조 오류 발생.
💡 쉬운 설명
Linux 시스템에서 ocfs2 파일시스템을 안전하게 종료할 때 잘못된 순서로 메모리에 접근해 크래시가 발생할 수 있습니다. 이미 정리된 메모리를 다시 접근하는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ocfs2: prevent release journal inode after journal shutdown
Before calling ocfs2_delete_osb(), ocfs2_journal_shutdown() has already
been executed in ocfs2_dismount_volume(), so osb->journal must be NULL.
Therefore, the following calltrace will inevitably fail when it reaches
jbd2_journal_release_jbd_inode().
ocfs2_dismount_volume()->
ocfs2_delete_osb()->
ocfs2_free_slot_info()->
__ocfs2_free_slot_info()->
evict()->
ocfs2_evict_inode()->
ocfs2_clear_inode()->
jbd2_journal_release_jbd_inode(osb->journal->j_journal,
Adding osb->journal checks will prevent null-ptr-deref during the above
execution path.
📍 영향받는 시스템
Linux kernel ocfs2 파일시스템 사용 시스템
⚔️ 공격 벡터
Local: ocfs2 마운트 해제(umount) 시 자동으로 트리거됨
🛡️ 대응 방법
Linux kernel 패치 적용 - ocfs2_clear_inode()에서 jbd2_journal_release_jbd_inode() 호출 전 osb->journal NULL 체크 추가
🔧 검증 코드
0보다 크면 NULL 체크가 포함되어 패치 적용됨, 0이면 패치 미적용 또는 소스 코드 없음
grep -r 'if.*osb->journal' /usr/src/linux/fs/ocfs2 2>/dev/null | wc -l