🇰🇷 한글 설명
Linux 커널의 ocfs2/dlm 구성 요소에서 DLM_QUERY_REGION 네트워크 메시지의 qr_numregions 필드에 대한 검증이 부족하여 발생하는 취약점입니다. 공격자가 조작된 메시지를 보내면 qr_regions 버퍼를 초과하여 읽는 Out-of-bounds read가 발생할 수 있습니다.
💡 쉬운 설명
네트워크를 통해 전달된 데이터의 개수가 실제 저장 공간보다 많더라도 이를 확인하지 않고 읽으려 할 때 발생하는 문제입니다. 이로 인해 시스템의 민감한 정보가 유출되거나 프로그램이 비정상적으로 동작할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ocfs2/dlm: validate qr_numregions in dlm_match_regions()
Patch series "ocfs2/dlm: fix two bugs in dlm_match_regions()".
In dlm_match_regions(), the qr_numregions field from a DLM_QUERY_REGION
network message is used to drive loops over the qr_regions buffer without
sufficient validation. This series fixes two issues:
- Patch 1 adds a bounds check to reject messages where qr_numregions
exceeds O2NM_MAX_REGIONS. The o2net layer only validates message
byte length; it does not constrain field values, so a crafted message
can set qr_numregions up to 255 and trigger out-of-bounds reads past
the 1024-byte qr_regions buffer.
- Patch 2 fixes an off-by-one in the local-vs-remote comparison loop,
which uses '<=' instead of '<', reading one entry past the valid range
even when qr_numregions is within bounds.
This patch (of 2):
The qr_numregions field from a DLM_QUERY_REGION network message is used
directly as loop bounds in dlm_match_regions() without checking against
O2NM_MAX_REGIONS. Since qr_regions is sized for at most O2NM_MAX_REGIONS
(32) entries, a crafted message with qr_numregions > 32 causes
out-of-bounds reads past the qr_regions buffer.
Add a bounds check for qr_numregions before entering the loops.
📍 영향받는 시스템
Linux Kernel (ocfs2/dlm 구성 요소 포함 버전)
⚔️ 공격 벡터
조작된 DLM_QUERY_REGION 네트워크 메시지를 전송하여 경계 외 메모리 읽기 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인