🇰🇷 한글 설명
Linux 커널의 IPv4 멀티캐스트 라우팅(ipmr) 모듈에서 mr_mfc_uses_dev() 함수가 미해결 항목(unres entries)에 대해 잘못된 메모리 구조체 필드에 접근하여 커널 패닉을 유발하는 취약점입니다. 이는 netlink 인터페이스를 통한 mr_table_dump() 호출로 트리거될 수 있습니다.
💡 쉬운 설명
Linux 커널의 네트워크 라우팅 코드에서 잘못된 메모리 영역에 접근하는 버그가 있어 시스템이 강제 종료됩니다. 네트워크 설정 조회 명령으로 이를 악용할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ipmr: do not call mr_mfc_uses_dev() for unres entries
syzbot found that calling mr_mfc_uses_dev() for unres entries
would crash [1], because c->mfc_un.res.minvif / c->mfc_un.res.maxvif
alias to "struct sk_buff_head unresolved", which contain two pointers.
This code never worked, lets remove it.
[1]
Unable to handle kernel paging request at virtual address ffff5fff2d536613
KASAN: maybe wild-memory-access in range [0xfffefff96a9b3098-0xfffefff96a9b309f]
Modules linked in:
CPU: 1 UID: 0 PID: 7321 Comm: syz.0.16 Not tainted 6.13.0-rc7-syzkaller-g1950a0af2d55 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline]
pc : mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334
lr : mr_mfc_uses_dev net/ipv4/ipmr_base.c:289 [inline]
lr : mr_table_dump+0x694/0x8b0 net/ipv4/ipmr_base.c:334
Call trace:
mr_mfc_uses_dev net/ipv4/ipmr_base.c:290 [inline] (P)
mr_table_dump+0x5a4/0x8b0 net/ipv4/ipmr_base.c:334 (P)
mr_rtm_dumproute+0x254/0x454 net/ipv4/ipmr_base.c:382
ipmr_rtm_dumproute+0x248/0x4b4 net/ipv4/ipmr.c:2648
rtnl_dump_all+0x2e4/0x4e8 net/core/rtnetlink.c:4327
rtnl_dumpit+0x98/0x1d0 net/core/rtnetlink.c:6791
netlink_dump+0x4f0/0xbc0 net/netlink/af_netlink.c:2317
netlink_recvmsg+0x56c/0xe64 net/netlink/af_netlink.c:1973
sock_recvmsg_nosec net/socket.c:1033 [inline]
sock_recvmsg net/socket.c:1055 [inline]
sock_read_iter+0x2d8/0x40c net/socket.c:1125
new_sync_read fs/read_write.c:484 [inline]
vfs_read+0x740/0x970 fs/read_write.c:565
ksys_read+0x15c/0x26c fs/read_write.c:708
📍 영향받는 시스템
Linux kernel 6.13.0-rc7 이하, IPv4 multicast routing 기능이 활성화된 시스템
⚔️ 공격 벡터
네트워크 접근 가능한 공격자가 netlink 소켓을 통해 라우팅 테이블 덤프 요청을 통해 DoS 유발
🛡️ 대응 방법
Linux kernel을 최신 버전으로 업데이트하여 ipmr_base.c의 패치 적용
🔧 검증 코드
위 명령어가 'Vulnerable kernel detected'를 출력하면 취약한 커널 버전이며, 'Patched or newer kernel'을 출력하면 안전한 상태입니다.
uname -r | grep -E '6\.1[0-2]\.' && echo 'Vulnerable kernel detected' || echo 'Patched or newer kernel'