Ruby570bocadito/Breach-Entry

GitHub: Ruby570bocadito/Breach-Entry

专注于Ubuntu Server 24.04 LTS apport ExecutablePath欺骗漏洞的零日漏洞利用研究。

Stars: 0 | Forks: 0

Breach-Entry

Typing SVG

CVE-2026-XXXX Language Exploit Ubuntu Zero-Day LPE


⚠️ 免责声明 / LEGAL DISCLAIMER ⚠️

本材料仅严格用于教育和安全研究目的。
THIS MATERIAL IS STRICTLY FOR EDUCATIONAL AND SECURITY RESEARCH PURPOSES ONLY.

作者对任何滥用此代码的行为概不负责。
未经明确书面授权,请勿攻击系统。
负责任的披露遵循 Responsible Disclosure(负责任披露)原则进行协调。

The author is NOT responsible for any misuse of this code.
Do not attack systems without explicit written authorization.
Responsible disclosure was coordinated following industry best practices.


📋 目录

🔍 漏洞⚙️ 利用流程💣 PoC 用法📅 时间线🏷️ 分类💥 实际影响


Vulnerabilidad 🔍 CVE-2026-XXXX: apport ExecutablePath Spoofing

Ubuntu 24.04 LTS 中的 完整性/metadata bugapport 2.28.1

### 📌 描述 **apport** 信任崩溃进程的 `argv[1]` (`ProcCmdline`) 来覆盖报告中的 `ExecutablePath`,**而没有验证该文件是否对应于实际崩溃的进程**。 攻击向量在于 `os.access(path, os.R_OK)` —— 唯一的屏障 —— 检查的是**可读性,而不是真实性**。本地攻击者可以将 `bash` 的崩溃归咎于系统上任何可读的文件(例如 `/usr/bin/passwd` 或 `/usr/bin/su`)。 #### 🔬 漏洞代码 — `apport/report.py:626-633` ``` if os.access(cmdargs[1], os.R_OK): self["InterpreterPath"] = self["ExecutablePath"] self["ExecutablePath"] = os.path.realpath(cmdargs[1]) ``` ### 🏷️ 分类 | 类型 | ID | 严重程度 | |------|----|-----------| | **CWE** | CWE-20 (Improper Input Validation) / CWE-345 (Insufficient Verification) | 📊 | | **CVSS v3.1** | `5.5` (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L) | 中危 | | **类别** | Metadata 完整性 bug,**非**权限提升 | ⚠️ |

⚙️ 利用流程

``` flowchart TD A["💀 Attacker (user_ns)"] --> B["LD_PRELOAD=.so /usr/bin/bash /usr/bin/passwd"] subgraph Kernel[Linux Kernel 6.8.0] B -->|"SIGILL / SIGSEGV"| C[apport hook] C -->|"_check_interpreter()"| D{"cmd = bash?
→ YES : it's the interpreter"} end subgraph Apport[apport 2.28.1 - report.py] D -->|"✅ bash is the interpreter"| E["ExecutablePath = argv[1]
→ /usr/bin/passwd"] E --> F["os.access(path, os.R_OK) ✅
(any readable file passes)"] F --> G["report['ExecutablePath'] =
os.path.realpath('/usr/bin/passwd')"] G --> H["Crash report written to
/var/crash/_usr_bin_passwd.{uid}.crash"] end style A fill:#4a0000,stroke:#ff0000,color:#fff style D fill:#1a1a4a,stroke:#4466ff,color:#fff style E fill:#4a0000,stroke:#ff0000,color:#fff style F fill:#330000,stroke:#ff3333,color:#ff6666 style G fill:#4a0000,stroke:#ff0000,color:#fff style H fill:#1a1a00,stroke:#ffff00,color:#fff style Kernel fill:#1a1a2e,stroke:#6666ff,color:#ccc style Apport fill:#1a2e1a,stroke:#66ff66,color:#ccc ```

💥 PoC 用法

### 📦 前置条件 - apport 处于活动状态: `systemctl is-active apport.service` - `ulimit -c unlimited` - 作为**非特权**用户的 Shell ### 🚀 执行 ``` # Clonar git clone https://github.com/Ruby570bocadito/Breach-Entry.git cd Breach-Entry # 完整 Exploit(生成 .so、导致 crash、归因于 passwd) python3 exploit_apport.py # target: /usr/bin/passwd python3 exploit_apport.py /usr/bin/su # target personalizado ``` ### 📊 预期输出 ``` [+] Report: ExecutablePath: /usr/bin/passwd → FALSE [+] Report: InterpreterPath: /usr/bin/bash → TRUE (the real crashed process) ``` ### 📁 PoC 文件 | 文件 | 描述 | |---------|-------------| | `exploit_apport.py` | 完整的 Exploit(Python,无需 gcc 即可生成 .so) | | `.libexploit.so` | 导致崩溃的 Shared object (344B ELF64) | | `poc_apport_override.py` | 仅使用纯 Python 的基础 PoC | | `pwn_apport.c` | 备用的 C 源码(需要 gcc) | | `CVE-REQUEST-*.md` | 提交给 MITRE 的正式报告 | | `*.crash` | 已验证的崩溃报告 |

