GainSec/3rdParty-Carplay-AndroidAuto-Dongle-Security-Research
GitHub: GainSec/3rdParty-Carplay-AndroidAuto-Dongle-Security-Research
Mayton AutoPro2 无线 CarPlay 适配器的授权安全研究公开发布包,包含漏洞发现、攻击面分析、逆向工程证据及配套工具。
Stars: 0 | Forks: 0
# AutoPro / Mayton AutoPro2 研究发布
针对 Mayton AutoPro2 / ly2601 无线 CarPlay 适配器系列授权安全研究的公开发布包。本仓库保留了有用的文档、发现、证据摘要和工具,同时排除了原始固件镜像、提取的文件系统、payload 包、本地代理说明以及个人/API 密钥。
## 目标
| 字段 | 值 |
|---|---|
| 研究目标 | Mayton AutoPro2 无线 CarPlay 适配器 / ly2601 CarPlay 适配器 |
| 公开产品链接 | |
| 相关产品线 | |
| 品牌 | Mayton |
| 固件供应商字符串 | Lylink / Liaoyuan |
| 主要研究固件 | `24010615.2601.1` |
| 同时分析的早期镜像 | `23121917.2601.1` |
| SoC | Allwinner V831, ARM Cortex-A7 |
| 内核 | Linux 4.9.118 |
| 主要设备名称 / SSID | `MAYTON_Pro2-3C48` |
| 热点上的设备 IP | `192.168.1.101` |
| 测试设备的 Bluetooth MAC | `14:85:54:03:1F:B7` |
| 正常 USB VID:PID | `05ac:12a8` |
| CDC/A2A 模式 VID:PID | `0525:a4a7` |
| FEL boot ROM VID:PID | `1f3a:efe8` |
该适配器作为车载主机与手机之间的无线桥接器。它开放了 Wi-Fi AP 服务、Bluetooth RFCOMM 服务、USB gadget 模式、Web/CGI 更新接口以及专有的 Lylink/CarPlay 控制路径。
## 仓库地图
| 路径 | 包含内容 |
|---|---|
| `docs/` | 概述文档、部署说明、协议说明和测试计划。 |
| `notes/NOTES/` | 有组织的工作研究笔记。 |
| `findings/` | 发现、线索、基于证据的发现说明以及脱敏复现占位符。 |
| `reports/disclosure/` | 供应商安全通告、CVE 提交草案、披露包材料及状态说明。 |
| `evidence/` | 精选的日志、扫描结果、逆向工程笔记、非机密配置和证据清单。 |
| `tools/` | 源码树、脚本、Web UI 和工具 README。 |
| `packages/autopro-offline/` | 排除了二进制/shim blob 的离线部署包骨架。 |
## 漏洞摘要
| ID | 标题 | 严重程度 / CVSS | CWE | 简短描述 |
|---|---|---:|---|---|
| VULN-001 | Bluetooth RFCOMM 持久 DoS | 6.5 | CWE-404 | 畸形或中断的 RFCOMM 处理可导致 Bluetooth 服务拒绝连接,直到进行物理断电重启。 |
| VULN-002 | 未认证的 Bluetooth 服务 | 7.4 | CWE-306 | 用于无线 iAP、Android Auto 和 HFP 的 RFCOMM 通道在测试中无需配对即可接受连接。 |
| VULN-003 | 未认证的未签名固件更新 | 8.8-9.8 | CWE-494 | HTTP CGI 更新流程在没有身份验证或加密签名验证的情况下接受了更新材料。 |
| VULN-004 | FEL 模式全芯片访问 | 6.8 | CWE-1191 | 复位触发的 Allwinner FEL 模式允许在物理访问的情况下进行 SPI flash 读写和启用 JTAG。 |
| VULN-005 | 硬编码的默认凭据 | 7.5 | CWE-798 | 固件在所测试的型号系列中使用了共享的 root 和 Wi-Fi 凭据。 |
| VULN-006 | 弱密码哈希 | 5.3 | CWE-328 | Root 凭据使用旧版 DES crypt 存储。 |
| VULN-007 | Airborne 之前的 CarPlay SDK 暴露 | 8.8 | CWE-416 / CWE-119 | `libcarplay.so` 和 `rcpservice` 早于 2025 年的 AirBorne 补丁;`rcpservice` 缺少 stack canary。 |
| VULN-008 | 云凭据暴露 | 7.5 | CWE-798 | CGI 二进制文件包含硬编码的 Aliyun STS 相关材料。 |
| VULN-009 | 弱熵行为 | 5.9 | CWE-331 | 启动脚本将 `/dev/random` 替换为指向 `/dev/urandom` 的 symlink。 |
发现详情位于:
- `findings/findingslist.md`
- `findings/leads.md`
- `reports/disclosure/DISCLOSURE-PROPER/vendor-security-advisory.md`
- `reports/disclosure/DISCLOSURE-PROPER/cve-submissions.md`
- `notes/NOTES/attack-surface.md`
- `notes/NOTES/rfcomm-crash-finding.md`
- `notes/NOTES/recv-overflow-analysis.md`
负面结果也包括在内:
- HFP AT 命令 fuzzing:测试了 344 个 payload,未发现崩溃。
- `btapp recv()` 溢出假设:已排除;调用者分配了 0xffff 缓冲区。
- CGI 命令注入:对于已审查的 `system()` 调用已排除;这些调用使用了硬编码字符串。
- `lylinkapp` 端口 8299:仍未完全逆向;现有笔记中未确认崩溃。
## 攻击面
| 表面 | 详情 |
|---|---|
| Wi-Fi AP | `192.168.1.101` 处的设备热点,WPA2-PSK,最大客户端数 8,通常在 5 GHz 信道 36 上观察到。 |
| HTTP/CGI | 端口 80 上的 BusyBox HTTP 服务器,包含 CGI 更新和诊断 endpoint。 |
| Lylink 控制 | 端口 8299 上的专有 TCP 服务,由控制工具使用。 |
| CarPlay/iAP | `rcpservice`, `libcarplay.so`, iAP/iAP2 库,以及多个与 CarPlay 相关的端口。 |
| Bluetooth | `btapp`, BlueZ 5.63 分支,测试中暴露了 RFCOMM 通道 1、2 和 7。 |
| USB 正常模式 | 类似 Apple 的 USB gadget 模式,`05ac:12a8`。 |
| USB CDC/A2A 模式 | 启动后复位模式,`0525:a4a7`,串口/广播设备信息路径。 |
| FEL boot ROM | 插入 USB 时复位模式,`1f3a:efe8`,Allwinner 底层访问。 |
| 文件系统 | SquashFS root/customer 分区,JFFS2 logo 和 UDISK 可写区域,`/tmp` tmpfs。 |
## 工具套件
| 工具 | 路径 | 用途 |
|---|---|---|
| `cpctl` | `tools/cpctl/` | CarPlay Web 控制服务,将 Lylink 数据包发送到 `lylinkapp:8299`。 |
| `cpcp` | `tools/cpcp/` | 基于 `libcarplay.so` 和 Civetweb 的直接 CarPlay 库原型。 |
| `carplay-shim` | `tools/carplay-shim/` | 用于 `libcarplay.so` 逆向工程的运行时追踪 shim。 |
| `carplay-sink` | `tools/carplay-sink/` | 用于 Kali/Linux 主机测试的 USB CarPlay sink 原型。 |
| `cpcp-further-RE` | `tools/cpcp-further-RE/` | 专注于 `CreateCarPlay()` 和 config-struct 研究的笔记。 |
| scripts | `tools/scripts/` | Bluetooth/RFCOMM fuzzer、抓取辅助工具、崩溃监控器、探测工具和打包辅助工具。 |
## 证据和报告
| 路径 | 用途 |
|---|---|
| `evidence/logs/` | Bluetooth fuzzing、RFCOMM、btmon 和运行时日志。 |
| `evidence/scans/` | SDP、GATT 和 LAN 扫描输出。 |
| `evidence/re/` | `libcarplay`, `lylinkapp` 和攻击面的静态逆向工程笔记。 |
| `evidence/configs/` | 从固件中提取的运行时/配置文件。 |
| `evidence/manifests/` | 证据包清单和基于证据的发现/线索。 |
| `reports/disclosure/` | 面向供应商的安全通告和 CVE 提交草案。 |
## 排除项
公开代码树有意排除了:
- 原始固件镜像和 SPI flash 转储。
- 提取的根文件系统和备份树。
- Payload 目录和 SWUpdate payload 包。
- 共享库 blob 和未经批准的二进制 blob。
- 预构建的工具二进制文件。
- 本地代理说明和个人/API 凭据。
- 内部发布清单和本地制品索引。
保留的固件哈希(用于溯源):
| 制品 | SHA256 |
|---|---|
| `Possible-FIrmware/test.img` | `ef293795ce2df597267cdcbf7e8ca41e925c56ed11288e5fa476848d2753bb8c` |
| `Possible-FIrmware/update.img` | `e3c2004dd6a8c267f00a5df06bb7d793a0af75a9295b000150c22826284c009a` |
| `firmware-dump/spinor-full.bin` | `5f36838550eb280ecff3f47c805026f2ef5b8b96f5b940437cdcb78c53faa72c` |
## 快速检查
在项目根目录下执行,以下操作不应列出原始固件 blob 或 payload 目录:
```
find Release -type f \( -name '*.img' -o -name '*.rom' -o -name '*.iso' -o -name '*.qcow2' -o -name '*.vmdk' -o -name '*.so' \) -print
find Release -type d \( -path '*/payload' -o -path '*/payloads' -o -path '*/test_rootfs' -o -path '*/update_rootfs' -o -path '*/test_extracted' -o -path '*/update_extracted' -o -path '*/dongle-binaries' \) -print
```
## 研究边界
此软件包用于授权的安全研究、供应商披露、可重复性验证和防御性审查。概念验证 payload 和原始漏洞利用制品不包含在公开发布代码树中。
标签:Cutter, IoT安全, 主机安全, 云资产清单, 实时处理, 客户端加密, 密码管理, 嵌入式系统, 漏洞披露, 车联网安全, 逆向工具, 逆向工程, 配置审计