
탐지기 및 Linux algif_aead 페이지 캐시 스크래치-쓰기 취약점(CVE-2026-31431)에 대한 개념 증명 로컬 권한 상승 도구입니다. /etc/passwd 페이지 캐시에서 UID를 0으로 뒤집는 비파괴적 테스트와 익스플로잇을 포함합니다.
저자: byt3l0rd
2026-04-29에 공개된 Linux algif_aead / authencesn 페이지 캐시 스크래치 쓰기(scratch-write) 버그에 대한 탐지기 및 개념 증명 LPE입니다.
공개 문서: https://xint.io/blog/copy-fail-linux-distributions
소유한 호스트 또는 명시적으로 평가가 위임된 호스트에서만 사용하십시오. 이 LPE는 메모리 내 상태(페이지 캐시)를 수정하지만, 이 기법은 실제 권한 상승입니다 — 승인 없이 시스템에서 실행하는 것은 대부분의 관할권에서 불법입니다.
algif_aead는 AEAD 작업을 제자리(in-place)에서 실행합니다(req->src == req->dst). 소스 데이터가 일반 파일에서 splice()를 통해 공급되면, 대상 scatterlist에는 파일의 페이지 캐시 페이지에 대한 참조가 포함됩니다 — 즉, 커널이 해당 페이지에 쓰게 됩니다. 그런 다음 authencesn(hmac(sha256), cbc(aes)) 알고리즘은 AAD의 seqno_lo 필드(sendmsg로 제공된 AAD의 4~7바이트)에 대한 4바이트 "스크래치" 쓰기를 해당 대상에 수행하여 파일의 페이지 캐시 사본을 손상시킵니다.
디스크의 파일은 절대 수정되지 않으므로 디스크 기반 서명이 없습니다. 손상은 페이지 캐시를 공유하는 읽기 프로그램에게만 관찰됩니다. /etc/passwd와 /usr/bin/su는 모두 전 세계에서 읽을 수 있으므로, 권한이 없는 로컬 사용자가 실행 중인 커널의 두 파일에 대한 뷰를 손상시킬 수 있습니다.
영향 대상: 커밋 72548b093ee3(2017년 제자리 AEAD)을 포함하되 업스트림 되돌림(revert)이 적용되지 않은 커널. 공개 문서는 Ubuntu 24.04 LTS, Amazon Linux 2023, RHEL 14.3, SUSE 16을 확인했지만, 기본 프리미티브는 해당 범위보다 앞섭니다.
| 파일 | 용도 |
|---|---|
test_cve_2026_31431.py | 비파괴 탐지기. 임시 디렉터리의 센티널 파일에서 작동하며 시스템 바이너리를 절대 건드리지 않습니다. |
exploit_cve_2026_31431.py | LPE. /etc/passwd의 페이지 캐시에서 실행 중인 사용자의 UID를 0으로 변경한 다음 su를 호출하여 루트 셸을 얻습니다. |
두 스크립트 모두 순수 Python 3.10+ 표준 라이브러리입니다.
# 1. 탐지
python3 test_cve_2026_31431.py
# 종료 코드 0 = 취약하지 않음, 2 = 취약함, 1 = 테스트 오류
# 2. 익스플로잇 (대화형 — su가 사용자 자신의 비밀번호를 요구합니다)
python3 exploit_cve_2026_31431.py --shell