🔍 CVE-2023-52636

8.2
CVSS Score
HIGH
2024-04-02
2026-08-04 10:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 libceph 구성 요소에서 소켓으로부터 메시지 푸터를 읽을 때 짧은 읽기(short read)가 발생할 경우 발생하는 취약점입니다. read_partial_sparse_msg_data() 함수가 상태 머신을 잘못 호출하여 푸터의 일부를 새로운 작업의 헤더로 오인하고 잘못된 데이터를 반환할 수 있습니다.

💡 쉬운 설명

데이터를 주고받는 과정에서 데이터가 중간에 끊기면, 시스템이 이를 새로운 데이터의 시작으로 착각하여 잘못된 정보를 처리하는 오류입니다. 이로 인해 데이터가 오염되거나 시스템 동작에 문제가 생길 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: libceph: just wait for more data to be available on the socket A short read may occur while reading the message footer from the socket. Later, when the socket is ready for another read, the messenger invokes all read_partial_*() handlers, including read_partial_sparse_msg_data(). The expectation is that read_partial_sparse_msg_data() would bail, allowing the messenger to invoke read_partial() for the footer and pick up where it left off. However read_partial_sparse_msg_data() violates that and ends up calling into the state machine in the OSD client. The sparse-read state machine assumes that it's a new op and interprets some piece of the footer as the sparse-read header and returns bogus extents/data length, etc. To determine whether read_partial_sparse_msg_data() should bail, let's reuse cursor->total_resid. Because once it reaches to zero that means all the extents and data have been successfully received in last read, else it could break out when partially reading any of the extents and data. And then osd_sparse_read() could continue where it left off. [ idryomov: changelog ]

📍 영향받는 시스템

Linux kernel (libceph 모듈을 사용하는 시스템)

⚔️ 공격 벡터

네트워크를 통해 조작된 Ceph 메시지를 전송하여 소켓 읽기 오류를 유도하는 방식

🛡️ 대응 방법

libceph 관련 패치가 적용된 최신 버전의 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H

💻 영향받는 소프트웨어

Linux Kernel