🇰🇷 한글 설명
Linux 커널의 stmmac 이더넷 드라이버에서, EST(Enhanced Scheduled Traffic) 구조체를 재초기화할 때 그 안에 내장된 mutex 락도 함께 리셋되어 잘못된 락 상태가 발생하는 문제입니다. 이로 인해 tc taprio 설정 시 DEBUG_LOCKS_WARN_ON 경고와 커널 경고 스택 트레이스가 출력될 수 있습니다. 해결을 위해 락을 struct stmmac_priv로 옮기고 초기화 시 락을 다시 획득하도록 수정되었습니다.
💡 쉬운 설명
네트워크 카드 드라이버가 시간 기반 트래픽 스케줄 설정을 변경할 때 내부 잠금 장치가 잘못 초기화되는 버그입니다. 이로 인해 커널에 경고 메시지가 기록되고 시스템이 불안정해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: stmmac: move the EST lock to struct stmmac_priv
Reinitialize the whole EST structure would also reset the mutex
lock which is embedded in the EST structure, and then trigger
the following warning. To address this, move the lock to struct
stmmac_priv. We also need to reacquire the mutex lock when doing
this initialization.
DEBUG_LOCKS_WARN_ON(lock->magic != lock)
WARNING: CPU: 3 PID: 505 at kernel/locking/mutex.c:587 __mutex_lock+0xd84/0x1068
Modules linked in:
CPU: 3 PID: 505 Comm: tc Not tainted 6.9.0-rc6-00053-g0106679839f7-dirty #29
Hardware name: NXP i.MX8MPlus EVK board (DT)
pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
pc : __mutex_lock+0xd84/0x1068
lr : __mutex_lock+0xd84/0x1068
sp : ffffffc0864e3570
x29: ffffffc0864e3570 x28: ffffffc0817bdc78 x27: 0000000000000003
x26: ffffff80c54f1808 x25: ffffff80c9164080 x24: ffffffc080d723ac
x23: 0000000000000000 x22: 0000000000000002 x21: 0000000000000000
x20: 0000000000000000 x19: ffffffc083bc3000 x18: ffffffffffffffff
x17: ffffffc08117b080 x16: 0000000000000002 x15: ffffff80d2d40000
x14: 00000000000002da x13: ffffff80d2d404b8 x12: ffffffc082b5a5c8
x11: ffffffc082bca680 x10: ffffffc082bb2640 x9 : ffffffc082bb2698
x8 : 0000000000017fe8 x7 : c0000000ffffefff x6 : 0000000000000001
x5 : ffffff8178fe0d48 x4 : 0000000000000000 x3 : 0000000000000027
x2 : ffffff8178fe0d50 x1 : 0000000000000000 x0 : 0000000000000000
Call trace:
__mutex_lock+0xd84/0x1068
mutex_lock_nested+0x28/0x34
tc_setup_taprio+0x118/0x68c
stmmac_setup_tc+0x50/0xf0
taprio_change+0x868/0xc9c
📍 영향받는 시스템
Linux 커널 6.9-rc 이하 중 stmmac 드라이버(NXP i.MX8MPlus 등 stmmac 기반 이더넷)를 사용하고 taprio 기능을 쓰는 시스템
⚔️ 공격 벡터
권한이 있는 로컬 사용자가 tc 명령으로 taprio qdisc 설정을 반복 변경하여 커널 경고를 유발할 수 있음
🛡️ 대응 방법
커널을 해당 CVE 수정이 포함된 안정 버전으로 업데이트하거나 배포판 보안 패치를 적용
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지 또는 커널 안정 브랜치의 CVE-2024-38594 수정 버전과 비교하여 수정 포함 여부를 확인