🇰🇷 한글 설명
Linux 커널의 libceph 구성 요소에서 osd_fault() 호출 시 sparse-read 상태가 적절히 초기화되지 않는 취약점이 발견되었습니다. 이로 인해 연결 오류 발생 후 재시도 과정에서 이전 상태가 남아 있어 데이터 해석 오류가 발생하고 무한 루프에 빠질 수 있습니다.
💡 쉬운 설명
네트워크 연결이 끊겼을 때 컴퓨터가 이전 작업의 찌꺼기를 지우지 못해 발생하는 문제입니다. 이로 인해 시스템이 계속해서 같은 오류를 반복하며 정상적인 동작을 하지 못할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
libceph: reset sparse-read state in osd_fault()
When a fault occurs, the connection is abandoned, reestablished, and any
pending operations are retried. The OSD client tracks the progress of a
sparse-read reply using a separate state machine, largely independent of
the messenger's state.
If a connection is lost mid-payload or the sparse-read state machine
returns an error, the sparse-read state is not reset. The OSD client
will then interpret the beginning of a new reply as the continuation of
the old one. If this makes the sparse-read machinery enter a failure
state, it may never recover, producing loops like:
libceph: [0] got 0 extents
libceph: data len 142248331 != extent len 0
libceph: osd0 (1)...:6801 socket error on read
libceph: data len 142248331 != extent len 0
libceph: osd0 (1)...:6801 socket error on read
Therefore, reset the sparse-read state in osd_fault(), ensuring retries
start from a clean state.
📍 영향받는 시스템
Linux kernel (libceph module 사용 시스템)
⚔️ 공격 벡터
네트워크 연결 장애 또는 OSD 클라이언트와의 통신 오류를 유도하여 상태 불일치 유발
🛡️ 대응 방법
libceph의 osd_fault() 함수에서 sparse-read 상태를 초기화하도록 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.