🇰🇷 한글 설명
Linux 커널의 ocfs2 구성 요소에서 DLM_MIG_LOCKRES 메시지를 처리할 때 입력값 검증이 누락된 취약점입니다. 공격자가 조작된 메시지를 보내면 경계 외 읽기(Out-of-bounds read)로 인한 커널 패닉이나 경계 외 쓰기(Heap out-of-bounds write)를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터 시스템이 외부에서 들어오는 데이터를 확인하지 않고 그대로 믿어서 발생하는 문제입니다. 이를 통해 시스템을 강제로 멈추게 하거나 메모리 영역을 침범하여 보안을 위협할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ocfs2: validate lengths in dlm_mig_lockres_handler
A node receiving a DLM_MIG_LOCKRES message trusts several fields of the
peer-supplied dlm_migratable_lockres without validation. num_locks and
lockname_len are bounded only on the sending side, and the message is
never checked to actually carry num_locks migratable_lock entries. As a
result dlm_process_recovery_data() walks mres->ml[0..num_locks) past the
kmalloc(data_len) copy of the message (an out-of-bounds read that ends in
a BUG_ON panic), and dlm_init_lockres() copies lockname_len bytes into the
fixed 32-byte o2dlm_lockname slab object (a heap out-of-bounds write).
Both are reachable by any node in the domain.
Validate these fields right after dlm_grab(), before anything uses them --
including the not-joined error path, which already prints mres->lockname
with the unbounded lockname_len as a %.*s precision. Reject the message
unless lockname_len <= DLM_LOCKID_NAME_MAX, num_locks <=
DLM_MAX_MIGRATABLE_LOCKS (the bound the sender already asserts), and the
payload is large enough to hold the claimed locks. Conforming recovery
and migration messages are unaffected.
📍 영향받는 시스템
Linux Kernel (ocfs2 및 DLM 구성 요소 사용 시스템)
⚔️ 공격 벡터
도메인 내의 임의의 노드가 조작된 DLM_MIG_LOCKRES 메시지를 전송하여 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 입력값 검증 로직 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인