🇰🇷 한글 설명
Linux 커널의 libceph 구성 요소에서 인증 정보 업데이트 시 기존 버퍼를 해제한 후에도 이전 메모리 주소를 참조하는 Use-After-Free 취약점이 발견되었습니다. 이로 인해 재연결 과정에서 해제된 메모리에 접근하게 되어 KASAN slab-use-after-free 오류가 발생할 수 있습니다.
💡 쉬운 설명
인증 정보를 새로 고치는 과정에서 예전에 사용하던 메모리 주소를 지우지 않고 계속 붙잡고 있어 발생하는 문제입니다. 이로 인해 시스템이 잘못된 메모리 위치를 참조하게 되어 보안 사고나 시스템 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
libceph: refresh auth->authorizer_buf{,_len} after authorizer update
ceph_x_create_authorizer() caches au->buf->vec.iov_base and
au->buf->vec.iov_len in struct ceph_auth_handshake. These
cached values are then used by the messenger connect code when
sending the authorizer.
ceph_x_update_authorizer() can rebuild the authorizer when a newer
service ticket is available. If the rebuilt authorizer no longer
fits in the existing buffer, ceph_x_build_authorizer() drops its
reference to au->buf and allocates a new one. If this is the final
reference, ceph_buffer_put() frees the old ceph_buffer and its
vec.iov_base, but auth->authorizer_buf still points at that freed
memory.
A subsequent msgr1 reconnect can therefore queue the stale pointer
and trigger a KASAN slab-use-after-free in _copy_from_iter() while
tcp_sendmsg() copies the authorizer.
Refresh auth->authorizer_buf and auth->authorizer_buf_len after a
successful authorizer rebuild so the messenger sends the current
buffer.
📍 영향받는 시스템
Linux kernel (libceph module 사용 시스템)
⚔️ 공격 벡터
Ceph 클러스터 재연결 시 발생하는 잘못된 메모리 참조를 이용한 로컬 또는 네트워크 기반 공격
🛡️ 대응 방법
인증 정보 재구축 후 auth->authorizer_buf 및 auth->authorizer_buf_len를 최신 상태로 갱신하는 커널 패치 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인합니다.