
Go 포팅된 CVE-2026-31431용 Copy Fail PoC로, AF_ALG와 splice를 통해 페이지 캐시에 4바이트 쓰기를 가능하게 하는 Linux 커널 authencesn 결함입니다. 멀티 아키텍처 빌드 파이프라인과 상세한 기술 문서를 포함합니다.
이 저장소는 공개된 Copy Fail PoC의 Go 포팅과 다중 아키텍처 Linux 바이너리를 위한 재현 가능한 빌드 파이프라인을 제공합니다.
Copy Fail(CVE-2026-31431)은 authencesn의 Linux 커널 로직 결함으로, AF_ALG + splice()를 통해 참조되는 페이지 캐시 데이터에 결정적인 4바이트 쓰기를 가능하게 합니다.
이 프로젝트는 명시적으로 테스트 권한이 부여된 환경에서만 사용하십시오. 소유하지 않았거나 서면 허가를 받지 않은 시스템에서 이 PoC를 실행하지 마십시오.
소스에서 빌드하지 않고 즉시 테스트하려면 릴리스 바이너리를 다운로드하여 실행하십시오:
wget https://github.com/ErdemOzgen/copy-fail-cve-2026-31431/releases/download/v1.0.1/copy-fail-cve-2026-31431_linux_amd64
chmod +x copy-fail-cve-2026-31431_linux_amd64
./copy-fail-cve-2026-31431_linux_amd64
다른 아키텍처의 경우 GitHub Releases 페이지에서 해당 자산을 다운로드하십시오:
https://github.com/ErdemOzgen/copy-fail-cve-2026-31431/releases
모든 Linux 타깃 빌드:
make clean build-linux
빌드 및 체크섬 생성:
make clean checksums
dist/의 출력 바이너리:
copy-fail-cve-2026-31431_linux_amd64copy-fail-cve-2026-31431_linux_arm64copy-fail-cve-2026-31431_linux_386copy-fail-cve-2026-31431_linux_armv7SHA256SUMS기본 실행:
./copy-fail-cve-2026-31431_linux_amd64
사용자 지정 타깃 경로 사용:
./copy-fail-cve-2026-31431_linux_amd64 -target /path/to/binary
실행 후 su 실행 비활성화:
./copy-fail-cve-2026-31431_linux_amd64 -spawn-su=false
빌드 메타데이터 출력:
./copy-fail-cve-2026-31431_linux_amd64 -version
오프셋 0에서 다음과 유사한 오류로 실행이 실패하는 경우:
error: copy chunk at offset 0: splice(pipe->AF_ALG): software caused connection abort
커널이 취약한 AEAD 인플레이스 경로를 거부했을 가능성이 높습니다(예: 호스트가 CVE-2026-31431에 대해 패치되었거나 algif_aead가 완화/비활성화된 경우).
빠른 확인:
uname -r
grep -E "algif_aead|authencesn" /proc/modules
수정된 시스템에서는 이 PoC가 실패할 것으로 예상됩니다.
공개된 정보에 따르면, 취약한 경로는 권한이 없는 로컬 사용자가 특정 조건에서 읽기 가능한 파일의 페이지 캐시 콘텐츠에 4바이트 쓰기 프리미티브를 영향을 줄 수 있게 합니다.
중요한 운영적 특성은 런타임 중 메모리 내 페이지 캐시 복사본이 디스크의 바이트와 달라질 수 있다는 점이며, 이는 디스크 수준 무결성 검사에만 의존하는 팀에게 영향 분석을 쉽지 않게 만듭니다.
Copy Fail은 다음과 같은 이유로 주목할 만합니다:
높은 수준에서 이 문제는 세 가지 메커니즘의 교차점에 있습니다:
AF_ALG AEAD 요청 처리.splice() 페이지 캐시 백업 데이터 이동.authencesn 복호화 스크래치 동작.취약한 설계에서 페이지 캐시 백업 세그먼트는 알고리즘 처리 중 쓰기를 수신하는 요청 형태로 연결될 수 있으며, 이는 의도된 대상 영역만 수정된다는 핵심 가정을 위반합니다.
문서화된 경로에서 authencesn은 ESN 레이아웃 처리 주변에서 대상 측 스크래치 작업을 사용하며 예상된 복호화 출력 계약을 넘어선 오프셋에서 쓰기를 수행합니다.
인플레이스 AEAD 설정 및 연결된 scatterlist 참조와 결합되면 이 쓰기는 공격자가 선택한 영역의 페이지 캐시 백업 메모리에 도달할 수 있습니다.
공개 자료는 여러 커밋의 진화를 설명합니다:
authencesn 동작은 초기 통합 이력에서 시작되었습니다.AF_ALG AEAD 지원은 splice() 상호작용으로 사용자 공간 도달 가능성을 도입했습니다.algif_aead의 인플레이스 최적화는 소스와 대상 흐름을 결합하여 이 교차점을 악용 가능하게 만들었습니다.핵심 교훈은 구성적 위험입니다: 개별적으로 합리적인 변경이 결합되면 안전하지 않을 수 있습니다.
공개된 문서와 PoC는 다음 순서를 설명합니다:
authencesn(hmac(sha256),cbc(aes))용 AF_ALG AEAD 소켓을 열고 구성합니다.splice()를 사용하여 페이지 캐시 백업 파일 데이터를 요청 경로로 라우팅합니다.이 저장소의 Go 구현은 승인된 환경에서 연구 및 검증을 위해 해당 공개 PoC 로직을 미러링합니다.
보고된 수정은 algif_aead의 취약한 인플레이스 AEAD 작업을 아웃오브플레이스 동작으로 되돌립니다.
개념적으로:
AF_ALG 사용에 대한 정책 제한).공개 문서 기준:
| 날짜 | 이벤트 |
|---|---|
| 2026-03-23 | Linux 커널 보안 팀에 보고서 제출 |
| 2026-03-24 | 초기 확인 |
| 2026-03-25 | 패치 논의/검토 |
| 2026-04-01 | 메인라인에 수정 커밋 |
| 2026-04-22 | CVE-2026-31431 지정 |
| 2026-04-29 | 공개 공개 |
발표된 연구는 사용자 공간에서 도달 가능한 암호화 코드 경로와 splice() 하의 scatterlist/페이지 출처에 초점을 맞춘 인간 안내, AI 지원 서브시스템 분석을 인정합니다.
main.go: Go PoC 포팅.Makefile: 결정적 다중 아키텍처 Linux 빌드 타깃..github/workflows/build.yml: CI 빌드 및 릴리스 아티팩트 워크플로우.워크플로우 파일: .github/workflows/build.yml
트리거:
main으로 푸시v*와 일치하는 태그 푸시workflow_dispatch동작:
make clean checksums를 통해 체크섬과 함께 모든 Linux 바이너리 빌드.v*와 일치하는 태그에 대해 릴리스 자산 자동 게시.권장 릴리스 흐름:
git tag v1.0.0
git push origin v1.0.0
| 배포판 | 커널 버전 |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |