Devsachin2003/CAV-Security-Pipeline-Real-Time-CAN-Bus-Attack-Detection
GitHub: Devsachin2003/CAV-Security-Pipeline-Real-Time-CAN-Bus-Attack-Detection
面向自动驾驶车辆 CAN 总线的实时网络安全监控 pipeline,结合机器学习与安全规则检测异常流量并提供完整的评估与可视化能力。
Stars: 0 | Forks: 0
# CAV 安全 Pipeline
用于互联和自动驾驶车辆(Connected and Autonomous Vehicle)CAN 遥测数据的本地网络安全监控原型。该 pipeline 生成合成 CAN 数据帧,通过 Kafka 进行流式传输,利用机器学习和可解释的安全启发式方法检测异常行为,将丰富后的事件索引到 Elasticsearch 中,并支持在 Kibana 中进行分析。
## 架构
```
flowchart LR
SIM["CAN simulator\nnormal + fuzz/replay/injection/dos"] --> KAFKA["Kafka\ncan-telematics"]
KAFKA --> DET["ML detector\nIsolation Forest + rules"]
DET --> ES["Elasticsearch\ncan-security-alerts*"]
ES --> KB["Kibana"]
```
## 组件
| 路径 | 用途 |
| --- | --- |
| `simulator/can_simulator.py` | 向 Kafka 生成正常和攻击性 CAN 流量。 |
| `detection/ml_detector.py` | 消费 Kafka 数据帧,提取流式特征,应用异常检测,并将丰富后的记录进行索引。 |
| `evaluation/evaluate_detection.py` | 从 Elasticsearch 计算 TP/TN/FP/FN、精确率、召回率、F1、误报率和准确率。 |
| `docker-compose.yml` | 在本地运行 Zookeeper、Kafka、Elasticsearch 和 Kibana。 |
| `docs/` | 架构说明、运维手册、模型评估说明和 Kibana 指南。 |
## 当前检测方法
检测器结合了以下内容:
- 在稳定的正常流量预热后进行 Isolation Forest 评分。
- 针对高可信度 CAN 攻击模式的可解释确定性安全规则。
- 基于 payload 重复、仲裁 ID 转换、按 ID 的时间节奏以及物理/状态约束的流式重放启发式方法。
检测器在其当前的重放规则路径中不依赖重放 ground-truth 元数据。
## 最新全新运行结果
2026 年 6 月 15 日生成的最新优化验证报告:
```
index: can-security-alerts-optimized-20260615
overall precision: 99.99%
overall recall: 80.40%
overall F1: 89.13%
false positive rate: 0.013%
accuracy: 88.31%
```
各攻击召回率:
```
fuzz: 99.95%
replay: 35.98%
injection: 90.53%
dos: 100.00%
```
重放检测是目前面临的主要瓶颈。早期借助模拟器元数据的重放检测产生了更高的分数,但当前的结果是真实的无元数据 baseline。
生成的报告文件默认通过 `.gitignore` 排除在 Git 之外;重新运行评估器即可在 `reports/` 下重新生成本地报告。
## 快速开始
创建并激活虚拟环境:
```
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
启动基础设施:
```
docker compose up -d
```
启动检测器:
```
python detection/ml_detector.py \
--warmup-samples 1000 \
--consumer-group cav-security-detector-live \
--auto-offset-reset latest
```
生成正常流量:
```
python simulator/can_simulator.py --attack-mode normal --rate-hz 80
```
生成攻击流量:
```
python simulator/can_simulator.py --attack-mode fuzz --rate-hz 20
python simulator/can_simulator.py --attack-mode replay --rate-hz 40
python simulator/can_simulator.py --attack-mode injection --rate-hz 40
python simulator/can_simulator.py --attack-mode dos --rate-hz 10
```
评估:
```
python evaluation/evaluate_detection.py \
--index can-security-alerts \
--json-out reports/detection-evaluation.json \
--csv-out reports/detection-evaluation.csv
```
## 服务
| 服务 | URL / 端口 |
| --- | --- |
| Kafka | `localhost:9092` |
| Elasticsearch | `http://localhost:9200` |
| Kibana | `http://localhost:5601` |
## 后续工作
- 在保持误报率低于 1% 的同时,提高无元数据的重放召回率。
- 添加带有校准转换阈值的仲裁 ID n-gram 序列建模。
- 添加具有自适应季节性 baseline 的按 ID 时间配置文件。
- 将陈旧状态、payload 重复和排序证据组合为重放置信度分数。
- 为正常模式和所有攻击模式添加可自动重复的基准测试脚本。
- 添加针对特征提取、规则触发和评估指标正确性的测试。
## 卸载
停止本地服务,同时保留生成的项目文件:
```
docker compose down
```
除非您有意删除本地 Docker 卷/数据,否则请勿使用 `docker compose down -v`。
标签:CAN总线, Elasticsearch, Isolation Forest, Kafka, SonarQube插件, 开源安全, 异常检测, 自动驾驶, 请求拦截, 越狱测试, 车联网安全, 逆向工具