halencarjunior/frost-guard-chrome
GitHub: halencarjunior/frost-guard-chrome
一款 Chrome/Edge 防御性浏览器扩展,通过拦截 OPFS 访问和降低计时器精度来缓解基于存储延迟的 FROST 侧信道攻击。
Stars: 1 | Forks: 0
# FROST Guard
FROST Guard 是一个防御性的 Chrome/Edge 扩展 MVP,旨在尝试减少基于 OPFS 的侧信道攻击面。
## 它解决的问题
FROST 是一种侧信道攻击理念,它利用 Origin Private File System(或称 OPFS)来创建或读取大文件,然后通过 JavaScript 测量存储延迟。在某些系统上,这可能会泄露有关存储设备的有用的计时信息。
此扩展并不能修复浏览器漏洞或消除底层信道。它只会增加在不受信任的站点上发动攻击的难度。
## 扩展功能
- 在 `strict` 和 `balanced` 模式下,拦截白名单之外的 `navigator.storage.getDirectory()` 调用。
- 使用白名单允许受信任的源通过。
- 降低白名单之外源的 `performance.now()` 精度。
- 记录 OPFS、存储、计时器和 Worker 活动。
- 在弹出窗口中显示警报和近期事件。
- 提供一个简单的选项页面来管理白名单和清除日志。
- 可选择启用 DNR 规则集,以移除 `Cross-Origin-Opener-Policy` 和 `Cross-Origin-Embedder-Policy` 响应头。
## 模式
- `strict`:拦截白名单外的 OPFS,降低计时器精度,并拦截白名单外的 Workers。
- `balanced`:拦截白名单外的 OPFS,并降低计时器精度。
- `monitor`:不进行拦截,但仍会记录尝试行为。
## 安装说明
1. 打开 `chrome://extensions`
2. 启用开发者模式
3. 点击 `加载已解压的扩展程序`
4. 选择 `extension/` 文件夹
在 Edge 浏览器中,访问 `edge://extensions` 也可以使用相同的流程。
## 测试方法
1. 创建或打开一个调用 `navigator.storage.getDirectory()` 的本地页面。
2. 加载该扩展。
3. 在未加入白名单的源上访问该页面。
4. 确认调用失败并提示 `SecurityError`。
5. 打开弹出窗口,将该源添加到白名单中。
6. 重新加载页面并再次测试。
7. 确认在白名单之外,`performance.now()` 返回的是经过四舍五入的值。
测试页面示例:
```
```
## 测试页面
现成的测试页面位于 [`test-page.html`](./test-page.html)。
使用方法:
1. 从本地 Web 服务器打开该文件,最好是 `http://localhost`,以确保 OPFS 可用。
2. 在开发者模式下加载扩展。
3. 打开测试页面并点击 `Run all`。
4. 观察 OPFS 结果、计时器精度和 Worker 行为。
5. 使用弹出窗口将该源从白名单中添加或移除,然后再次运行测试。
## 本地服务器
使用单个 Python 命令来托管扩展文件夹:
```
python serve.py
```
可选自定义端口:
```
python serve.py 8080
```
然后打开:
- `http://127.0.0.1:8000/test-page.html`
- 或您选择的自定义端口
## 局限性
- 这不是一种彻底的修复方案。
- 在注入脚本完全修补页面之前,可能仍然会存在竞态条件。
- 某些合法网站可能会出现异常,尤其是那些依赖 OPFS 或高精度计时的网站。
- Worker 和 Service Worker 的覆盖范围在未来可能需要进一步强化。
- 理想的缓解措施取决于浏览器内部机制,而不仅仅是一个扩展。
- 在此 MVP 中,DNR 头部移除功能是按模式启用的,但针对特定源的头控制在此并未完全解决。
## 后续计划
- 在 Workers 中实现更强的拦截。
- 按源划分的审计仪表板。
- 针对存储快速增长的启发式检测。
- 对密集 I/O 循环的检测。
- 支持 Firefox。
- 自动化的 Playwright 测试。
## 参考文献
- [新型 FROST 攻击可让网站通过浏览器侧信道追踪您的 SSD 活动](https://thehackernews.com/2026/06/new-frost-attack-lets-websites-track.html)
- [FROST 论文 PDF](https://hannesweissteiner.com/pdfs/frost.pdf)
## 项目结构
```
frost-guard-isolado/
.github/
workflows/
package-extension.yml
extension/
manifest.json
background.js
content-script.js
injected.js
popup.html
popup.js
popup.css
options.html
options.js
options.css
rules.json
test-page.html
serve.py
README.md
```
标签:OPFS, Web安全, 侧信道防御, 数据可视化, 浏览器扩展, 白名单, 网络安全, 自定义脚本, 蓝队分析, 调试辅助, 逆向工具, 隐私保护