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), 攻击检测与防御, 网络安全, 进程隔离, 逆向工具, 隐私保护