🇰🇷 한글 설명
Linux 커널의 libceph 구성 요소에서 delayed_work()와 ceph_monc_stop() 간의 레이스 컨디션 취약점이 발견되었습니다. 이로 인해 세션 종료 과정에서 작업이 적절히 취소되지 않아 Use-After-Free(UAF) 오류가 발생할 수 있으며, 이는 시스템 불안정성이나 권한 상승으로 이어질 수 있습니다.
💡 쉬운 설명
컴퓨터의 데이터 저장 방식 중 하나인 Ceph를 사용할 때, 작업이 끝나는 순서가 꼬이면서 이미 삭제된 데이터를 다시 사용하려고 시도하는 오류입니다. 이 오류를 이용하면 해커가 시스템의 제어권을 뺏을 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
libceph: fix race between delayed_work() and ceph_monc_stop()
The way the delayed work is handled in ceph_monc_stop() is prone to
races with mon_fault() and possibly also finish_hunting(). Both of
these can requeue the delayed work which wouldn't be canceled by any of
the following code in case that happens after cancel_delayed_work_sync()
runs -- __close_session() doesn't mess with the delayed work in order
to avoid interfering with the hunting interval logic. This part was
missed in commit b5d91704f53e ("libceph: behave in mon_fault() if
cur_mon < 0") and use-after-free can still ensue on monc and objects
that hang off of it, with monc->auth and monc->monmap being
particularly susceptible to quickly being reused.
To fix this:
- clear monc->cur_mon and monc->hunting as part of closing the session
in ceph_monc_stop()
- bail from delayed_work() if monc->cur_mon is cleared, similar to how
it's done in mon_fault() and finish_hunting() (based on monc->hunting)
- call cancel_delayed_work_sync() after the session is closed
📍 영향받는 시스템
Linux kernel (libceph module 사용 환경)
⚔️ 공격 벡터
Ceph 모니터 연결 상태를 조작하여 특정 타이밍에 세션을 종료시키는 레이스 컨디션 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.