Python
Sndav / CVE-2026-31431-Advanced-Exploit
CVE-2026-31431 순수 파일 이용
44
13
약 2개월 전
이 프로젝트에 대해
Sndav 님의 CVE-2026-31431-Advanced-Exploit 프로젝트는 GitHub에서 44개의 별을 받으며 많은 개발자들의 주목을 받고 있습니다. 특히 Python 환경에서 유용하게 활용될 수 있으며, 최근 오픈소스 커뮤니티에서 활발한 기여와 토론이 이루어지고 있는 트렌딩 레포지토리입니다.
Language Breakdown
Python 100%
🇰🇷 한국어 번역 README
캐시 히트CVE-2026-31431 — 복사 실패
Linux 内核页缓存越权写入漏洞 (AF_ALG AEAD 散列表链错误)
概述
Linux 内核 'algif_aead' 接口존재한 하나의 漏洞,允许无特权用户向任意可读文件的页缓存(page cache)写入任意数据——完全绕过文件权限检查、强制访问控制(MAC)以及完整性校验。
디스크 상的文件내용不会改变,하지만 이 후모든 读取该文件的进程(包括 SUID 程序、动态链接器、'execve()' 等)都会看到攻击者篡改后的版本,直到页缓存被回收。
影响范围
| 项目 | 说明 |
|---|---|
| 子系统 | '크립토/algif_aead.c' |
| 算法 | 'authencesn(hmac(sha256), cbc(aes))' |
| 内核配置 | 'CONFIG_CRYPTO_USER_API_AEAD=y/m'(거의 모든 주류 发行版默认启用) |
| 所需权限 | 无 — 只要对目标文件有读权限即可 |
| 危害等级 | 本地提权 → root |
| 受影响发行版 | Ubuntu, Debian, Fedora, RHEL, Arch, openSUSE 等 |
漏洞原理
简要说明
通过 'AF_ALG' 执行 AEAD 解密时:
- 用户态通过 'sendmsg()' + 'MSG_MORE' 发送关联认证数据(AAD),其中包含攻击者控制的 4 字节 'seqno_lo'.
- 通过 'splice()' 将목표文件的页缓存页面注入到内核加密子系统的发送散列表(TX SGL)中.
- 内核构建目标散列表(dst SGL)时,将接收缓冲区与页缓存页面通过 'sg_chain' 링크在一起.
- 'authencesn' 알고리즘将 'seqno_lo' 写入목표 散列表偏移 'assoclen + cryptlen' 处——该位置越过接收缓冲区,直接落入链接的页缓存页面.
- 이 写入发生在 HMAC 校验之前. HMAC 실패后内核返回 'EBADMSG' 错误,但页缓存已被篡改。
数据流图
关键点
- 'seqno_lo' 的 4 字节完全由攻击者在 AAD 中控制(写什么)
- 'splice' 의 长度결정了写入在页缓存中的偏移(写哪里)
- 两者结合 = 对任意可读文件页缓存的任意 4 字节写入原语
使用方法
快速提权
执行过程:
- 将 '/etc/passwd' 원본 내용 백업到 '/tmp/.passwd.bak'
- 在页缓存中将 'root:x:0:0:root:...' 修改为 'root::0:0:root :...'
- 자동 调用 'su root'(无需密码)
输出示例:
通用:任意页缓存写入
使用示例
约束条件
| 约束 | 说明 |
|---|---|
| 读权限 | 목표문서必须对当前用户可读('O_RDONLY') |
| 对齐 | 每次写入 4 字节;不足 4 字节的尾部用 0x90 填充 |
| 文件大小 | 文件大小必须 ≥ 偏移量 + 数据长度 + 4 字节 |
| 仅页缓存 | 磁盘上的文件内容不会被修改 |
| 持久性 | 页缓存被回收或手动清除前一直有效 |
🌐 본 텍스트는 빠른 이해를 돕기 위한 요약 번역본입니다. 정확한 기술 정보 및 전체 코드는 GitHub 원문에서 확인하실 수 있습니다.
이 정보는 AI가 자동으로 분석한 결과입니다. 정확한 내용은 원문을 확인하세요.
Sndav/CVE-2026-31431-Advanced-Exploit GitHub 원문 바로가기 →