🇰🇷 한글 설명
Linux 커널의 Qualcomm RMnet 드라이버에서 데이터 분해 과정 중 skb->dev가 NULL로 설정되는 취약점이 발견되었습니다. 공격자가 특정 네트워크 네임스페이스를 생성하고 조작된 프레임을 전송할 경우, 커널이 NULL 포인터를 참조하여 시스템이 충돌(Kernel Panic)하거나 중단될 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 처리하는 과정에서 컴퓨터가 참조해야 할 주소값이 비어있는 상태로 명령을 실행하여 시스템이 멈추는 오류입니다. 악의적인 사용자가 특수한 네트워크 신호를 보내 컴퓨터를 강제로 종료시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: qualcomm: rmnet: restore skb->dev on deaggregated frames
rmnet_map_deaggregate() allocates each sub-frame with alloc_skb() and
leaves skb->dev NULL. __rmnet_map_ingress_handler() assigns
skb->dev = ep->egress_dev only on the data path, but a MAP command frame
is dispatched to rmnet_map_command() before that, so rmnet_map_send_ack()
runs netif_tx_lock(skb->dev) on a NULL device. An unprivileged user
reaches this by unsharing a user+net namespace, creating an rmnet link
over a tap device with INGRESS_DEAGGREGATION and INGRESS_MAP_COMMANDS,
and writing an aggregated frame carrying a flow-control command to the
tap fd.
Restore the assignment dropped by 378e25357ac7, so every skb leaving
rmnet_map_deaggregate() has a valid device.
BUG: KASAN: null-ptr-deref in _raw_spin_lock (kernel/locking/spinlock.c:158)
Write of size 4 at addr 00000000000004b4 by task exploit/144
Call Trace:
_raw_spin_lock (kernel/locking/spinlock.c:158)
netif_tx_lock (net/sched/sch_generic.c:497)
rmnet_map_command (drivers/net/ethernet/qualcomm/rmnet/rmnet_map_command.c:67)
rmnet_rx_handler (drivers/net/ethernet/qualcomm/rmnet/rmnet_handlers.c:125)
__netif_receive_skb_core.constprop.0 (net/core/dev.c:6103)
...
__netif_receive_skb_one_core (net/core/dev.c:6214)
netif_receive_skb (net/core/dev.c:6474)
tun_get_user (drivers/net/tun.c:1966)
tun_chr_write_iter (drivers/net/tun.c:2012)
vfs_write (fs/read_write.c:687)
ksys_write (fs/read_write.c:739)
do_syscall_64 (arch/x86/entry/syscall_64.c:94)
entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)
Kernel panic - not syncing: Fatal exception in interrupt
📍 영향받는 시스템
Qualcomm RMnet 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
사용자 네임스페이스를 분리한 후 tap 장치를 통해 조작된 RMnet 통합 프레임을 전송
🛡️ 대응 방법
Qualcomm RMnet 드라이버의 skb->dev 할당 로직이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.