01项目概述
Jetson平台 · 具身智能 · 机器人安全
2520
双端协同模糊测试框架 | 覆盖ARM64/文件/协议/传感器 | 结构归纳驱动
2520 是一个基于 Jetson 平台的具身智能/机器人模糊测试框架,专为嵌入式 AI 系统和机器人控制器的安全测试而设计。它采用 PC + Jetson 双端协同架构,将 PC 端的强大计算能力与 Jetson 端的硬件接口/协议深度访问能力相结合。
7884结构归纳
PC端运行,归纳推理驱动分析目标程序输入结构,生成高质量变异样本
Jetson原生Fuzz
ARM64架构上执行文件Fuzz,利用Linux信号检测崩溃SIGSEGV/SIGABRT等
6大独有模块
CAN总线、串口UART、摄像头、I2C传感器、Ollama、网络协议
Web控制面板
浏览器统一管理PC和Jetson,HTTP+SSH远程控制
核心能力: 7884结构归纳引擎(PC) + Jetson原生Fuzz(ARM64) + 6个Jetson独有Fuzz模拟模块
适用场景:
- 具身智能安全验证:测试机器人操作系统和控制器的模糊测试流水线
- 机器人安全测试框架:验证CAN总线、串口、I2C等硬件通信协议Fuzz方案的有效性
- 嵌入式系统Fuzz验证:在ARM64架构上验证Fuzz管道是否正常工作
- 硬件接口Fuzz方案:为CAN、串口、传感器等嵌入式接口提供可复现的Fuzz测试方法
重要说明2520的6个Jetson独有Fuzz模块目前使用模拟目标程序进行演示验证。模块内置了故意编写的"脆弱"目标(如CAN ECU模拟器会在特定条件下崩溃),用于验证Fuzz管道是否完整工作——从样本变异、目标执行、崩溃检测到报告生成的完整闭环。发现真实漏洞需要将这些模块对接真实的目标系统或固件。
02系统架构
2520采用PC + Jetson双端协同架构,PC端负责计算密集型任务和集中调度,Jetson端负责硬件接口级模糊测试执行。
组件说明
- PC端: Run_2520.py (主控服务, 端口7885) + 7884_brain.exe (结构归纳引擎)
- Jetson端: jetson_agent.py (轻量代理, 端口7886) + jetson_fuzz_modules.py (6个模块)
- 前端: index.html (Web控制面板, 同目录)
- 通信方式: HTTP REST API + SCP文件传输
架构图
┌─────────────┐ HTTP ┌──────────────────────┐
│ 浏览器 │ ←─────────→ │ PC:7885 (Run_2520.py) │
│ index.html │ │ ├── 7884_brain.exe │
└─────────────┘ │ └── 代理 → Jetson:7886 │
└──────────┬───────────┘
│ HTTP/SCP
▼
┌──────────────────────┐
│ Jetson:7886 │
│ (jetson_agent.py) │
│ ├── CAN Fuzz │
│ ├── 串口Fuzz │
│ ├── 摄像头Fuzz │
│ ├── I2C Fuzz │
│ ├── Ollama Fuzz │
│ └── 网络Fuzz │
└──────────────────────┘
───────────────────────────────────────────────────────────
PC端 (x86_64/Windows) Jetson端 (ARM64/Linux)
通信机制PC端Run_2520.py启动HTTP服务监听端口7885,同时作为Web服务器、7884引擎调度器和Jetson代理。前端通过AJAX与PC服务通信,PC服务将Jetson相关的请求透明代理到Jetson设备上的jetson_agent.py(端口7886)。样本文件通过HTTP multipart上传方式从PC推送到Jetson。
03安装部署
3.1环境要求
| 组件 | 要求 | 说明 |
|---|---|---|
| PC端 | Windows 10/11 | 运行7884引擎和主控服务 |
| PC端 | Python 3.8+ | 运行Run_2520.py |
| PC端 | 4GB+ RAM | 7884引擎运行内存需求 |
| Jetson端 | Jetson Nano/Orin/AGX | ARM64架构Linux |
| Jetson端 | Python 3.8+ | 运行jetson_agent.py |
| 网络 | 同一局域网 | PC与Jetson之间HTTP可达 |
3.2快速部署(推荐)
使用项目自带的安装向导或启动脚本,按提示操作即可完成部署。
# 方式1: 安装向导 python setup_wizard.py # 方式2: 双击快捷启动脚本 → 选择[1] 部署 2520_launcher.bat
提示setup_wizard.py 会自动检查PC端Python环境、7884引擎可执行文件、Jetson SSH连接,并引导完成Jetson Agent部署。
3.3手动部署
PC端手动启动流程:
# PC端启动主控服务 cd B:\7884\jetson\2520Fuzz python Run_2520.py # 服务启动后自动打开浏览器 # 或手动访问 http://127.0.0.1:7885/
启动后终端显示信息:
======================================================= 2520 PC端主控服务 运行地址: http://0.0.0.0:7885/ 7884引擎: ../7884_brain.exe (存在: True) Jetson设备: 192.168.1.108:7886 ======================================================= 按 Ctrl+C 停止服务...
04Jetson Agent部署
方式一:自动部署(推荐)
在PC端运行 setup_wizard.py,输入Jetson设备的SSH信息即可自动完成部署。该脚本会:
- 通过SSH连接到Jetson设备
- 检查Jetson端Python版本和环境
- 将 jetson_agent.py 和 jetson_fuzz_modules.py 推送至Jetson
- 安装必要的依赖(通过 install_jetson_deps.sh)
- 启动Jetson Agent服务并验证连通性
方式二:手动部署
# 1. SSH登录Jetson ssh nvidia@192.168.1.108 # 2. 创建目录 mkdir -p /home/nvidia/2520Fuzz # 3. 从PC复制文件(在PC端执行) scp jetson/agent/jetson_agent.py nvidia@192.168.1.108:/home/nvidia/2520Fuzz/ scp jetson/agent/jetson_fuzz_modules.py nvidia@192.168.1.108:/home/nvidia/2520Fuzz/ scp jetson/agent/install_jetson_deps.sh nvidia@192.168.1.108:/home/nvidia/2520Fuzz/ # 4. 在Jetson上安装依赖并启动 ssh nvidia@192.168.1.108 cd /home/nvidia/2520Fuzz chmod +x install_jetson_deps.sh ./install_jetson_deps.sh python3 jetson_agent.py
验证Agent运行
在PC端通过浏览器访问控制面板,查看右上角"Jetson连接"指示灯状态。或直接使用HTTP请求验证:
curl http://192.168.1.108:7886/api/status
预期返回:
{
"status": "ok",
"platform": "linux",
"arch": "aarch64",
"fuzz_modules_available": true,
"uptime": 123
}注意Jetson Agent默认监听0.0.0.0:7886,请确保防火墙允许该端口通信,并仅在受信任的网络中使用。
05功能模块
5.1结构归纳 (Tab 1)
调用PC端 7884_brain.exe 分析目标样本,通过归纳推理提取输入结构特征。支持多种运行模式和参数配置。
参数说明
- 确认Python版本: python3 --version (需3.8+)
- 检查端口7886是否被占用: sudo lsof -i :7886
- 查看Jetson Agent日志输出,确认是否有ImportError
- 运行 install_jetson_deps.sh 安装依赖
- 确认 jetson_fuzz_modules.py 与Agent在同一目录
模块加载失败
- 部分模块可能需要特定硬件支持(如CAN模块需要vcan内核模块)
- 检查Jetson Agent启动日志中的模块加载状态
- 确认所有依赖已安装(参考install_jetson_deps.sh)
- 运行 python3 jetson_fuzz_modules.py --test 测试模块可用性
CAN模块vcan问题
- 确认vcan内核模块已加载: lsmod | grep can
- 手动加载vcan: sudo modprobe can && sudo modprobe vcan
- 确认vcan0接口存在: ip link show vcan0
- 设置vcan0: sudo ip link add dev vcan0 type vcan && sudo ip link set up vcan0
摄像头设备忙
- 检查摄像头设备占用: sudo fuser /dev/video0
- 使用合成模式(synthetic)代替真实摄像头设备
- 释放占用: sudo fuser -k /dev/video0
- 重启Jetson Agent后重试
10安全注意事项
重要2520是一个安全测试工具,请务必在合法授权的环境中使用。未经授权对系统进行模糊测试可能违反法律法规。
- 授权使用:仅在拥有明确授权的环境中使用本工具进行安全测试
- CAN Fuzz说明:CAN总线Fuzz模块默认使用vcan0(虚拟CAN接口),不会影响真实CAN总线上的设备。如需测试真实CAN总线,请确保已获得授权
- 模拟漏洞:模块中内置的模拟目标程序运行在隔离环境中,触发的"崩溃"不会对实际系统造成破坏
- 本地端口:Jetson端Agent默认监听本地端口7886,仅在受信任的网络中暴露该端口
- 数据安全:测试产生的样本和崩溃记录存储在本地,不会被自动上传或共享
- 资源占用:模糊测试可能消耗大量CPU/内存资源,建议在测试环境中运行,避免影响生产系统
免责声明2520旨在帮助安全研究人员发现和修复漏洞。因使用本工具导致的任何直接或间接损失,开发者不承担任何责任。
11技术参考
11.1信号映射表
Linux信号 → 退出码映射关系:
| 信号名 | 信号编号 | Shell退出码 | 说明 |
|---|---|---|---|
| SIGSEGV | 11 | 139 | 段错误:无效内存访问 |
| SIGABRT | 6 | 134 | 中止:abort()调用 |
| SIGBUS | 7 | 135 | 总线错误:硬件对齐异常 |
| SIGFPE | 8 | 136 | 浮点异常:除零等 |
| SIGILL | 4 | 132 | 非法指令:CPU解码异常 |
| SIGKILL | 9 | 137 | 被杀:无法捕获/忽略 |
11.2API端点列表
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | / | 返回Web控制面板(index.html) |
| GET | /api/status | 7884引擎状态 |
| GET | /api/queue | 任务队列列表 |
| GET | /api/records | 分析记录列表 |
| POST | /api/run | 提交结构归纳任务 |
| POST | /api/gen | 提交样本生成任务 |
| POST | /api/queue/cancel | 取消排队任务 |
| GET | /api/config | 获取当前配置 |
| POST | /api/config | 更新配置 |
| GET | /api/jetson/status | Jetson设备连接状态 |
| POST | /api/jetson/fuzz/start | 启动Jetson Fuzz |
| POST | /api/jetson/fuzz/stop | 停止Jetson Fuzz |
| GET | /api/jetson/fuzz/status | Fuzz运行状态 |
| GET | /api/jetson/crashes | 崩溃记录列表 |
| DELETE | /api/jetson/crashes/{id} | 删除崩溃记录 |
| POST | /api/push-samples | 推送样本到Jetson |
| GET/POST/DELETE | /api/module/{module}/{action} | Fuzz模块控制 |
11.3配置文件说明
配置文件 config.json 位于项目根目录,管理PC服务端和Jetson连接配置:
{
"pc_port": 7885, // PC端HTTP服务端口
"brain_exe": "../7884_brain.exe", // 7884引擎相对路径
"jetson_host": "192.168.1.108", // Jetson设备IP地址
"jetson_port": 7886, // Jetson Agent端口
"jetson_user": "nvidia", // Jetson SSH用户名
"fuzz_timeout": 30, // Fuzz单样本超时(秒)
"workspace": "./fuzz_workspace", // PC端工作目录
"crash_dir": "./crash_records" // 崩溃记录存储目录
}配置文件通过PC端控制面板的"设置"标签页进行修改,或直接编辑JSON文件。修改后需重启PC服务生效。
12开源与法律声明
开源许可
2520 遵循开源许可证发布,任何个人或组织均可免费使用、复制、修改和分发本软件。
用户可以根据自身业务需求,在本软件基础上继续进行完善和二次开发。
使用限制与免责
2520 项目团队资源与能力有限,已尽力验证本软件在产品功能层面的可用性(包括PC端服务运行、Jetson Agent部署、
Fuzz模块执行、崩溃检测、漏洞报告生成等完整管道)。但项目团队没有精力、更没有需求或义务
去针对特定领域或系统开展实际的漏洞挖掘案例研究。用户如需在真实环境中使用2520进行安全测试,
应自行研究并评估目标系统的安全性,并对测试行为承担全部责任。
第三方组件声明
2520 包含对 7884 结构归纳引擎的调用支持。7884 结构归纳引擎是非开源的专有软件组件,
也是本产品的核心支撑模块之一。如需获取7884引擎的最新版本和技术支持,请随时关注我们的官方网站和发布渠道,
我们将持续对7884核心模块进行更新和优化。
法律合规
请确保在合法授权的环境中使用本软件。未经授权对系统、网络或设备进行安全测试可能违反
《中华人民共和国网络安全法》及相关法律法规。用户应对自身使用行为承担全部法律责任。