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安全, 侧信道防御, 数据可视化, 浏览器扩展, 白名单, 网络安全, 自定义脚本, 蓝队分析, 调试辅助, 逆向工具, 隐私保护