🔍 CVE-2026-31578

7.8
CVSS Score
HIGH
2026-04-24
2026-06-01 17:16
✅ 완료

🇰🇷 한글 설명

Linux 커널의 as102_usb 드라이버에서 장치 등록 후 메모리를 해제하는 과정 중 레이스 컨디션이 발생합니다. 이로 인해 이미 열려 있는 파일 디스크립터가 해제된 메모리에 접근하거나 중복으로 해제하는 Use-After-Free 및 Double-Free 취약점이 발생할 수 있습니다.

💡 쉬운 설명

장치를 사용하기 위해 문을 열어두었는데, 시스템이 장치를 치우면서 사용 중인 메모리까지 먼저 지워버리는 문제입니다. 이로 인해 프로그램이 엉뚱한 메모리를 건드리거나 시스템이 충돌할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: media: as102: fix to not free memory after the device is registered in as102_usb_probe() In as102_usb driver, the following race condition occurs: ``` CPU0 CPU1 as102_usb_probe() kzalloc(); // alloc as102_dev_t .... usb_register_dev(); fd = sys_open("/path/to/dev"); // open as102 fd .... usb_deregister_dev(); .... kfree(); // free as102_dev_t .... sys_close(fd); as102_release() // UAF!! as102_usb_release() kfree(); // DFB!! ``` When a USB character device registered with usb_register_dev() is later unregistered (via usb_deregister_dev() or disconnect), the device node is removed so new open() calls fail. However, file descriptors that are already open do not go away immediately: they remain valid until the last reference is dropped and the driver's .release() is invoked. In as102, as102_usb_probe() calls usb_register_dev() and then, on an error path, does usb_deregister_dev() and frees as102_dev_t right away. If userspace raced a successful open() before the deregistration, that open FD will later hit as102_release() --> as102_usb_release() and access or free as102_dev_t again, occur a race to use-after-free and double-free vuln. The fix is to never kfree(as102_dev_t) directly once usb_register_dev() has succeeded. After deregistration, defer freeing memory to .release(). In other words, let release() perform the last kfree when the final open FD is closed.

📍 영향받는 시스템

Linux kernel (as102_usb driver 포함 버전)

⚔️ 공격 벡터

장치 등록과 해제 사이의 타이밍을 이용한 레이스 컨디션 공격을 통해 메모리 오염 유도

🛡️ 대응 방법

커널 패치를 통해 장치 등록 성공 후에는 메모리 해제를 .release() 단계로 지연시켜 처리하도록 업데이트

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel