🇰🇷 한글 설명
Linux 커널의 RBD(RADOS Block Device) 모듈에서 객체 맵 업데이트 경로 중 양수 결과 코드를 0으로 초기화하지 않는 취약점이 발견되었습니다. 이로 인해 손상된 응답이 전달될 경우 커널 어설션(assertion)이 발생하여 시스템이 중단될 수 있습니다.
💡 쉬운 설명
데이터를 저장하는 과정에서 잘못된 신호가 들어왔을 때, 시스템이 이를 제대로 처리하지 못하고 갑자기 멈춰버릴 수 있는 문제입니다. 마치 잘못된 신호등 색깔을 보고 자동차가 급정거하는 것과 비슷합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rbd: Reset positive result codes to zero in object map update path
In a reply message to an RBD request, a positive result code indicates
a data payload, which is not allowed for writes. While
rbd_osd_req_callback() already resets a positive result code for writes
to zero, rbd_object_map_callback() does not. This allows a corrupted
reply to an object map update to trigger the rbd_assert(*result < 0) in
__rbd_obj_handle_request(). This happens, because
rbd_object_map_callback() calls rbd_obj_handle_request() ->
__rbd_obj_handle_request() and passes this positive result code. From
__rbd_obj_handle_request(), rbd_obj_advance_write() is called, which
leaves the positive result code unchanged and returns true. Therefore,
the if(done && *result) branch is executed in __rbd_obj_handle_request()
and the assertion triggers.
This patch fixes the issue by adjusting the logic in the
rbd_object_map_callback() path. A positive result code for an object map
update is now reset to zero (similar to rbd_osd_req_callback()), and the
message is subsequently handled the same way as if the result code was
zero from the beginning. Additionally, a WARN_ON_ONCE() is added for
this case.
📍 영향받는 시스템
Linux kernel (RBD module 사용 환경)
⚔️ 공격 벡터
손상된 RBD 객체 맵 업데이트 응답 메시지를 전송하여 커널 어설션을 유발
🛡️ 대응 방법
RBD 객체 맵 업데이트 경로에서 양수 결과 코드를 0으로 초기화하는 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux