🇰🇷 한글 설명
리눅스 커널의 firmware_loader에서 완료된 sysfs 폴백 요청을 큐에 중복으로 추가하는 취약점이 발견되었습니다. 장치가 등록되기 전에 요청이 완료될 경우, 이미 완료된 요청이 대기 목록에 남아 메모리 해제 후 잘못된 포인터를 참조하게 되어 시스템 오류를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터가 부품에 필요한 소프트웨어를 불러오는 과정에서, 이미 작업이 끝난 요청을 다시 목록에 넣으려고 시도하다가 오류가 발생하는 문제입니다. 이로 인해 시스템이 갑자기 멈추거나 비정상적으로 작동할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
firmware_loader: do not queue completed sysfs fallback requests
fw_load_sysfs_fallback() calls device_add() before adding the fw_priv to
pending_fw_head. device_add() publishes the fallback loading interface, so
a userspace helper which discovers the device by scanning sysfs can write 0
to the loading attribute and complete the request before it is queued as
pending.
In that interleaving firmware_loading_store() calls fw_state_done() while
pending_list still points to itself, so it cannot remove an entry from
pending_fw_head. The subsequent unconditional list_add() then queues an
already-completed fw_priv. Once the request is released, pending_fw_head
can retain a pointer to freed memory and the next fallback request can
fault while validating the list.
Only in-flight fallback requests need suspend or reboot abort handling. If
the request is already DONE after device_add(), return success from the
fallback path without sending another uevent, waiting again, or queueing it
as pending. This preserves the invariant that pending_fw_head contains only
active fallback requests.
📍 영향받는 시스템
Linux Kernel (firmware_loader 관련 모듈 사용 시스템)
⚔️ 공격 벡터
사용자 공간의 헬퍼 프로세스가 sysfs 인터페이스를 통해 특정 타이밍에 속성을 조작하여 발생 (로컬 공격 가능성)
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인하십시오.