🔍 CVE-2026-99203

7.8
CVSS Score
HIGH
2026-10-28
2026-10-31 13:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 pipe 모듈에서 두 번의 fasync 활성화 시 메모리 할당 실패가 발생하면, 기존 reader 등록이 잘못 제거되어 FASYNC 플래그가 해제되는 문제가 있습니다. 이로 인해 해제된 파일 구조체나 f_owner를 참조하게 되어 KASAN slab-use-after-free가 발생할 수 있습니다.

💡 쉬운 설명

리눅스 커널이 파이프의 비동기 알림을 관리하는 과정에서 메모리 부족 상황이 생기면 잘못된 정리 작업이 일어납니다. 그 결과 이미 해제된 메모리를 다시 사용하게 되어 시스템이 비정상 동작하거나 충돌할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: pipe: preserve existing fasync readers on writer setup failure F_SETFL and FIOASYNC decide whether to invoke ->fasync() before pipe_fasync() takes pipe->mutex. Two enables of one O_RDWR FIFO can therefore both enter the callback. fasync_helper() allocates before checking for an existing entry. If the first enable installs both entries, a second enable can update the reader entry and then fail the allocation for the writer entry. The error path removes the pre-existing reader entry, clearing FASYNC while the writer entry remains registered. __fput() then skips ->fasync(), so a later pipe notification can dereference the freed file or its f_owner. An unprivileged memory-pressure reproducer triggers a KASAN slab-use-after-free in send_sigio() through this path. Keep the reader helper's result and undo the registration only if this call added it. The pipe mutex serializes changes to both lists, so a failed new registration still removes its reader, while a failed duplicate preserves the existing registrations and FASYNC. Successful duplicate enables continue to update fa_fd as before.

📍 영향받는 시스템

패치 이전의 Linux 커널 (fs/pipe.c의 fasync 처리 로직을 포함한 버전)

⚔️ 공격 벡터

권한이 없는 로컬 사용자가 O_RDWR FIFO에 대해 F_SETFL/FIOASYNC를 반복 호출하고 메모리 압박을 유발하여 use-after-free를 트리거

🛡️ 대응 방법

배포판 벤더가 제공하는 최신 커널 보안 업데이트를 적용하고 재부팅

🔧 검증 코드

출력된 커널 버전을 배포판의 보안 권고문에서 이 CVE의 수정된 커널 버전과 비교하여, 같거나 높으면 패치가 적용된 것이고 낮으면 취약할 수 있습니다.

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