🔍 CVE-2026-99054

0.0
CVSS Score
UNKNOWN
2026-10-23
2026-10-23 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 TIPC 토폴로지 서버에서 종료(teardown) 시 워크큐를 연결 종료보다 먼저 파괴하지 않아 발생하는 경쟁 조건이 수정되었습니다. 이로 인해 refcount 오류, 해제 후 사용(UAF), 파괴된 워크큐에 대한 queue_work 호출, RCU 스톨 등이 발생할 수 있었습니다. 패치는 listener를 셧다운 플래그로 사용하고 워크큐를 먼저 파괴한 뒤 연결을 닫도록 순서를 조정했습니다.

💡 쉬운 설명

리눅스 커널이 네트워크 기능을 끌 때 작업 순서가 꼬여서 메모리 오류가 날 수 있었습니다. 이번 수정으로 작업을 올바른 순서로 정리하도록 바뀌었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: tipc: destroy topsrv workqueues before closing connections tipc_topsrv_stop() closed subscriber connections while the topology server's send and receive workqueues were still running. Socket callbacks and subscription events could then queue more work, and in-flight send/recv work could drop the last connection reference during the conn_idr walk. That race produced several teardown failures: refcount_t addition on 0 from conn_get() on a connection whose release was blocked on idr_lock, a subsequent use-after-free in tipc_conn_close(), queue_work() on an already destroyed workqueue from the listener data-ready callback, and an RCU stall in tipc_topsrv_exit_net() while the walk spun under idr_lock. Clear srv->listener under idr_lock so it acts as a shutdown flag, skip queue_work() once it is NULL, destroy the workqueues to flush in-flight work, and only then close the remaining connections. Refuse tipc_conn_lookup() after that flag is cleared, and drop idr_lock when the teardown walk finds no connection, so an in-flight subscription event cannot pin idr_in_use while the walk holds the lock. v3 supersedes the narrower in-thread diff Tung Quang Nguyen posted on 2026-09-23. It keeps his teardown order and adds the lookup refusal and the empty-idr unlock.

📍 영향받는 시스템

TIPC 기능을 포함한 Linux 커널 (수정 커밋 이전의 버전; 정확한 영향 버전 범위는 확인 필요)

⚔️ 공격 벡터

로컬 또는 TIPC 네트워크 접근이 가능한 공격자가 서비스 종료 과정의 경쟁 상태를 유발해 커널 메모리 손상이나 서비스 거부를 시도할 수 있음

🛡️ 대응 방법

배포판 제공 최신 커널 업데이트를 적용하고 재부팅하거나, TIPC 모듈을 사용하지 않는 경우 tipc 모듈을 blacklist 처리

🔧 검증 코드

출력된 커널 버전이 배포판의 수정 버전 이상인지 확인하고, 'tipc not loaded'이면 TIPC가 로드되지 않아 직접적인 영향이 없음을 의미하며 'tipc loaded'이면 커널 업데이트 적용 여부를 우선 확인해야 함

Shell / Script
uname -r && (lsmod | grep -q '^tipc' && echo 'tipc loaded' || echo 'tipc not loaded')

💻 영향받는 소프트웨어

Linux Kernel