🇰🇷 한글 설명
Linux 커널의 OCFS2 파일 시스템에서 Direct I/O 완료 처리 중 트랜잭션 크레딧이 고갈되는 취약점이 발견되었습니다. 또한 오판 인ode(orphan inode) 제거 로직의 오류로 인해 시스템 충돌 시 데이터 무결성이 손상될 수 있는 문제가 포함되어 있습니다.
💡 쉬운 설명
파일을 저장하는 과정에서 시스템이 처리할 수 있는 한도를 초과하여 오류가 발생하거나, 갑작스러운 전원 차단 시 데이터가 깨질 수 있는 문제입니다. 이를 해결하기 위해 데이터를 나누어 처리하고 저장 순서를 안전하게 변경했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ocfs2: split transactions in dio completion to avoid credit exhaustion
During ocfs2 dio operations, JBD2 may report warnings via following
call trace:
ocfs2_dio_end_io_write
ocfs2_mark_extent_written
ocfs2_change_extent_flag
ocfs2_split_extent
ocfs2_try_to_merge_extent
ocfs2_extend_rotate_transaction
ocfs2_extend_trans
jbd2__journal_restart
start_this_handle
output: JBD2: kworker/6:2 wants too many credits credits:5450 rsv_credits:0 max:5449
To prevent exceeding the credits limit, modify ocfs2_dio_end_io_write() to
handle extents in a batch of transaction.
Additionally, relocate ocfs2_del_inode_from_orphan(). The orphan inode
should only be removed from the orphan list after the extent tree update
is complete. This ensures that if a crash occurs in the middle of extent
tree updates, we won't leave stale blocks beyond EOF.
This patch also changes the logic for updating the inode size and removing
orphan, making it similar to ext4_dio_write_end_io(). Both operations are
performed only when everything looks good.
Finally, thanks to Jans and Joseph for providing the bug fix prototype and
suggestions.
📍 영향받는 시스템
Linux Kernel (OCFS2 파일 시스템을 사용하는 시스템)
⚔️ 공격 벡터
직접적인 외부 공격보다는 특정 I/O 작업 패턴을 통한 시스템 자원 고갈 또는 시스템 충돌 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.