🔍 CVE-2024-57913

4.7
CVSS Score
MEDIUM
2025-01-19
2026-10-15 02:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 USB gadget functionfs 드라이버에서 불필요한 WARN_ON이 panic_on_warn이 활성화된 경우 커널 패닉을 유발하는 취약점입니다. adb 데몬 작업과 configfs를 통한 UDC 쓰기 작업 사이의 경쟁 조건으로 인해 functionfs_bind에서 경고가 트리거되어 시스템을 중단시킵니다.

💡 쉬운 설명

Android USB 디버깅 서비스와 시스템 설정이 동시에 실행될 때 Linux 커널이 충돌할 수 있는 문제입니다. 불필요한 경고 메시지를 제거하여 수정됩니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: f_fs: Remove WARN_ON in functionfs_bind This commit addresses an issue related to below kernel panic where panic_on_warn is enabled. It is caused by the unnecessary use of WARN_ON in functionsfs_bind, which easily leads to the following scenarios. 1.adb_write in adbd 2. UDC write via configfs ================= ===================== ->usb_ffs_open_thread() ->UDC write ->open_functionfs() ->configfs_write_iter() ->adb_open() ->gadget_dev_desc_UDC_store() ->adb_write() ->usb_gadget_register_driver_owner ->driver_register() ->StartMonitor() ->bus_add_driver() ->adb_read() ->gadget_bind_driver() <times-out without BIND event> ->configfs_composite_bind() ->usb_add_function() ->open_functionfs() ->ffs_func_bind() ->adb_open() ->functionfs_bind() <ffs->state !=FFS_ACTIVE> The adb_open, adb_read, and adb_write operations are invoked from the daemon, but trying to bind the function is a process that is invoked by UDC write through configfs, which opens up the possibility of a race condition between the two paths. In this race scenario, the kernel panic occurs due to the WARN_ON from functionfs_bind when panic_on_warn is enabled. This commit fixes the kernel panic by removing the unnecessary WARN_ON. Kernel panic - not syncing: kernel: panic_on_warn set ... [ 14.542395] Call trace: [ 14.542464] ffs_func_bind+0x1c8/0x14a8 [ 14.542468] usb_add_function+0xcc/0x1f0 [ 14.542473] configfs_composite_bind+0x468/0x588 [ 14.542478] gadget_bind_driver+0x108/0x27c [ 14.542483] really_probe+0x190/0x374 [ 14.542488] __driver_probe_device+0xa0/0x12c [ 14.542492] driver_probe_device+0x3c/0x220 [ 14.542498] __driver_attach+0x11c/0x1fc [ 14.542502] bus_for_each_dev+0x104/0x160 [ 14.542506] driver_attach+0x24/0x34 [ 14.542510] bus_add_driver+0x154/0x270 [ 14.542514] driver_register+0x68/0x104 [ 14.542518] usb_gadget_register_driver_owner+0x48/0xf4 [ 14.542523] gadget_dev_desc_UDC_store+0xf8/0x144 [ 14.542526] configfs_write_iter+0xf0/0x138

📍 영향받는 시스템

Linux kernel 5.10 ~ 6.10 (USB gadget functionfs 지원 버전, 패치 이전)

⚔️ 공격 벡터

로컬 공격, adb 명령어와 configfs 쓰기 작업의 타이밍을 조작하여 경쟁 조건 유발

🛡️ 대응 방법

Linux 커널을 패치된 버전으로 업데이트 (kernel >= 6.10.7 또는 해당 안정 버전)

🔧 검증 코드

커널 버전이 6.10.7 미만이고 5.10 이상이면 취약함. 출력이 'Vulnerable'이면 업데이트 필요, 'Safe'면 안전

Shell / Script
uname -r | grep -E '^(5\.(10|[2-9]|[1-9][0-9])|6\.(0|1|[2-9]|10\.[0-6])|[7-9])' && echo 'Vulnerable' || echo 'Safe'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel