🇰🇷 한글 설명
Linux 커널의 slip 라인 디시플린에서 tty hangup 발생 시 slip_receive_buf() 함수 내에서 Use-After-Free 취약점이 발생합니다. slip_hangup()이 slip_close()를 호출하는 과정에서 네트워크 장치와 구조체가 해제되지만, 동시에 실행 중인 읽기 스레드가 해제된 메모리에 접근하여 발생합니다.
💡 쉬운 설명
컴퓨터가 통신 장치를 종료하는 순간, 데이터를 읽으려는 동작이 동시에 일어나면서 이미 사라진 메모리 공간을 건드리는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
slip: remove slip_hangup() to fix use-after-free in slip_receive_buf()
Jaeyoung Chung and Eulgyu Kim reported a slab-use-after-free read
in slip_receive_buf() when racing against tty hangup.
tty_ldisc_hangup() calls ld->ops->hangup() while holding only
a read lock on tty->ldisc_sem (via tty_ldisc_ref()).
Because slip_hangup() simply called slip_close(), it ran concurrently
with reader functions such as slip_receive_buf().
slip_close() unregisters and frees the net device and its private
struct slip, causing concurrent reader threads in slip_receive_buf()
to dereference freed memory.
Line discipline close() is already guaranteed to be called under
the write lock of tty->ldisc_sem during hangup processing
(in tty_ldisc_reinit() or tty_ldisc_kill()).
Remove slip_hangup() so teardown is serialized cleanly by slip_close().
📍 영향받는 시스템
Linux kernel (slip line discipline 사용 환경)
⚔️ 공격 벡터
tty hangup과 데이터 수신 동작 간의 레이스 컨디션(Race Condition) 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 slip_hangup() 제거 확인
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인