🇰🇷 한글 설명
Linux 커널의 team 네트워크 드라이버에서 TEAM_OPTION_TYPE_STRING 옵션 설정 시 사용자 입력 문자열이 null 바이트로 종료되지 않으면 uninitialized 메모리를 읽게 되는 취약점. vsprintf 함수에서 문자열 길이를 잘못 계산하여 메모리 접근 위반이나 정보 유출 발생 가능.
💡 쉬운 설명
Linux 커널의 네트워크 드라이버가 문자열을 제대로 검증하지 않아 메모리를 잘못 읽을 수 있습니다. 이로 인해 민감한 시스템 정보가 유출되거나 커널이 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
team: better TEAM_OPTION_TYPE_STRING validation
syzbot reported following splat [1]
Make sure user-provided data contains one nul byte.
[1]
BUG: KMSAN: uninit-value in string_nocheck lib/vsprintf.c:633 [inline]
BUG: KMSAN: uninit-value in string+0x3ec/0x5f0 lib/vsprintf.c:714
string_nocheck lib/vsprintf.c:633 [inline]
string+0x3ec/0x5f0 lib/vsprintf.c:714
vsnprintf+0xa5d/0x1960 lib/vsprintf.c:2843
__request_module+0x252/0x9f0 kernel/module/kmod.c:149
team_mode_get drivers/net/team/team_core.c:480 [inline]
team_change_mode drivers/net/team/team_core.c:607 [inline]
team_mode_option_set+0x437/0x970 drivers/net/team/team_core.c:1401
team_option_set drivers/net/team/team_core.c:375 [inline]
team_nl_options_set_doit+0x1339/0x1f90 drivers/net/team/team_core.c:2662
genl_family_rcv_msg_doit net/netlink/genetlink.c:1115 [inline]
genl_family_rcv_msg net/netlink/genetlink.c:1195 [inline]
genl_rcv_msg+0x1214/0x12c0 net/netlink/genetlink.c:1210
netlink_rcv_skb+0x375/0x650 net/netlink/af_netlink.c:2543
genl_rcv+0x40/0x60 net/netlink/genetlink.c:1219
netlink_unicast_kernel net/netlink/af_netlink.c:1322 [inline]
netlink_unicast+0xf52/0x1260 net/netlink/af_netlink.c:1348
netlink_sendmsg+0x10da/0x11e0 net/netlink/af_netlink.c:1892
sock_sendmsg_nosec net/socket.c:718 [inline]
__sock_sendmsg+0x30f/0x380 net/socket.c:733
____sys_sendmsg+0x877/0xb60 net/socket.c:2573
___sys_sendmsg+0x28d/0x3c0 net/socket.c:2627
__sys_sendmsg net/socket.c:2659 [inline]
__do_sys_sendmsg net/socket.c:2664 [inline]
__se_sys_sendmsg net/socket.c:2662 [inline]
__x64_sys_sendmsg+0x212/0x3c0 net/socket.c:2662
x64_sys_call+0x2ed6/0x3c30 arch/x86/include/generated/asm/syscalls_64.h:47
do_syscall_x64 arch/x86/entry/common.c:52 [inline]
do_syscall_64+0xcd/0x1e0 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x77/0x7f
📍 영향받는 시스템
Linux kernel (team 드라이버 사용하는 모든 배포판, 패치 이전 버전)
⚔️ 공격 벡터
netlink 소켓을 통한 team 옵션 설정 메시지에서 null 바이트 없는 문자열 전달
🛡️ 대응 방법
Linux kernel을 최신 버전으로 업데이트하여 team 드라이버 문자열 검증 패치 적용
🔧 검증 코드
커널 버전 확인 후 team 드라이버 모듈 존재 여부로 영향도 파악. 패치된 버전으로 업데이트되었으면 null 바이트 검증 로직이 team_core.c에 포함됨
uname -r && grep -r team /lib/modules/$(uname -r)/kernel/drivers/net/ 2>/dev/null | head -1