🇰🇷 한글 설명
Linux 커널의 USB 가젯 f_ncm 드라이버에서 뮤텍스 잠금이 원자적(atomic) 컨텍스트에서 호출되어 시스템이 의도하지 않게 슬립 상태에 들어갈 수 있는 문제를 수정한 것입니다. 이 패치는 네트워크 장치 포인터를 제거하고 부울 플래그로 대체하여 컨텍스트 문제를 해결합니다.
💡 쉬운 설명
Linux 커널의 USB 연결 관리 코드가 잘못된 시점에 시스템을 멈추게 할 수 있었던 버그입니다. 더 안전한 방식으로 연결 상태를 추적하도록 변경했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: f_ncm: Fix atomic context locking issue
The ncm_set_alt function was holding a mutex to protect against races
with configfs, which invokes the might-sleep function inside an atomic
context.
Remove the struct net_device pointer from the f_ncm_opts structure to
eliminate the contention. The connection state is now managed by a new
boolean flag to preserve the use-after-free fix from
commit 6334b8e4553c ("usb: gadget: f_ncm: Fix UAF ncm object at re-bind
after usb ep transport error").
BUG: sleeping function called from invalid context
Call Trace:
dump_stack_lvl+0x83/0xc0
dump_stack+0x14/0x16
__might_resched+0x389/0x4c0
__might_sleep+0x8e/0x100
...
__mutex_lock+0x6f/0x1740
...
ncm_set_alt+0x209/0xa40
set_config+0x6b6/0xb40
composite_setup+0x734/0x2b40
...
📍 영향받는 시스템
USB NCM(Network Control Model) 가젯 기능을 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
내부/로컬 - USB 가젯 모드 설정 시 트리거되는 커널 스택 오류
🛡️ 대응 방법
해당 f_ncm atomic context 수정이 포함된 Linux 커널로 업데이트
🔧 검증 코드
'BUG: sleeping' 또는 'f_ncm' 관련 오류가 표시되면 취약할 가능성이 있으며, 커널 버전이 표시되면 최신 패치 버전으로 업데이트 필요
dmesg 2>/dev/null | grep -E 'BUG: sleeping|ncm_set_alt|f_ncm' | head -1 || uname -r