🔍 CVE-2026-99227

7.8
CVSS Score
HIGH
2026-11-02
2026-11-03 20:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 io_uring waitid 기능에서 취소 상태를 관리하는 참조 카운터가 반복된 실패한 취소 시도로 인해 오버플로(wrap)될 수 있는 문제가 해결되었습니다. 이로 인해 동일한 요청이 두 번 완료되는 상황이 발생할 수 있었습니다. 수정은 취소 플래그를 원자적으로 설정하고 첫 번째 취소 시도만 참조 카운터를 증가시키도록 변경했습니다.

💡 쉬운 설명

컴퓨터 운영체제 내부에서 작업 취소를 여러 번 시도하면 내부 카운터가 잘못 넘어가 같은 작업이 두 번 처리될 수 있는 결함이 있었습니다. 이번 업데이트로 취소 요청이 반복되어도 한 번만 처리되도록 고쳐졌습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: prevent cancel reference wrap io_waitid packs the cancellation state into bit 31 of ->refs and uses bits 30:0 as a 31-bit reference counter: #define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0) __io_waitid_cancel() marks a request canceled, then increments the low bits of ->refs to claim completion ownership. When another path owns the request, the increment remains even though cancellation returns false. The request remains discoverable by cancellation, so repeated failed attempts can wrap the 31-bit reference field to zero. A later cancellation can claim ownership and complete the request a second time. Use atomic_fetch_or() when setting the cancel flag and inspect the old flag value. The first cancel attempt continues to the existing ownership increment, preserving its wake and issuer handoff semantics. Later attempts see the cancel flag and return without incrementing the reference field. This makes repeated failed cancellation attempts idempotent while leaving the first-cancel state transitions unchanged.

📍 영향받는 시스템

패치가 적용되지 않은 io_uring waitid 기능을 포함한 Linux 커널 버전 (수정 커밋 이전의 커널)

⚔️ 공격 벡터

로컬 사용자가 io_uring waitid 요청을 생성한 뒤 취소 작업을 반복 실행하여 참조 카운터를 오버플로시키고 요청을 이중 완료시키는 방식

🛡️ 대응 방법

배포판에서 제공하는 최신 Linux 커널 보안 업데이트를 설치하고 재부팅합니다.

🔧 검증 코드

출력된 커널 버전이 배포판의 보안 업데이트가 포함된 패치 버전 이상인지 확인하고, 해당 배포판 보안 공지에서 CVE-2026-99227 수정 버전을 대조합니다.

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