📅 披露时间线

``` gantt title CVE-2026-XXXX Disclosure Timeline dateFormat YYYY-MM-DD axisFormat %Y-%m-%d section Discovery & Research Initial discovery :done, 2026-04-15, 3d PoC development :done, 2026-04-18, 5d Full exploitation analysis :done, 2026-04-23, 4d section Vendor Notification Ubuntu Security Team notified :done, 2026-04-28, 1d CVE ID requested (MITRE) :done, 2026-04-29, 2d Vendor analysis & reproduction :done, 2026-05-01, 7d section Resolution Advisory drafted :done, 2026-05-10, 3d CVE ID assigned :done, 2026-05-15, 1d Public disclosure :active, 2026-05-20, 1d ``` | 日期 | 事件 | |-------|--------| | `2026-04-15` | 🔍 初步发现 bug | | `2026-04-23` | 💻 完成可用的 PoC | | `2026-04-28` | 📧 通知 Ubuntu Security Team | | `2026-04-29` | 🆔 向 MITRE 申请 CVE | | `2026-05-15` | ✅ 分配 CVE-2026-XXXX | | `2026-05-20` | 🌐 公开披露 |

💥 实际影响

| 向量 | 能实现什么 | 不能实现什么 | |--------|----------------|-------------------| | 崩溃报告和日志中的虚假归因 | ❌ 权限提升 (LPE) | | 将 bash 的 core dump 归因于 passwd/sudo | ❌ 远程代码执行 (RCE) | | 污染遥测数据 (Launchpad) | ❌ 在 `/var/crash/` 之外写入 | | 对 `/var/crash/` 的部分 DoS | ❌ 以 root 身份执行 hooks | **为什么它不严重:** 1. `drop_privileges(real_user)` 在解析**之前**运行 (apport 第 1077 → 1080 行) 2. `add_proc_info()` 和 `_check_interpreter()` 以**崩溃用户的身份**运行,而不是 root 3. `add_package_info()` 也以**降低的权限**运行 4. 报告的文件名使用了 `.replace("/", "_")`,防止了 path traversal 5. 对于正常进程,`report_owner` 是该用户(`dump_mode 1`)

📂 仓库结构

``` Breach-Entry/ ├── exploit_apport.py # Exploit completo (Python, auto-genera .so) ├── .libexploit.so # Shared object crash (344B ELF64) ├── poc_apport_override.py # PoC básico solo Python ├── pwn_apport.c # C source alternativo ├── CVE-REQUEST-*.md # Reporte formal MITRE ├── *.crash # Crash reports verificados ├── tools/ │ ├── exploit_harnes.c # Kernel interface battery (15 tests) │ ├── stress_race.c # 8-thread race condition stress test │ ├── uffd_race_poc.c # userfaultfd + io_uring race PoC │ ├── syz_runner.c # Weighted kernel fuzzer │ └── syzkaller/ # Built from source at /tmp/syzkaller/ └── README.md # This file ```

🧪 测试系统

| 组件 | 详情 | |-----------|--------| | **OS** | Ubuntu Server 24.04.4 LTS | | **Kernel** | 6.8.0-117-generic (构建于 Tue May 5 19:26:24 UTC 2026,自定义配置) | | **用户** | `rafa` (uid 1000),通过密码使用 sudo | | **SSH** | 暴露在 0.0.0.0:22,公网 IP 99.134.0.2,X11Forwarding yes,无防火墙 | | **硬件** | 1 vCPU,1.3GB RAM,40GB 磁盘,Hyper-V 虚拟机 |

📚 参考




Breach-Entry

🔬 Zero-Day Exploit Research — CVE-2026-XXXX
apport ExecutablePath Spoofing · Ubuntu Server 24.04 LTS

🐺 Ruby570bocadito

© 2026 · Responsible Disclosure · Educational Purpose Only

"With great power comes great responsibility."

标签:CVE, Ubuntu, Web报告查看器, 客户端加密, 数字签名, 本地提权, 漏洞利用, 零日漏洞