피드로 돌아가기
Hacker NewsSecurity
원문 읽기
732바이트 스크립트로 모든 Linux Root 권한 획득하는 Page Cache 취약점
Copy Fail: 732 Bytes to Root on Every Major Linux Distribution
AI 요약
Context
Linux 커널의 AF_ALG 소켓과 splice() 시스템 콜을 통한 Page Cache 참조 전달 구조의 설계 결함 분석. read-only 파일의 물리적 페이지가 쓰기 가능한 Scatterlist에 직접 포함되어 권한 없는 사용자에게 노출되는 구조적 한계 존재.
Technical Solution
- splice()를 통한 파일 데이터를 Pipe 및 AF_ALG 소켓으로 전달하여 Page Cache 페이지의 물리적 참조를 직접 획득하는 경로 설계
- AEAD 복호화 과정에서 AAD와 Ciphertext는 복사하지만 Authentication Tag는 sg_chain()을 통해 원본 Page Cache 페이지를 그대로 유지하는 In-place 설계 적용
- authencesn 알고리즘의 내부 Scratch Write 로직을 이용해 Tag 영역 너머의 Page Cache 메모리를 오버라이트하는 4-byte 결정적 쓰기 수행
- VFS Write 경로를 우회하여 메모리 상의 Page Cache만 오염시키고 디스크의 원본 파일은 유지하는 Stealthy 기법 구현
- 공유 Page Cache 특성을 활용하여 Container 경계를 넘어 Host 및 Kubernetes 노드까지 영향력을 확장하는 Escalation 경로 확보
실천 포인트
1. 커널 모듈 설계 시 읽기 전용 데이터의 참조가 쓰기 가능한 Scatterlist나 Buffer에 포함되는 경로가 있는지 전수 조사
2. In-place 처리 로직 적용 시 입력 데이터의 경계 검증(Boundary Check)이 API 수준에서 강제되는지 검토
3. Page Cache 공유 기반의 격리 환경(Container)에서 메모리 직접 수정이 가능한 원시 함수(Primitive) 존재 여부 확인