01项目概述
Jetson平台 · 具身智能 · 机器人安全
2520
双端协同模糊测试框架 | 覆盖ARM64/文件/协议/传感器 | 结构归纳驱动
2520 是一个基于 Jetson 平台的具身智能/机器人模糊测试框架,专为嵌入式 AI 系统和机器人控制器的安全测试而设计。它采用 PC + Jetson 双端协同架构,将 PC 端的强大计算能力与 Jetson 端的硬件接口/协议深度访问能力相结合。
I
7884结构归纳
PC端运行,归纳推理驱动分析目标程序输入结构,生成高质量变异样本
F
Jetson原生Fuzz
ARM64架构上执行文件Fuzz,利用Linux信号检测崩溃SIGSEGV/SIGABRT等
M
6大独有模块
CAN总线、串口UART、摄像头、I2C传感器、Ollama、网络协议
W
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+ RAM7884引擎运行内存需求
Jetson端Jetson Nano/Orin/AGXARM64架构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.pyjetson_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退出码说明
SIGSEGV11139段错误:无效内存访问
SIGABRT6134中止:abort()调用
SIGBUS7135总线错误:硬件对齐异常
SIGFPE8136浮点异常:除零等
SIGILL4132非法指令:CPU解码异常
SIGKILL9137被杀:无法捕获/忽略
11.2API端点列表
方法路径说明
GET/返回Web控制面板(index.html)
GET/api/status7884引擎状态
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/statusJetson设备连接状态
POST/api/jetson/fuzz/start启动Jetson Fuzz
POST/api/jetson/fuzz/stop停止Jetson Fuzz
GET/api/jetson/fuzz/statusFuzz运行状态
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服务生效。