概述
ThreatZ TestBench Agent(ArchitTestClient v2.0.0)是一款生产级、基于Python的汽车网络安全测试客户端,直接在您的测试台架硬件上运行。它针对真实ECU和车辆网络执行安全测试活动——通过HTTP/REST(协议V2)与ThreatZ平台无缝协调。代理通过命令轮询接收活动分配,使用协议特定模糊测试器和硬件适配器执行测试,并通过完整的制品收集报告发现。
TestBench Agent 是验证与测试模块的一部分。该模块管理整体可追溯性骨干——将测试用例与TARA需求关联、跟踪覆盖率、收集证据——而TestBench Agent 是将测试带到硬件层面的执行引擎。
架构
代理遵循模块化架构,具有清晰的关注点分离:
| 模块 | 用途 |
|---|---|
| AuroraLink | 服务器通信——注册、轮询、状态更新、制品上传 |
| Campaign Runner | 活动生命周期管理(排队 → 初始化 → 运行 → 成功/失败/终止) |
| Engine Framework | 协议模糊测试器、硬件适配器、安全防护 |
| ARXML Parser | 车辆架构解析(基于canmatrix,多集群) |
| Scriptor | 从测试定义生成CAPL代码 |
| Report Manager | FuzzReport XML/JSON生成 |
| Trace Manager | BLF/ASC/PCAP追踪文件处理 |
| Pipeline Manager | 测试管道编排 |
| ODX Parser | 从ODX/PDX文件提取诊断数据 |
支持的协议(36+)
TestBench Agent 为36+种汽车通信协议配备了专用模糊测试器。每个模糊测试器使用CWE感知的变异策略,针对特定的弱点类别——而非随机字节。
车辆现场总线
| 协议 | 能力 |
|---|---|
| CAN 2.0 | 11位/29位ID,最大8字节载荷,比特率操控 |
| CAN FD | 扩展载荷(最大64字节),双比特率(标称+数据),BRS/ESI攻击,DLC边界测试 |
| CAN XL | 下一代CAN协议变体 |
| LIN | 基于调度的消息注入 |
| FlexRay | 动态时隙访问 |
诊断协议
| 协议 | 能力 |
|---|---|
| UDS (ISO 14229) | 会话管理、安全访问、DID读/写、例程控制、ECU复位 |
| ISO-TP (ISO 15765) | 多帧诊断传输协议 |
| DoIP (ISO 13400-2) | 车辆识别攻击、路由激活劫持、会话接管 |
| ODX/PDX | 诊断数据提取和服务定义解析 |
汽车以太网
| 协议 | 能力 |
|---|---|
| SOME/IP | 服务/方法发现、载荷变异、响应引导模糊测试 |
| Ethernet | MAC/IP配置、TCP/UDP变异、VLAN标签支持 |
| DDS | 数据分发服务模糊测试 |
| PTP | 精确时间协议攻击 |
其他协议
CANopen、J1939、CCP/XCP、SecOC、DLT、BLE、蜂窝网络、CHAdeMO、NFC、ISO 15118 (V2G)、GNSS、CCS、NACS、GBT、E2E保护
测试类型
模糊测试活动
- 随机、覆盖率引导、基于语法和基于变异的策略
- CWE感知的变异整形(每个协议20+ CWE)
- 语料库管理与最小化
- 响应引导的自适应模糊测试
- 活跃CWE目标轮换(10秒间隔)
渗透测试
- STRIDE分类的攻击向量(欺骗、篡改、抵赖、信息泄露、拒绝服务、权限提升)
- 使用任意ID和载荷的CAN帧注入
- 网关路由表操控
- DoIP会话劫持和认证绕过
- 诊断电源模式操控
鲁棒性测试
- 总线负载压力测试(最高90%+负载)
- 错误帧生成和洪泛检测
- 扩展载荷边界测试
- CAN/CAN-FD切换测试
UDS诊断测试
- ECU Reset (0x10)、Read DID (0x22)、Write DID (0x2E)
- Security Access (0x27)、Routine Control (0x31)
- Write Memory Address (0x3D)、I/O Control (0x2F)
- 会话管理(默认、编程、扩展)
合规与系统级测试
- 安全合规验证(ISO 26262、SOTIF)
- 协议合规验证
- 多ECU协调和复杂攻击序列
- 车辆在环集成
硬件抽象层
代理通过统一的供应商中立抽象支持多个硬件供应商——更换硬件无需更改测试配置。
| 供应商 | 支持设备 |
|---|---|
| Vector Informatik | CANoe、CANalyzer、VN系列适配器 |
| Peak Systems | PCAN-USB、PCAN-USB Pro FD |
| Kvaser | Leaf、Memorator、USBcan |
| Intrepid | neoVI、ValueCAN |
| SocketCAN | Linux原生CAN接口 |
| 仿真 | 用于离线测试的虚拟接口 |
硬件健康监控追踪连接质量、每帧延迟、帧丢失检测和性能退化评分,健康级别包括:健康、警告、临界。
5级安全升级
内置安全防护实时监控总线负载、错误帧速率和ECU心跳。当阈值被突破时,代理自动升级:
| 级别 | 动作 | 触发条件 |
|---|---|---|
| 1 — 节流 | 降低注入速率 | 接近警告阈值 |
| 2 — 暂停 | 停止发送,仅监控 | 警告阈值被突破 |
| 3 — 软复位 | 通过UDS进行ECU软复位 | 错误率持续 |
| 4 — 硬复位 | 通过台架控制器进行电源循环 | ECU无响应 |
| 5 — 中止 | 立即终止活动 | 临界安全边界被越过 |
监控能力包括总线负载监控(75%警告,90%临界终止——可配置)、错误帧检测(默认>10错误/秒)、ECU心跳监控(5秒超时)、通过GUI的手动终止开关,以及用于特殊安全需求的自定义终止表达式。所有安全事件均记录类型、严重程度、时间戳、迭代索引和详细上下文。
CWE驱动的攻击智能
每个活动针对映射到被测协议的特定Common Weakness Enumerations:
- 每个协议20+ CWE目标(例如CWE-120缓冲区溢出、CWE-1284输入指定数量的不当验证)
- 每CWE整形规则定义如何变异帧字段以针对每个弱点类别
- 攻击预设级别:Quick(快速扫描)、Standard(均衡)、Full(全面)
- 每CWE BLF追踪文件用于审计粒度——每个弱点单独追踪捕获
- 发现关联:每个发现映射回触发它的CWE
CANoe与CAPL集成
- CANoe配置加载:直接加载
.cfg文件用于仿真环境 - CAPL脚本生成:Scriptor模块将DSL测试定义转换为可执行CAPL代码
- 智能CAPL生成器:匹配ARXML信号定义的上下文感知脚本生成
- 报告解析:从CANoe测试报告中提取结果(
.vtestreport格式) - 输出发现:自动扫描CANoe输出目录进行制品收集
ARXML解析
代理使用基于canmatrix的解析器,支持多集群ARXML:
- 提取带有TX/RX帧映射的ECU列表、带有仲裁ID和DLC的帧、带有类型/最小值/最大值/缩放的信号
- 每目标ECU的NM帧检测和隔离
- 具有CAPL命名空间兼容性的数据库名称推导
- 多总线支持——处理定义多个CAN集群的ARXML文件,按帧ID去重
测试执行工作流
- 命令轮询——代理每15秒轮询ThreatZ平台获取新命令
- 活动初始化——加载ARXML、验证目标ECU、解析协议类型、加载攻击向量
- 利用——FuzzScheduler变异输入 → 协议模糊测试器针对CWE目标整形 → 硬件适配器发送
- 监控——独立监控线程分析响应、检测异常、跟踪时序
- 发现检测——将监控数据与攻击向量关联 → 生成带有严重程度和CWE映射的发现
- 制品收集——BLF追踪、日志、PCAP捕获、报告 → SHA-256完整性哈希
- 报告生成——FuzzReport(XML/JSON),包含目标转换、发现、覆盖数据、BLF引用
- 上传与完成——S3预签名URL上传并跟踪进度 → 状态更新至平台
活动状态:排队 → 初始化 → 运行 → 暂停 → 成功 / 失败 / 终止
Service Pack 执行
Service Pack 支持超越内置协议模糊测试器的自定义测试场景:
- CREATE_SCENARIO:平台发送包定义;代理创建文件夹结构和批处理/shell存根
- 配置:
config.json、tool_config.json、evidence_policy.json、safety_policy.json - RUN_SERVICE_PACK:执行场景,捕获总线流量(BLF/ASC/PCAP),收集日志
- 证据收集:基于策略的制品过滤和收集
- 上传:S3预签名URL上传,包含清单和完整性验证
制品收集
每个活动产生一个完整的证据包:
| 制品类型 | 格式 | 用途 |
|---|---|---|
| 总线追踪 | BLF(二进制日志格式) | Vector标准CAN追踪记录 |
| 文本追踪 | ASC(纯文本) | 人类可读CAN追踪 |
| 网络捕获 | PCAP | 以太网/DoIP/SOME-IP流量 |
| 执行日志 | 纯文本 | 代理运行时日志、错误、警告 |
| 测试报告 | FuzzReport XML/JSON | 结构化活动结果与发现 |
| CANoe报告 | .vtestreport | CANoe测试执行结果 |
| 生成脚本 | CAPL | 生成的测试自动化脚本 |
| 清单 | JSON | 每制品的SHA-256完整性校验和 |
所有制品通过S3预签名URL上传,支持超过5 MB文件的分片上传。服务端验证确认SHA-256完整性。
GUI与无界面运行
GUI(基于Flet)
- 实时活动监控仪表板
- CWE目标轮换器,10秒循环
- 模糊测试范围选项卡,用于目标帧/信号选择
- 监控选项卡,用于模式、窗口和容差配置
- 硬件健康和连接状态指示器
- 项目管理器,支持多项目切换
- 暗色/亮色主题自动检测
无界面模式
- 无GUI完整活动执行
- 适合CI/CD集成和自动化回归测试
- 通过
.env和project_config.json配置 - 所有结果以编程方式报告给平台
与ThreatZ平台的通信
代理使用HTTP/REST(协议V2)——无WebSocket依赖:
| 端点 | 方法 | 用途 |
|---|---|---|
/api/v2/agent/register | POST | 基于机器标识符的代理注册 |
/api/v2/agent/health | POST | 心跳(30秒间隔),包含状态和能力 |
/api/v2/agent/commands/poll | GET | 拉取式命令传递(15秒轮询) |
/api/v2/agent/status | POST | 活动进度、测试结果、发现报告 |
使用JWT令牌和基于机器的标识符进行认证。通过租户ID跟踪支持多租户。制品上传使用S3预签名URL,具备SHA-256完整性验证和超过5 MB文件的分片上传。
与其他支柱的集成
| 方向 | 功能 | 机制 |
|---|---|---|
| 入站 | 活动分配 | HTTP命令轮询(15秒间隔) |
| 入站 | 协议包和攻击向量 | 随活动配置下载 |
| 入站 | ARXML和项目配置 | 包含在活动载荷中 |
| 出站 | 活动进度 | HTTP状态更新 |
| 出站 | 测试发现 | 带CWE关联的结构化发现报告 |
| 出站 | 制品 | S3预签名URL上传,SHA-256验证 |
| 出站 | 健康状态 | 每30秒心跳,包含能力 |
| 出站 | 安全事件 | 记录并随活动结果上传 |