dhruvvvv2019-pixel/Cache-side-channel-attack-detection-mitigation-framework
GitHub: dhruvvvv2019-pixel/Cache-side-channel-attack-detection-mitigation-framework
一个基于 Linux PMU 性能计数器和统计异常检测的 Flush+Reload 缓存侧信道攻击检测与自动缓解框架。
Stars: 0 | Forks: 0
# 缓存侧信道攻击检测与缓解
这是一个基于 Linux 的网络安全框架,用于模拟 **Flush+Reload 缓存侧信道攻击**,利用**硬件性能监视单元 (PMU) 计数器**检测异常缓存行为,并通过 **CPU 亲和性隔离**和**进程调度控制**自动应用缓解策略。
该项目演示了如何在操作系统层面观察低级硬件攻击,以及如何利用性能监视数据实时检测和响应可疑的缓存活动。
## 概述
缓存侧信道攻击利用共享的 CPU 缓存行为,从受害进程中推断敏感信息。在这些攻击中,**Flush+Reload** 因其高精度和有效性而成为研究最广泛的技术之一。
在本项目中,我:
* 实现了逼真的 Flush+Reload 攻击
* 模拟了受害者和攻击者进程
* 使用 Linux PMU 计数器监控缓存行为
* 开发了统计异常检测引擎
* 在检测到异常时自动触发缓解策略
* 收集实验数据并生成可视化图表
* 评估检测和缓解机制的有效性
该框架是对操作系统、计算机体系结构、性能监视和网络安全概念的实践探索。
## 核心功能
### 攻击模拟
* Flush+Reload 侧信道攻击实现
* 持续生成攻击以进行逼真的测试
* 依赖于秘密值的受害者内存访问模式
### 检测引擎
* 使用 Linux `perf` 进行基于 PMU 的缓存监控
* 收集缓存引用和缓存未命中数据
* 基于自适应阈值的异常检测
* 统计基线校准
### 缓解机制
* 使用 `taskset` 进行 CPU 亲和性隔离
* 使用 `chrt` 降低调度优先级
* 使用 `renice` 控制进程优先级
* 检测到攻击时自动响应
### 评估与可视化
* 实验性能数据收集
* 自动化结果分析
* 图表生成与可视化支持
## 系统架构
该框架由四个主要组件组成:
### 1. 受害者进程
受害者不断访问与秘密值相关的内存,产生的缓存活动可能会将信息泄露给攻击者。
### 2. Flush+Reload 攻击模块
攻击者重复执行以下操作:
1. 刷新选定的缓存行
2. 等待受害者执行
3. 重新加载内存位置
4. 测量内存访问延迟
低访问延迟表明受害者最近访问了相应的缓存行。
### 3. 检测引擎
监控系统通过 Linux 性能计数器持续收集与缓存相关的 PMU 统计数据。
监控的指标包括:
* Cache Misses
* Cache References
* Cache Miss Rate
### 4. 缓解层
当检测到异常缓存活动时,框架会自动采取防御措施,例如:
* CPU 核心隔离
* 调度降级
* 降低进程优先级
## 检测方法论
在主动监控开始之前,框架会执行校准阶段以建立正常的系统行为基线。
自适应阈值使用以下公式计算:
```
Threshold = μ + 2σ
```
其中:
* **μ** = 缓存指标的平均值
* **σ** = 标准差
当观察到的进程缓存行为超过计算出的阈值并显著偏离基线特征时,该进程将被归类为可疑。
这种方法能够实现轻量级的异常检测,而无需依赖机器学习模型。
## 使用的技术
### 编程语言
* C
* Python
### Linux 实用工具
* `perf`
* `taskset`
* `chrt`
* `renice`
### Python 库
* NumPy
* Matplotlib
## 项目结构
```
.
├── victim.c
├── flush_attack_demo.c
├── flush_reload_attack.c
├── benign.c
│
├── detection_and_mitigation.py
├── measure_results.py
├── plot_all.py
│
├── data/
└── graphs/
```
## 安装说明
### 推荐环境
* Ubuntu 22.04 或更新版本
* 物理机安装的 Linux 系统
### 支持
### 不推荐
* WSL2
某些 PMU 事件可能无法在 WSL2 下正确暴露,这会对检测准确性产生负面影响。
### 安装依赖项
更新软件包:
```
sudo apt update
sudo apt upgrade -y
```
安装构建工具:
```
sudo apt install -y build-essential gcc g++ make
```
安装 Python:
```
sudo apt install -y python3 python3-pip
```
安装所需的 Python 库:
```
pip3 install numpy matplotlib
```
安装 Linux 性能工具:
```
sudo apt install -y linux-tools-common linux-tools-generic
```
验证安装:
```
perf --version
```
## 构建项目
编译受害者进程:
```
gcc -O0 -o victim victim.c
```
编译攻击演示程序:
```
gcc -O0 -o flush_attack_demo flush_attack_demo.c -lm
```
编译连续攻击程序:
```
gcc -O0 -o flush_reload_attack flush_reload_attack.c -lm
```
编译良性工作负载:
```
gcc -O2 -o benign benign.c -lm
```
## 运行 Flush+Reload 演示
启动受害者进程:
```
./victim
```
打开第二个终端并执行:
```
./flush_attack_demo
```
攻击者试图通过观察缓存访问时序模式来推断受害者的秘密值。
## 运行检测与缓解
### 终端 1
```
./victim
```
### 终端 2
```
python3 detection_and_mitigation.py
```
选择缓解策略:
```
1 → CPU Affinity Strategy
2 → Scheduling Strategy
```
等待校准阶段完成。
### 终端 3
```
./flush_reload_attack
```
检测器持续监控缓存行为,并在识别到可疑活动时自动应用缓解措施。
## 运行良性工作负载
将正常的应用程序行为与攻击行为进行对比:
```
./benign
```
这提供了用于评估目的的基线性能测量数据。
## 实验评估
收集性能数据:
```
python3 measure_results.py
```
结果存储在:
```
data/experiment_results.json
```
生成可视化图表:
```
python3 plot_all.py
```
生成的图表保存在:
```
graphs/
```
## 未来改进
未来工作的潜在扩展方向包括:
* Prime+Probe 攻击实现
* 基于机器学习的异常检测
* 实时监控仪表板
* 额外的 PMU 性能指标
* 多进程攻击场景
* 高级缓解策略
* 动态阈值自适应
* 容器化部署支持
标签:Flush+Reload, 侧信道攻击, 性能监控计数器(PMU), 攻击检测与防御, 网络安全, 进程隔离, 逆向工具, 隐私保护