🔍 CVE-2026-89764

7.8
CVSS Score
HIGH
2026-09-11
2026-10-19 09:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 Rust 구현체에서 Devres 자원을 동시에 해제할 때 발생하는 레이스 컨디션 취약점입니다. 두 개의 경로가 동시에 자원 해제를 시도할 경우, 한쪽에서 자원을 해제하는 동안 다른 쪽에서 해당 자원에 접근하여 Use-After-Free(UAF) 오류가 발생할 수 있습니다.

💡 쉬운 설명

컴퓨터가 사용하던 메모리 자원을 정리하는 과정에서 두 작업이 동시에 충돌하여 발생하는 문제입니다. 이로 인해 이미 삭제된 메모리 영역에 접근하게 되어 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: rust: devres: fix race between concurrent revokers There is a potential race condition when two paths try to revoke a Devres concurrently. The driver core's devres_release_all() calls Revocable::revoke() via the release callback, while Devres::drop() calls revoke_nosync() on another CPU. The revoker that does not claim the is_available swap returns immediately, but the revoker that did may still be executing drop_in_place() on the inner data. This can cause a use-after-free when the other revoker's caller proceeds to drop adjacent resources that drop_in_place() still references (e.g., Devres<DmaMappedSgt> racing with SGTable freeing the backing sg_table and pages). Fix this by adding a Completion. The release callback signals the Completion after revoke() finishes, and Devres::drop() waits for it when it loses the is_available swap. This ensures the wrapped object is fully torn down before Devres::drop() returns.

📍 영향받는 시스템

Rust 언어 기반의 Devres 기능을 사용하는 Linux 커널 버전

⚔️ 공격 벡터

동시적인 자원 해제 요청을 유도하여 메모리 관리 로직의 충돌을 일으킴

🛡️ 대응 방법

커널 패치를 통해 자원 해제 완료를 확인하는 Completion 메커니즘을 적용하여 순차적 해제를 보장해야 함

🔧 검증 코드

현재 커널 버전과 Rust 지원 설정 여부를 확인하여 해당 취약점이 포함된 커널 환경인지 파악합니다.

Shell / Script
uname -r && grep -i 'rust' /proc/config.gz 2>/dev/null || zgrep -i 'CONFIG_RUST' /proc/config*

📊 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