🇰🇷 한글 설명
Linux 커널의 bcmgenet 드라이버에서 인터페이스가 열리기 전에 Rx coalescing 파라미터를 설정할 경우 NULL 포인터 역참조가 발생합니다. 이로 인해 커널 패닉(Oops)이 발생하며, RTNL 잠금이 유지되어 재부팅 전까지 네트워크 기능이 마비될 수 있습니다.
💡 쉬운 설명
네트워크 장치를 사용하기 위해 활성화하기 전에 특정 설정을 변경하려고 하면 컴퓨터의 핵심 시스템(커널)이 충돌하여 멈출 수 있는 문제입니다. 이 문제가 발생하면 시스템을 다시 시작해야만 네트워크를 다시 사용할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: bcmgenet: fix NULL dereference in set_coalesce before first open
The Rx ring priv and index are only set in bcmgenet_init_rx_ring(),
which runs at open. Setting the Rx coalescing parameters on an interface
that was never opened, e.g. "ethtool -C eth0 rx-usecs 50", dereferences
a NULL ring->priv. The oops happens with RTNL held, so networking
stays stuck until a reboot:
Unable to handle kernel paging request at virtual address 0000000000002788
pc : bcmgenet_set_rx_coalesce.isra.0+0x10/0x88
lr : bcmgenet_set_coalesce+0xe8/0x180
Call trace:
bcmgenet_set_rx_coalesce.isra.0+0x10/0x88 (P)
__ethnl_set_coalesce.isra.0+0x490/0x570
ethnl_set_coalesce+0x48/0xc0
ethnl_default_set_doit+0xf4/0x230
genl_family_rcv_msg_doit+0xe8/0x160
genl_rcv_msg+0x220/0x2a0
netlink_rcv_skb+0x68/0x140
genl_rcv+0x40/0x60
netlink_unicast+0x338/0x3c0
netlink_sendmsg+0x19c/0x3f8
__sock_sendmsg+0x64/0xc0
__sys_sendto+0x124/0x198
__arm64_sys_sendto+0x30/0x48
Set priv and index at probe. Writing the registers while the interface
is down is harmless because open resets the MAC and
bcmgenet_init_rx_coalesce() reapplies the stored values.
It was observed on a Raspberry Pi CM4, but should apply to all other
genet devices.
📍 영향받는 시스템
Linux kernel (bcmgenet driver used in Raspberry Pi CM4 and other genet devices)
⚔️ 공격 벡터
로컬 사용자가 ethtool 등을 사용하여 활성화되지 않은 네트워크 인터페이스의 설정을 변경할 때 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 bcmgenet 드라이버의 수정 사항을 반영하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.