安全

Parla 需要使用你的麦克风,因此在设计上就力求难以被滥用。你的声音永远不会离开你的设备,扩展程序只请求尽可能少的权限,我们发布的每一段代码在到达你之前都经过版本锁定、扫描和测试。

在你使用 Parla 时

  • 你的声音在你的设备上、在浏览器内完成降噪。Parla 没有接收音频的服务器,也没有可能被盗的账号或密码。
  • 引擎是我们自己的代码,用 Rust 编写,不依赖第三方库,以 WebAssembly 形式在浏览器的沙盒中运行。AI 模型是数据(数字),而不是程序:模型作者的任何代码都不会在你的电脑上运行。
  • 扩展程序只请求清理麦克风声音所需的权限:保存自己的设置,以及在你使用麦克风的网页中运行。它自己的页面只运行自己的脚本(严格的内容安全策略,Content Security Policy)。
  • 网页只能通过一个狭窄的通道访问扩展程序:它们只能获得引擎的文件,别无其他;它们发送的所有内容都会经过检查并限制大小。
  • 报告默认关闭,除非你主动开启。报告是匿名的,每个字段都列在我们的文档中。

从我们的代码到你的浏览器

  • 构建所用的一切都锁定到确切版本,并通过指纹校验:GitHub actions 按提交,容器镜像按摘要,下载文件按 SHA-256,npm 和 Python 包按锁定文件。
  • 发布不满 3 天的版本一律不用。大多数恶意包版本会在几天内被发现并移除,所以我们先让它们被揪出来。自动更新会等待一周,每次更新都要先构建并测试才会被接受。
  • 绝不允许包运行安装脚本,每次构建都会验证 npm 注册表的签名。
  • 只有我们的自动化流水线从主分支构建发布版本。应用商店和 npm 的凭据保存在受保护的环境中,只有发布步骤可以使用,而且构建过程不会保留代码仓库的访问令牌。

每次更改都会检查

  • 静态分析:CodeQL 检查 TypeScript、Rust 引擎和构建工作流;zizmor 审计工作流。
  • 每次更改时以及每周对网站进行动态扫描(OWASP ZAP)。
  • 引入含已知漏洞的包的更改会被拦截,Dependabot 警报会监控每个锁定文件。
  • 启用推送保护的密钥扫描:GitHub 会拒绝任何包含密码或密钥的提交。
  • 严格类型的代码(TypeScript 和 Python),并在每次发布前于 Chrome 和 Firefox 中进行自动化测试。

发现问题?

请私下告诉我们:在 GitHub 上报告漏洞。这样可以在公开之前修复它。

本页的一切都可以查证:代码、构建流水线和安全检查都是开源的。发布版本如何构建和检查