🇰🇷 한글 설명
Linux 커널의 MPLS 구성에서 CONFIG_INET=n 설정 시 mpls_valid_fib_dump_req() 함수가 NULL 포인터를 참조하여 시스템 오류를 유발하는 취약점입니다. 권한이 없는 사용자가 RTM_GETROUTE 요청을 통해 이를 트리거할 수 있어 시스템 안정성에 위협이 됩니다.
💡 쉬운 설명
특정 설정이 된 리눅스 시스템에서 권한이 없는 사용자가 특수한 네트워크 요청을 보내면 컴퓨터 시스템이 갑자기 멈추거나 오류가 발생할 수 있습니다. 이는 프로그램이 존재하지 않는 메모리 주소를 참조하려고 할 때 발생하는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mpls: fix NULL deref in mpls_valid_fib_dump_req() on CONFIG_INET=n
On CONFIG_INET=n builds, mpls_valid_fib_dump_req() walks the parsed
attribute table itself instead of calling ip_valid_fib_dump_req(). The
RTA_OIF arm passes tb[RTA_OIF] to nla_get_u32() without checking it is
present, so an RTM_GETROUTE dump for AF_MPLS with strict checking and no
RTA_OIF hits a NULL dereference.
RTM_GETROUTE is RTNL_KIND_GET, which rtnetlink_rcv_msg() permits without
CAP_NET_ADMIN, so an unprivileged user can trigger it.
Oops: general protection fault, probably for non-canonical address
0xdffffc0000000000: 0000 [#1] SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
RIP: 0010:mpls_valid_fib_dump_req (net/mpls/af_mpls.c:2189)
Call Trace:
mpls_dump_routes (net/mpls/af_mpls.c:2236)
netlink_dump (net/netlink/af_netlink.c:2331)
__netlink_dump_start (net/netlink/af_netlink.c:2446)
rtnetlink_rcv_msg (net/core/rtnetlink.c:7033)
netlink_rcv_skb (net/netlink/af_netlink.c:2556)
netlink_unicast (net/netlink/af_netlink.c:1345)
netlink_sendmsg (net/netlink/af_netlink.c:1900)
__sock_sendmsg (net/socket.c:790)
____sys_sendmsg (net/socket.c:2684)
___sys_sendmsg (net/socket.c:2738)
__sys_sendmsg (net/socket.c:2770)
do_syscall_64 (arch/x86/entry/syscall_64.c:94)
entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)
Skip unset attributes, as ip_valid_fib_dump_req() does.
📍 영향받는 시스템
CONFIG_INET=n 옵션으로 빌드된 Linux 커널 (MPLS 기능 포함)
⚔️ 공격 벡터
권한이 없는 로컬 사용자가 AF_MPLS에 대해 RTM_GETROUTE Netlink 메시지를 전송
🛡️ 대응 방법
해당 취약점이 수정된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 패치된 보안 업데이트 버전인지 확인