🇰🇷 한글 설명
Linux 커널의 arm_scmi 펌웨어 드라이버에서 프로토콜 바인딩 실패 시 SCMI 핸들을 적절히 해제하지 않아 발생하는 리소스 누수 취약점입니다. 장치 링크 생성 실패나 프로브 실패 시 참조 카운트가 제대로 감소하지 않아 SCMI 인스턴스가 메모리에 남게 됩니다.
💡 쉬운 설명
컴퓨터 부품을 연결하는 과정에서 오류가 발생했을 때, 사용하던 연결 고리를 제대로 끊지 못해 시스템 자원이 계속 낭비되는 문제입니다. 이 문제가 반복되면 시스템의 메모리나 자원이 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
firmware: arm_scmi: Drop handle on protocol bind failures
The SCMI bus notifier acquires an SCMI handle when the driver core emits
BUS_NOTIFY_BIND_DRIVER, before invoking the protocol driver probe
callback. The protocol probe path only checks whether sdev->handle is
set.
If device_link_add() fails after the handle has been acquired, the
protocol device can still bind with a valid handle but without the
dependency link to the SCMI parent. A concurrent parent unbind can then
miss the child and tear down the SCMI instance while the child still
holds a handle into it.
If the protocol driver probe later fails, for example with
-EPROBE_DEFER, the driver core emits BUS_NOTIFY_DRIVER_NOT_BOUND rather
than BUS_NOTIFY_UNBOUND_DRIVER. The SCMI notifier only released the
handle on BUS_NOTIFY_UNBOUND_DRIVER, so each failed protocol-device bind
leaked the SCMI instance users refcount and left sdev->handle set after
the failed probe.
Make the link helper report failure and drop the acquired handle if the
link cannot be created. Also handle BUS_NOTIFY_DRIVER_NOT_BOUND in the
same cleanup path used for unbind so failed probes balance the earlier
BUS_NOTIFY_BIND_DRIVER acquisition.
📍 영향받는 시스템
Linux Kernel (arm_scmi 드라이버를 사용하는 ARM 기반 시스템)
⚔️ 공격 벡터
로컬 공격자가 특정 장치 드라이버의 프로브를 의도적으로 실패시켜 시스템 자원 고갈(DoS) 유도 가능
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인