🇰🇷 한글 설명
리눅스 커널의 ipvlan L3 모드에서 ipvlan 인터페이스를 삭제할 때 NULL 포인터 역참조가 발생할 수 있는 취약점입니다. ipvlan_l3s_unregister 함수가 l3mdev_ops를 NULL로 설정한 후에도 l3mdev_l3_rcv 함수가 해당 포인터에 접근하여 시스템 충돌을 유발할 수 있습니다.
💡 쉬운 설명
네트워크 설정을 삭제하는 과정에서 컴퓨터가 존재하지 않는 메모리 주소를 참조하여 시스템이 멈추거나 오류가 발생할 수 있는 문제입니다. 특정 네트워크 모드를 사용하는 환경에서 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: fix NULL pointer dereference in l3mdev_l3_rcv
When delete l3s ipvlan:
ip link del link eth0 ipvlan1 type ipvlan mode l3s
This may cause a null pointer dereference:
Call trace:
ip_rcv_finish+0x48/0xd0
ip_rcv+0x5c/0x100
__netif_receive_skb_one_core+0x64/0xb0
__netif_receive_skb+0x20/0x80
process_backlog+0xb4/0x204
napi_poll+0xe8/0x294
net_rx_action+0xd8/0x22c
__do_softirq+0x12c/0x354
This is because l3mdev_l3_rcv() visit dev->l3mdev_ops after
ipvlan_l3s_unregister() assign the dev->l3mdev_ops to NULL. The process
like this:
(CPU1) | (CPU2)
l3mdev_l3_rcv() |
check dev->priv_flags: |
master = skb->dev; |
|
| ipvlan_l3s_unregister()
| set dev->priv_flags
| dev->l3mdev_ops = NULL;
|
visit master->l3mdev_ops |
To avoid this by do not set dev->l3mdev_ops when unregister l3s ipvlan.
📍 영향받는 시스템
ipvlan L3 모드를 사용하는 리눅스 커널 시스템
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 특정 네트워크 인터페이스(ipvlan l3s)를 생성하고 삭제하는 과정을 통해 유도 가능
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인하십시오.