🇰🇷 한글 설명
Linux 커널의 libceph 구성 요소에서 decode_choose_args() 함수가 rbtree 삽입 오류를 적절히 처리하지 못하는 취약점이 발견되었습니다. 악의적으로 조작된 CEPH_MSG_OSD_MAP 메시지가 동일한 인덱스를 가진 중복된 crush_choose_arg_maps를 포함할 경우, 커널의 assertion이 트리거되어 커널 버그(Kernel BUG)가 발생할 수 있습니다.
💡 쉬운 설명
조작된 데이터를 담은 메시지를 리눅스 시스템에 보내면 시스템이 처리 과정에서 오류를 일으켜 멈추거나 충돌할 수 있습니다. 이는 시스템의 안정성을 해치는 공격에 이용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
libceph: handle rbtree insertion error in decode_choose_args()
A message of type CEPH_MSG_OSD_MAP contains an OSD map that itself
contains a CRUSH map. The received CRUSH map may optionally contain
choose_args that get decoded in decode_choose_args(). In this function,
num_choose_arg_maps is read from the message, and a corresponding number
of crush_choose_arg_maps gets decoded afterwards. Each
crush_choose_arg_map has a choose_args_index, which serves as the key
when inserting it into the choose_args rbtree of the decoded crush_map.
If a (potentially corrupted) message contains two crush_choose_arg_maps
with the same index, the assertion in insert_choose_arg_map() triggers a
kernel BUG when trying to insert the second crush_choose_arg_map.
This patch fixes the issue by switching to the non-asserting rbtree
insertion function and rejecting the message if the insertion fails.
[ idryomov: changelog ]
📍 영향받는 시스템
Linux kernel (libceph 모듈을 사용하는 시스템)
⚔️ 공격 벡터
조작된 CEPH_MSG_OSD_MAP 메시지를 전송하여 커널의 rbtree 삽입 로직을 트리거함
🛡️ 대응 방법
커널 패치를 적용하여 assert 대신 삽입 실패 시 메시지를 거부하도록 업데이트해야 함
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.