🇰🇷 한글 설명
Linux 커널의 cd321x_update_work() 함수에서 typec_partner_desc 구조체가 완전히 초기화되지 않아 발생하는 취약점입니다. 초기화되지 않은 함수 포인터가 실행될 경우 임의의 코드가 실행될 수 있으며, 초기화되지 않은 데이터가 sysfs를 통해 유출될 수 있습니다.
💡 쉬운 설명
USB 연결 시 장치 정보를 저장하는 메모리 공간이 깨끗하게 비워지지 않아 발생하는 문제입니다. 이로 인해 해커가 시스템을 조작하거나 중요한 정보를 몰래 훔쳐볼 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: typec: tipd: fix uninitialized typec_partner_desc in cd321x_update_work()
cd321x_update_work() passes a stack-allocated typec_partner_desc to
typec_register_partner() after initializing only usb_pd, accessory and
identity.
typec_register_partner() copies attach and deattach from the descriptor
into the partner. With those fields left unset, garbage function pointers
may be stored and later invoked from typec_partner_link_device() when a USB
device is linked to the port. Uninitialized pd_revision and usb_capability
similarly leak stack data through partner sysfs.
Zero-initialize the descriptor so optional callbacks remain NULL and the
remaining fields are zero.
📍 영향받는 시스템
Linux kernel (cd321x driver 사용 시스템)
⚔️ 공격 벡터
악의적인 USB 장치를 연결하여 초기화되지 않은 함수 포인터를 실행하거나 메모리 데이터를 유출함
🛡️ 대응 방법
커널 패치를 적용하여 typec_partner_desc 구조체를 0으로 초기화(Zero-initialize)해야 함
🔧 검증 코드
명령어 결과에서 해당 구조체가 초기화(memset 또는 = {0})되는 코드가 포함되어 있는지 확인하십시오.
grep -r "cd321x_update_work" /lib/modules/$(uname -r)/kernel/drivers/usb/typec/ | grep "typec_partner_desc"
💻 영향받는 소프트웨어
IBM Verify Identity Access