🇰🇷 한글 설명
Linux 커널의 max17040 전원 공급 장치 드라이버에서 시스템 절전 모드 진입 시 작업 취소 동기화 문제가 발견되었습니다. 기존의 cancel_delayed_work() 함수는 실행 중인 콜백을 기다리지 않아, 절전 모드 중에도 폴링 작업이 재시작되어 연료 게이지에 접근할 수 있는 레이스 컨디션이 발생합니다.
💡 쉬운 설명
컴퓨터가 잠자기 모드로 들어갈 때 배터리 잔량을 확인하는 작업이 완전히 멈추지 않고 계속 실행되는 버그입니다. 이로 인해 시스템이 잠든 상태에서도 하드웨어를 계속 건드려 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
power: supply: max17040: synchronize work cancellation on suspend
max17040_work() requeues itself after every poll. cancel_delayed_work()
only cancels a pending instance and does not wait for a callback that is
already running.
If system suspend races with the polling callback, the callback can
continue accessing the fuel gauge and requeue itself after the suspend
callback returns.
Use cancel_delayed_work_sync() to ensure polling is quiesced before
suspend completes.
📍 영향받는 시스템
max17040 드라이버를 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
시스템 절전 모드 진입 시 발생하는 레이스 컨디션 (로컬/하드웨어 상호작용)
🛡️ 대응 방법
cancel_delayed_work()를 cancel_delayed_work_sync()로 교체하여 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인