
目录
随着计算机架构的进步,现代处理器变得容易受到利用低层硬件特性的多种攻击。微架构通道——包括侧信道和隐蔽通道——已从理论好奇心转变为实际的安全威胁,使攻击者能够泄露敏感信息而无需触发传统的安全警报。
一个特别令人担忧的用例是创建高容量隐蔽通道,该通道可以在两个协同进程之间稳定地传输大量秘密信息,即使跨越进程或安全边界。正如在Understanding and Improving High Capacity Covert Channels via Microarchitectural Channel Engineering (HPCA 2015)和后续研究中发现和分析的那样,这些攻击向量具有现实世界的影响,并需要严格审查。
本帖解释了从初学者到高级用户的微架构通道,深入探讨了高容量通道的设计方式,提供了检测和测量的代码样本,回顾了可用的缓解措施,并详细说明了这一主题在现代网络安全中的重要性。
微架构通道是处理器架构物理实现的产物,所谓的“微架构”。架构描述处理器的功能(指令集),而微架构描述其实现方式(流水线、缓存、缓冲区、预测表等)。
处理器的设计重点在于性能,而不是微架构级别的安全隔离。共享资源导致的时间、可用性或行为变化可被其他软件观察到,这些变化可以被武器化以泄露机密信息。
关键点:即使两个进程不共享内存,它们可能共享硬件,从而实现通信。
区别:
侧信道无意中泄露秘密;隐蔽通道专门用于跨越安全边界进行通信。
现代隐蔽通道可以被设计为具备可靠性和高容量(带宽),能够在短时间内泄露大量数据。让我们解析攻击者如何实现这一点。
隐蔽通道工作需要共享的微架构资源。正如AutoCC: Automatic Discovery of Covert Channels in Time-Division Multiplexed Processors (Princeton, 2023)所述:
| 资源类型 | 示例机制 | 攻击向量 |
|---|---|---|
| 缓存 | L1/L2/L3数据和指令缓存 | Prime+Probe, Flush+Reload |
| 分支预测器 | 方向历史表、BTB、RSB | BranchShadowing |
| TLB | 共享译码旁路缓冲区 | TLBleed式攻击 |
| 内存总线 | DRAM行缓冲区 | DRAM行通道化 |
| 预取缓冲区 | 硬件预取器、受害者预取 | Spectre变体 |
一个发送进程可以*占用(prime)*缓存集(加载特定地址)。随后运行的接收者检查相同地址的访问时间:
描述:
发送者填充(占用)一个缓存集。如果接收者的探测显示读取缓慢,它会推断缓存在探测间被清空(指示某个比特)。
用例:
从安全或沙盒环境(如浏览器JavaScript)泄露数据到不文明进程。
带宽:
根据硬件而定,HPCA 2015显示可达每秒数百千比特。
描述:
依赖于共享内存,如代码库在多个进程中映射于同一位置(如Linux中的共享库)。
检测非常困难,因为隐蔽通道操作模拟了正常资源访问模式。然而,通过精确测量,可以发现并表征这些通道。
rdtsc)计时微架构资源的访问。让我们复习一下对安全研究人员有用的实际步骤。
hwloc,lscpu,dmidecode# 显示缓存和CPU拓扑
lscpu
hwloc-ls
dmidecode --type cache
import time
start = time.perf_counter_ns()
# 访问内存/调用函数
end = time.perf_counter_ns()
print(f"Elapsed (ns): {end - start}")
使用rdtsc测量访问时间。
#include <stdio.h>
#include <x86intrin.h>
int main() {
volatile int data = 0;
unsigned long t1, t2;
int iterations = 1000;
for (int i = 0; i < iterations; i++) {
t1 = __rdtsc();
data += i; // 访问内存
t2 = __rdtsc();
printf("%lu\n", t2 - t1); // 打印访问所用的周期数
}
return 0;
}
假设你有一个timings.txt文件(来自上面的C示例):
# 打印最小值、最大值、平均时间
awk '{sum+=$1; if(min==""||$1<min) min=$1; if($1>max) max=$1} END {print "Min:", min, "Max:", max, "Avg:", sum/NR}' timings.txt
# 使用perf监控缓存事件(需要root权限)
sudo perf stat -e cache-misses,cache-references -p <pid>
正如Prevention of Microarchitectural Covert Channels on an SoC (Wistoff et al. 2020)中所述:
perf、静态分析器和供应商特定的安全功能(如Intel CAT、AMD SEV)。微架构隐蔽通道代表网络安全中一种复杂且不断演变的威胁向量。随着攻击者利用硬件资源共享开发可靠和高容量的通道,防御者必须结合硬件、操作系统和软件策略来减轻这些通道的威胁。
理解这些漏洞的如何和原因让从业者能够检测、防止及最小化风险。随着不断的研究,从HPCA 2015到AutoCC工具和现代研究,攻击者和防御者之间的斗争在计算的最低层面继续存在。
作者 [Your Name], 网络安全研究员 — [Your Site/Contact]