CVE-2026-89651 in Linux
요약
\~에 의해 VulDB • 2026. 09. 11.
Linux 커널에서 다음 취약점이 해결되었습니다:
ceph: handle_session() 내 MDSCapAuth 경로 및 fs_name 디코딩에 경계 검사 적용
handle_session()은 CEPH_SESSION_OPEN 메시지(msg_version >= 6)가 운반하는 MDSCapAuth 레코드들을 디코딩합니다. 각 레코드에 대해 match.path와 match.fs_name 바이트 문자열이 먼저 32비트 길이를 디코딩한 후, bare ceph_decode_copy()를 사용하여 해당 수의 바이트를 복사함으로써 읽힙니다. 주변 필드들이 모두 _safe 디코딩 변형을 사용하는 것과 달리, 이 두 번의 복사 작업은 선행되는 ceph_decode_need() 경계 검사 없이 수행되며, 감싸고 있는 MDSCapAuth 및 MDSCapMatch 구조체의 struct_len 필드는 상한값으로 강제되지 않고 무시됩니다. 메시지의 앞부분에 남은 바이트 수보다 큰 길이는 ceph_decode_copy()가 프론트 버퍼의 끝을 넘어 읽도록 만듭니다.
메시지 프론트는 전용 할당(ceph_msg_new2() -> kvmalloc)이므로, 과다 읽기는 해당 객체 밖으로 발생합니다. 악성 또는 침해된 MDS는 마운트 시 연결 후 첫 번째 메시지에서 이를 트리거할 수 있으며, 클라이언트 측의 사용자 상호작용은 필요하지 않습니다. KASAN 하에서는 handle_session()에서 slab-out-of-bounds read로 보고됩니다.
영향: 악성 MDS가 세션 설정 중 메시지 프론트 할당보다 최대 4 GiB까지 커널 클라이언트가 읽도록 강제하여, 클라이언트를 충돌시킬 수 있습니다(경계 밖 읽기).
두 복사 작업을 모두 ceph_decode_copy_safe()로 전환합니다. 이는 복사 전에 ceph_decode_need() 경계 검사를 수행하며, 기존 bad 레이블로 분기하여 부분적으로 디코딩된 cap_auths 배열을 해제하는 나머지 디코더 및 오류 경로와 일치시킵니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.