malvector/CVE-2025-70341
GitHub: malvector/CVE-2025-70341
针对App-Auto-Patch中TOCTOU竞争条件漏洞的本地提权PoC,展示如何利用不安全目录权限在macOS上实现root权限任意代码执行。
Stars: 0 | Forks: 0
# CVE-2025-70341:App-Auto-Patch 中的不安全权限与任意代码执行漏洞
## 概述
App-Auto-Patch v3.4.2 使用全局可写权限(`chmod 777`)创建其工作目录,从而导致本地 TOCTOu(Time-of-Check-Time-of-Use,检查时间到使用时间)竞争条件。非特权本地攻击者可以利用此漏洞在安装前将已验证的软件包替换为恶意软件包,从而以 root 权限实现任意代码执行。此外,恶意的 Installomator label 片段可以在 label 解析期间通过对未经处理的输入执行 `eval` 操作来实现任意代码执行。
## 受影响版本
- **易受攻击:** App-Auto-Patch <= 3.4.2
- **已修复:** App-Auto-Patch 3.5.0
## CVSS 3.1
**分数:7.8(高危)**
`CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H`
| 指标 | 值 |
|--------|-------|
| 攻击矢量 | 本地 |
| 攻击复杂度 | 低 |
| 所需权限 | 低 |
| 用户交互 | 无 |
| 范围 | 不变 |
| 机密性 | 高 |
| 完整性 | 高 |
| 可用性 | 高 |
## 漏洞详情
### 问题 1:全局可写目录(CWE-732)
**文件:** `App-Auto-Patch-via-Dialog.zsh`,第 2525 行
在安装过程中,`appAutoPatchFolder` 是通过 `chmod 777` 创建的。这允许任何本地用户写入、修改或删除该目录中的文件。
### 问题 2:通过 eval 实现任意代码执行(CWE-94)
**文件:** `App-Auto-Patch-via-Dialog.zsh`,第 4744 行
Installomator label 片段在解析时使用了 `eval` 且未经任何无害化处理。结合全局可写目录,攻击者可以注入恶意的 label 片段,从而以 root 权限执行任意命令。
### 攻击链
```
1. App-Auto-Patch creates appAutoPatchFolder with chmod 777
2. Installomator downloads PKG to world-writable tmpDir, verifies signature
3. ~140 lines of bash execute between verification and installation (RACE WINDOW)
4. Attacker swaps verified PKG with malicious PKG
5. installer -pkg runs attacker's PKG as root
```
## 概念验证
### 前置条件
- 安装了 App-Auto-Patch <= 3.4.2 的 macOS 系统(或任何使用 `chmod 777` tmpDir 的 Installomator 版本)
- 非特权本地用户账户
- Xcode 命令行工具(用于 `pkgbuild`)
### 使用方法
**终端 1**(以非特权用户身份):
```
python3 poc.py
```
**终端 2**(以 root 身份,模拟 MDM/管理员触发):
```
sudo ./simulate-vulnerable-env.sh
```
该 PoC 监控 `/var/tmp` 中使用 `chmod 777` 创建的 Installomator 目录,然后通过竞争条件将合法的 PKG 替换为包含以 root 权限执行的 postinstall 脚本的恶意 PKG。
详情请参阅 `poc.py` 和 `simulate-vulnerable-env.sh`。
## 修复方案
- **升级** 至 App-Auto-Patch 3.5.0 或更高版本
- 修复方案将目录权限从 `chmod 777` 更改为 `chmod 755`,从而阻断了攻击链
## 时间线
| 日期 | 事件 |
|------|-------|
| 2025-12-22 | 发现漏洞 |
| 2025-12-22 | 创建 PoC |
| 2025-12-22 | 提交 PR [#202](https://github.com/App-Auto-Patch/App-Auto-Patch/pull/202) |
| 2025-12-22 | 提交 Issue [#203](https://github.com/App-Auto-Patch/App-Auto-Patch/issues/203) |
| 2025-12-23 | 在 App-Auto-Patch 3.5.0 中修复 |
| 2026-02-20 | 分配 CVE-2025-70341 |
## 贡献者
- **cooldadhacking** ([GitHub](https://github.com/cooldadhacking))
## 参考
- [App-Auto-Patch PR #202](https://github.com/App-Auto-Patch/App-Auto-Patch/pull/202)
- [App-Auto-Patch Issue #203](https://github.com/App-Auto-Patch/App-Auto-Patch/issues/203)
- [App-Auto-Patch-via-Dialog.zsh](https://github.com/App-Auto-Patch/App-Auto-Patch/blob/main/App-Auto-Patch-via-Dialog.zsh)
## 免责声明
本概念验证仅用于教育和授权安全测试目的。请负责任地使用,并仅限于您拥有或明确获得测试许可的系统。
标签:App-Auto-Patch, Cutter, CVE-2025-70341, CVSS 7.8, CWE-732, CWE-94, DNS 反向解析, DNS 解析, Eval注入, Installomator, macOS漏洞, TOCTOU, Web报告查看器, Zsh, 不安全权限, 世界可写, 任意代码执行, 本地权限提升, 特权升级, 竞态条件, 符号链接攻击, 逆向工具