🇰🇷 한글 설명
Linux 커널의 TIPC 프로토콜에서 노드를 해시 테이블에 삽입한 후 브로드캐스트 링크를 생성하는 과정 사이에 시간 차가 발생하여 NULL 포인터 역참조가 발생하는 취약점입니다. 이로 인해 특정 상황에서 커널 패닉 및 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터가 새로운 연결 정보를 저장하는 과정에서, 정보가 완전히 등록되기 전에 잘못된 정보를 읽으려다 시스템이 멈추는 문제입니다. 이로 인해 서버가 갑자기 꺼지거나 재부팅될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tipc: move bc link creation back to tipc_node_create
Shuang Li reported a NULL pointer dereference crash:
[] BUG: kernel NULL pointer dereference, address: 0000000000000068
[] RIP: 0010:tipc_link_is_up+0x5/0x10 [tipc]
[] Call Trace:
[] <IRQ>
[] tipc_bcast_rcv+0xa2/0x190 [tipc]
[] tipc_node_bc_rcv+0x8b/0x200 [tipc]
[] tipc_rcv+0x3af/0x5b0 [tipc]
[] tipc_udp_recv+0xc7/0x1e0 [tipc]
It was caused by the 'l' passed into tipc_bcast_rcv() is NULL. When it
creates a node in tipc_node_check_dest(), after inserting the new node
into hashtable in tipc_node_create(), it creates the bc link. However,
there is a gap between this insert and bc link creation, a bc packet
may come in and get the node from the hashtable then try to dereference
its bc link, which is NULL.
This patch is to fix it by moving the bc link creation before inserting
into the hashtable.
Note that for a preliminary node becoming "real", the bc link creation
should also be called before it's rehashed, as we don't create it for
preliminary nodes.
📍 영향받는 시스템
TIPC 프로토콜을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
조작된 브로드캐스트(BC) 패킷을 전송하여 커널의 NULL 포인터 역참조 유도
🛡️ 대응 방법
TIPC 관련 커널 패치를 적용하거나 최신 안정화 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인