🇰🇷 한글 설명
Linux 커널의 Tegra XUSB PHY 드라이버(UTMI 모드)에서, USB 역할이 DEVICE에서 NONE으로 전환될 때 항상 켜져 있는(always-on) 레귤레이터를 잘못 비활성화하려 해 레귤레이터 disable이 불균형하게 발생하는 문제입니다. 이로 인해 커널 경고가 발생할 수 있으며, 수정은 레귤레이터 제어 로직을 ID override 함수로 옮겨 호스트 모드 전환 시에만 제어하도록 변경하는 것입니다.
💡 쉬운 설명
USB 장치 모드에서 호스트 모드를 끄는 과정에서 전원 공급 장치를 잘못 끄려고 시도하는 커널 버그입니다. 이 문제는 주로 경고 메시지와 전원 관리 불안정을 일으키며, 보안 영향은 제한적입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
phy: tegra: xusb: Fix unbalanced regulator disable in UTMI PHY mode
When transitioning from USB_ROLE_DEVICE to USB_ROLE_NONE, the code
assumed that the regulator should be disabled. However, if the regulator
is marked as always-on, regulator_is_enabled() continues to return true,
leading to an incorrect attempt to disable a regulator which is not
enabled.
This can result in warnings such as:
[ 250.155624] WARNING: CPU: 1 PID: 7326 at drivers/regulator/core.c:3004
_regulator_disable+0xe4/0x1a0
[ 250.155652] unbalanced disables for VIN_SYS_5V0
To fix this, we move the regulator control logic into
tegra186_xusb_padctl_id_override() function since it's directly related
to the ID override state. The regulator is now only disabled when the role
transitions from USB_ROLE_HOST to USB_ROLE_NONE, by checking the VBUS_ID
register. This ensures that regulator enable/disable operations are
properly balanced and only occur when actually transitioning to/from host
mode.
📍 영향받는 시스템
패치 이전의 Linux 커널 중 NVIDIA Tegra XUSB PHY 드라이버를 사용하는 시스템 (Jetson 등 Tegra 기반 장치)
⚔️ 공격 벡터
로컬에서 USB 역할 전환을 유발할 수 있는 상황에서 발생하는 커널 경고 및 전원 상태 불일치 (직접적인 원격 공격 경로는 확인되지 않음)
🛡️ 대응 방법
해당 커널 버전의 보안 업데이트(상류 커널 수정 커밋 적용)를 설치하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전이 패치된 버전 이상인지 확인하고, Tegra XUSB 드라이버가 없으면 이 CVE의 영향 대상이 아닙니다.
uname -r && (ls /sys/bus/platform/drivers/ 2>/dev/null | grep -i xusb || echo 'no tegra xusb driver bound')