🇰🇷 한글 설명
Linux 커널의 usb gadget configfs에서 qw_sign 배열의 범위를 벗어난 읽기(Out-of-bounds read) 취약점이 발견되었습니다. utf16s_to_utf8s() 함수 호출 시 바이트 크기를 코드 유닛 수로 잘못 전달하여, 배열 끝을 넘어선 메모리 데이터가 노출될 수 있습니다.
💡 쉬운 설명
컴퓨터의 USB 설정 정보 중 일부를 읽을 때, 정해진 범위를 넘어서 메모리의 다른 정보를 몰래 읽어올 수 있는 오류입니다. 이로 인해 시스템 내부의 민감한 데이터가 외부로 유출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: configfs: fix out-of-bounds read of qw_sign
os_desc_qw_sign_show() passes OS_STRING_QW_SIGN_LEN as the input
length to utf16s_to_utf8s(), but that argument counts UTF-16 code
units while OS_STRING_QW_SIGN_LEN (14) is the byte size of qw_sign[].
The array holds only OS_STRING_QW_SIGN_LEN / 2 (7) code units, so the
conversion reads up to 7 units (14 bytes) past the end of qw_sign[]
into the following members of struct gadget_info when the stored
signature fills the array without a NUL terminator, exposing those
bytes through the configfs attribute.
The store path halves the count for its input bound but passes the
full byte count as the utf8s_to_utf16s() output limit; use the
destination code-unit count in both directions.
📍 영향받는 시스템
Linux kernel (usb gadget configfs 관련 모듈 사용 시스템)
⚔️ 공격 벡터
configfs 속성을 통해 특정 USB 서명(qw_sign) 값을 요청하여 메모리 경계를 넘어서는 데이터를 읽어냄
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인