🇰🇷 한글 설명
Linux 커널의 batman-adv 모듈 내 tp_meter 기능에서 타이머 종료 처리 방식의 결함이 발견되었습니다. 기존의 이중 삭제 방식은 타이머가 다시 활성화되는 것을 완벽하게 방지하지 못해, 이미 삭제된 타이머 참조를 다시 호출함으로써 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터가 특정 작업을 위해 예약해둔 타이머를 끌 때, 타이머가 다시 켜지는 것을 제대로 막지 못하는 문제가 있었습니다. 이로 인해 이미 사라진 타이머를 다시 사용하려다가 시스템이 오류를 일으키거나 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
batman-adv: tp_meter: directly shut down timer on cleanup
batadv_tp_sender_cleanup() was calling timer_delete_sync() followed by
timer_delete() to guard against the timer handler re-arming itself between
the two calls. This double-deletion hack relied on the sending status being
set to 0 to suppress re-arming.
Replace both calls with a single timer_shutdown_sync(). This function both
waits for any running timer callback to complete (like timer_delete_sync())
and permanently disarms the timer so it cannot be re-armed afterwards,
making re-arming prevention unconditional and self-documenting.
The re-arming property is also required because otherwise:
1. context 0 (batadv_tp_recv_ack()) checks in
batadv_tp_reset_sender_timer() if sending is still 1 -> it is
2. context 1 changes in batadv_tp_sender_shutdown() sending to 0 and in
this process forces the kthread to stop timer in
batadv_tp_sender_cleanup()
3. context 0 continues in batadv_tp_reset_sender_timer() and rearms the
timer -> but the reference for it is already gone
📍 영향받는 시스템
Linux kernel (batman-adv 모듈을 사용하는 시스템)
⚔️ 공격 벡터
로컬 공격자가 특정 네트워크 환경(batman-adv 사용 시)에서 타이머 재활성화 조건을 유도하여 커널 패닉 유발 가능
🛡️ 대응 방법
timer_shutdown_sync() 함수를 사용하는 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인