ruffle 中文文档 下载 App

许可证与安全模型:为什么 Ruffle 比旧 Flash Player 安全

双许可(Apache 2.0 或 MIT,二选一)

Ruffle 根目录的 LICENSE 文件明确写了:

Ruffle is licensed under either of Apache License, Version 2.0 or MIT License at your option.

也就是说,使用 / 集成 / 修改 Ruffle 时,你可以选择遵守其中任意一份许可。两份都是宽松型开源许可:

MIT License(更宽松)

Apache License 2.0

在 MIT 的基础上多了几条:

第三方依赖许可

Ruffle 的 Rust crate 依赖非常多,绝大多数也是 MIT / Apache 2.0 / BSD 系列。LICENSE 文件里完整列出了所有第三方依赖的许可证。

为什么 Ruffle 比旧 Flash Player 安全得多

旧 Adobe Flash Player 是过去十年里被利用最多的软件漏洞载体之一——几乎每周都有新的零日漏洞被发现。这些漏洞类型高度集中:

这些全是 C / C++ 时代的典型内存安全漏洞。Ruffle 在两个层面解决了这些问题:

层面 1:Rust 语言的内存安全

Rust 的所有权系统 + 借用检查器在编译期就拦掉了上面列的那些内存安全问题。编译器会在不允许的代码上直接报错、不让它编译通过——而不是等到生产环境里被攻击者利用。

这不是说 Ruffle 完全没有 bug(它肯定有逻辑 bug、兼容性问题),但内存安全类漏洞的基础土壤被从根上挖掉了——旧 Flash 每年出几十个这类漏洞,Ruffle 到现在为止还没出现过。

层面 2:WebAssembly 沙箱隔离

Web 版 Ruffle 编译成 WebAssembly 运行——WebAssembly 运行在浏览器的沙箱里,有硬性的内存访问边界,不能访问宿主进程的任意内存。即便 Ruffle 里出现了逻辑 bug(比如某个 AVM 2 API 行为不对),也不能被用来逃逸到操作系统层面。

桌面版呢

桌面版虽然没有浏览器沙箱,但同样享受 Rust 内存安全的保护。桌面版运行在用户自己的机器上、读的是本地或远程的 .swf——风险模型跟旧 Flash Player 不同。但同样的,内存安全类漏洞(最容易被远程利用的那种)Ruffle 也没有。

安全模型的实际意义

安全不是绝对的

承认:Ruffle 也有 bug、也会有零日漏洞。但漏洞类型分布跟旧 Flash Player 完全不同——Ruffle 的漏洞更可能是逻辑错误(比如某些 ActionScript 代码在特定输入下结果不对),而不是内存安全类(攻击者能远程接管的那种)。