🇰🇷 한글 설명
Linux 커널의 inet 프래그먼트 처리 과정에서 큐를 해시 테이블에 등록하기 전에 타이머를 먼저 설정하여 발생하는 취약점입니다. 이로 인해 타이머 콜백이 해시 테이블에 존재하지 않는 노드를 제거하려 시도하면서 참조 횟수 불일치 및 메모리 손상이 발생할 수 있습니다.
💡 쉬운 설명
데이터 조각을 관리하는 목록에 등록하기도 전에 관리 타이머가 먼저 작동하여 시스템의 메모리 관리 체계에 혼란을 주는 문제입니다. 이로 인해 시스템이 불안정해지거나 보안 취약점이 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
inet: frags: publish queues before arming timer
inet_frag_create() arms the fragment queue timer before inserting the
queue into the fqdir rhashtable. If the namespace fragment timeout is
zero or negative, the timer can run before the queue is published.
The timer callback then marks the queue complete, tries to remove a node
that is not in the hash table yet, and drops the anticipated hash
reference. Creation can subsequently publish the completed queue without
restoring that reference, leaving a stale hash node after the caller drops
the remaining reference.
Publish the queue first and arm the timer while holding the queue lock.
This makes timer expiry wait until the queue is visible in the hash table,
so inet_frag_kill() can remove the node and balance the hash reference.
📍 영향받는 시스템
Linux Kernel (inet_frag 관련 모듈을 사용하는 버전)
⚔️ 공격 벡터
네트워크 패킷 조각화(fragmentation)를 이용한 특수하게 조작된 트래픽 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이상인지 확인