原文:https://bbs.popkart.org/?thre...
前注:Pale Moon 是 Firefox 的一个旧版衍生,采用 Goanna 内核,并使用 XUL 进行界面布局。
标 DiD(Defense-in-Depth)的要点,是预防针式的漏洞修复,避免以后可能出现的问题,参考原文。
v29.4.4 (2022-01-18)
这是一次安全更新。
更新内容:
- 提高了应用程序库加载的安全性(DiD)
- 修复了 JavaScript 序列化的一个问题(DiD)
- 修复了 IndexedDB 中潜在的越界问题(DiD)
- 修复了小部件(?)数据处理代码中的潜在问题(DiD)
- 修复了处理截断/损坏的传输流时可能被利用的崩溃问题
- 修复了 DOM FileReader 代码中的一个问题
- 将 NSS 更新至 3.52.3 以解决安全问题
- 修复了以下安全问题:CVE-2022-22736, CVE-2022-22741, CVE-2021-4140, CVE-2022-22746, CVE-2022-22744 and CVE-2022-22747
- 统一 XUL 平台 Mozilla 安全补丁概述:8个已修复,4个DiD,17个不适用
v29.4.3 (2021-12-14)
这是一次安全更新,同时也增加一些额外功能。 此次更新重新支持了 FUEL,以保证旧扩展的兼容性,详情见实施日志。
更新内容:
- 重新支持 FUEL abstraction library
- 为计时器和文本片段添加额外的健全性检查(DiD)
- 为程序线程逻辑添加了一个潜在的奔溃保护(DiD)
- 修复了以下安全问题:CVE-2021-43537, CVE-2021-43541, CVE-2021-43536, CVE-2021-43545 and CVE-2021-43542
- 统一 XUL 平台 Mozilla 安全补丁概述:已修复5个, 3个DiD, 10个不可用
实施日志:
- 尽管于 29.4.0 和 29.4.2 版本被移除,也在 Pale Moon 内部废弃已久,FUEL 在经过社区的强烈反对和扩展兼容修复于事无补的情况下,又复活了。同时,这也是永久的复活,因为有些用户可能会离开,或停留在不安全的版本上——至于扩展的兼容性问题,似乎也没人来解决。在论坛上有关于此方向变化更详细的公告
v29.4.2.1 (2021-11-11)
此次更新修复一个小问题:自动完成的下拉列表的样式不正确,导致自定义主题出现问题或未按预期显示(如不可读的情况)。
v29.4.2 (2021-11-09)
这是一次安全更新。
更新内容:
- 修复了可能导致域名混淆的 IDN 规范遵从性问题
- 修复了几个间歇性的线程健全性问题(DiD)
- 修复了网络连接中可能出现的 UAF 风险(DiD)
- 修复了潜在的奔溃风险(尚未暴露,DiD)
- 修复了提交表单时潜在的被骗风险(CVE-2021-38508)
- 通过 XSLT 修复了网页脚本沙盒逃逸的问题(CVE-2021-38503)
- 添加了一个设置项以启用与早期 TLS 1.3 规范兼容的模式,详情见实施日志
- 统一 XUL 平台 Mozilla 安全补丁概述:已修复3个,1个已应用,4个DiD,7个不可用
安全注意:如果已启用 HTTP Alternative Services for Opportunistic Encryption 功能,此时我们强烈建议禁用它:设置 -> 安全 -> Opportunistic Encryption -> Enable HTTP Alternative Services for Opportunistic Encryption。因为 http -> https 这种脆弱的传统处理办法已经被违背和滥用(partial opt-in bypass)。注意,由于这些既有风险,以及连接到服务器缺乏透明度的原因,我们默认将其禁用(包括其他任何 OE)。关于此问题的更多详情,可参阅 CVE-2021-38507。
实施日志:
- 新增了一个设置项(security.ssl.enable_tls13_compat_mode),它允许用户启用兼容较旧协议规范草案的 TLS 1.3 模式。变更此设置项后,需要重启浏览器。注意,请只在必要时开启(如使用过时的代理软件、负载平衡器或中间件等情况),因为它可能会导致连接的安全性问题。
- FUEL 已被移除(再次)。三个月前我们已经在 29.4.0 中将其移除(尽管之后临时恢复,以使扩展开发人员有更多时间解决问题),我们已经发出明确警告,使用 FUEL 的扩展将无法在此版本正常工作。
v29.4.1 (2021-09-14)
这是一次安全更新。
更新内容:
- 修复了潜在的崩溃问题(DiD)
- 修复了 Internet Explorer 潜在的间接攻击问题(CVE-2021-38492)
- 统一 XUL 平台 Mozilla 安全补丁概述:已修复1个,2个DiD,8个不可用
v29.4.0.2 (2021-08-23)
这是一个微小的更新以解决 Linux 和 Windows 上音频停止工作的问题(尽管这很少出现)。我们仍在排查 Windows 上此问题的根本原因(Linux 方面的原因已经找到)。然而,此次更新,我们暂时恢复 audio library (libcubeb)到之前的版本,以便在此期间为用户提供适当的媒体体验。
v29.4.0.1 (2021-08-18)
这是一个微小的更新以解决以下问题:
在 29.4.0 版本,Pale Moon 已经移除了可选的 FUEL 组件(其在 Mozilla Add-On SDK 中早已被弃用)。这对许多流行的扩展及一些核心功能产生了意外的影响,而这些情况在我们发布前的测试和不稳定通道中并没有被注意到。
作为我们解决问题,并履行承诺的一部分,我们为了扩展开发人员有更多的时间解决问题,此更新将【暂时】恢复 FUEL 组件。如果您是依赖 FUEL 组件或命名空间(如隐式“应用程序”)的扩展开发人员,请在下一个正式版前更新您的扩展。
v29.4.0 (2021-08-17)
这是一个集新功能开发、bug 修复和安全更新的大版本。我们调整了发布时间表,以提供 web 兼容性的改进,而不仅仅作为本月的安全更新。
更新内容:
promise.allSettled()
方法已生效- 在 windows 和 workers 上实现了全局源
- 改进了内存分配的性能
- 将 libcubeb 更新为最新开发版,这提高了 OSS 的兼容性,同时解决了潜在的崩溃、性能和安全问题
- 将 SQLite 更新至 3.36.0
- 改进了 web 内容缓存线程的安全性(DiD)
- 修复了一些潜在的崩溃和安全问题(DiD)
- 统一 XUL 平台 Mozilla 安全补丁概述:5个DiD,12个不可用
v29.3.0 (2021-07-19/20)
这是一个集新功能开发、bug 修复和安全更新的大版本。
更新内容:
- 「Web 开发者」现在在菜单中被称为「开发者工具」
- 更新并调整:主页、快速拨号,及登录页面样式
- 在设置里做隐私标签内容的重新排布
- 为支持的站点启用基于 http 的 brotli 压缩,详见实施说明
- 实现了
EventTarget
构造器 - 更新了 Windows 10 工具箱样式(窗口样式?)
- 更新了端口黑名单(移除 10080 端口),详见实施说明
- CSS:实现了
calc()
方法,对stroke-dashoffset
启用动画支持 - 添加了 chrome CSS 样式表的布尔选项支持,以实现更高级的主题配置
- 添加了 CSS 动态深色主题的支持
- 根据最新规范变更了
ResizeObserver
的具体实现,详见实施说明 - 删除了一大堆 Macintosh 相关代码
- 从布局引擎中移除了过时的系统主题支持
- 修复了数个崩溃问题
- Linux:移除了早已过时的 Mesa/Nouveau 驱动,因为它可能导致一些问题
- 解决了一些安全问题:包括 CVE-2021-30547 及数个没有 CVE 编号的问题
- 统一 XUL 平台 Mozilla 安全补丁概述:3个已修复,3个DiD,2个推迟(DiD),12个不可用
实施说明:
- Brotli 压缩算法(数年前引入)最初仅用于在 web 浏览器中使用 https,因为担心其与设计不佳的中间件盒子进行交互,并试图显式重新压缩数据,然而其无法识别新的压缩流类型,甚至出错。而这些框中进行的处理(SDCH)早已被弃用。在此之后,Chrome 及 Firefox 一直保持 http 和 https 之间对 Brotli 的隔离,通过人为地降低 http 的效率(拒绝使用更密集的 Brotli 压缩),进一步推广 https 而非 http。由于没有任何技术缘由不启用 http 上的 Brotli,于是我们将从此版本开始接受纯 http 上的 Brotli(通过接受编码),当服务器也启用它时,带宽使用量将减少20%。
- 我们维护一个不应从浏览器寻址的端口黑名单(以防止脚本滥用)。前段时间,我们更新了更大范围的端口号,其中就包括端口 10080(Amanda)。然而,很多其他公共服务/设备也使用这个端口(比如随机到它),所以我们再次从黑名单中移除了此端口。
ResizeObserver
的实现已更改为现存 API 的更新规范,包括实验属性contentBoxSize
和borderBoxSize
,将允许更精细的控件响应和元素大小的更改。为了保证 web 的兼容性,陈旧的contentRect
大小属性依然支持。
v29.2.1 (2021-06-08)
这是一个小小的错误修正版本~
更新内容:
- 解决了自动完成偶尔不弹出窗口的问题(同时添加一些调试日志,以便找到根源)
- 修正了鼠标滚动 DOM 抛出错误的问题
- 修正了从睡眠状态恢复时,网络发现程序无法正确启动的问题
- 修正了通过 DOM 大量上传文件时的崩溃问题
- 修正了可编辑菜单列表按钮在 GTK3 上不可见的问题
- 减少了错误日志中「重要配置项」的数量,比如单个打印机的属性信息
- 修复了 JS JIT 编译器不跟踪 debug 环境的问题(DiD)
此版本没有添加 UXP 和 Pale Moon 的安全补丁。
v29.2.0 (2021-04-27)
这是一个面向开发者和错误修复的版本。
以此开端,我们将不再支持没有直接针对 Pale Moon 更新而无人维护的 Firefox 旧扩展(正式分道扬镳),详情见此。
更新内容:
- 从历史侧边栏新开标签时,如果一次打开过多标签页,Pale Moon 会弹出警告
- 为了用户界面的一致性,Pale Moon 现在书签文件夹添加了「全部打开」的菜单项,即使其中只有一个项目
- 在设置里添加了媒体格式控制的分类
- 添加了明亮/黑暗的默认配色方案选项,详见实施说明
- 兼容性问题,将对几个特定站点进行 UA 覆盖(万恶的 Chrome。。)
- 移除了接受 Firefox IDs 以安装扩展的能力
- 移除了可以移除的 Macintosh 前端代码
- 将 AV1 依赖库更新至 2.0 版本
- 清除了平台上的一些 Android 代码
- 更新了字体,以适配多种族多职业的 emoji 显示
- 修复了剪贴板的溢出问题,它们可能被错误地渲染
- 已添加
smooth
,high-quality
以及pixelated
的值进 CSS 属性image-rendering
- 接轨标准,
Intl.NumberFormat.formatToParts()
将允许脚本对本地化数字格式进行解构 - 恢复了
dom.details_element.enabled
配置项,并修复 summary / details 的 html 元素渲染问题 - 修正了 CSP 一个
.nonce
元素属性的问题 - 解决了两个安全问题:CVE-2021-29946(DiD)以及 CVE-2021-23994(DiD)
- 统一 XUL 平台 Mozilla 安全补丁概述:2个DiD,14个不可用
实施说明:
此版本增加了 prefers-color-scheme
CSS 属性的支持,该属性告诉站点使用明亮还是黑暗的配色方案。
对于其他浏览器,这将与系统配色直接相关并自动应用(这可能会留足迹,存在隐私问题),所以我们决定通过「设置-内容-颜色」给予用户选择的权利(所有人默认明亮)。
尽管我们也提供了禁用此功能并直接不支持此属性的选项,但注意,这可能会在一些不配置默认配色方案的站点上出现问题,未来我们可能会添加一个类似其他浏览器的「自动」选项,以防系统和网页配色不同带来的割裂感。
v29.1.1 (2021-03-30)
这是一个微小的安全更新及错误修复。
更新内容:
- 更新了 NSS 以修复证书导入问题,同时 keygen 将回归
- 移除了对 SVG 元素的 width / height 属性单位限制
- 默认启用
scrollbar-width
的 CSS 属性 - 已解决的安全问题:CVE-2021-23981,以及针对潜在文档解析器混淆的修复(DiD)
- 统一 XUL 平台 Mozilla 安全补丁概述:2个DiD,9个不可用
v29.1.0 (2021-03-02)
这是一个包含开发改进、错误修复和安全更新的一个版本。
新特性:
- 支持了如下语言:阿拉伯语(ar)、繁体中文(zh-TW)、克罗地亚语(hr)、丹麦语(da)、芬兰语(fi)、加利西亚(德国)、印尼语(id)、冰岛语(is)、日语(ja)、罗马尼亚语(ro)、塞尔维亚语(西里尔)(sr)、斯洛文尼亚语(sl)、泰语(th)
- 实现了
String.prototype.replaceAll()
方法 - 实现了 JSON 超集协议
- 实现了严格良好的 JSON 格式
- 在 JS 中实现了数字分隔符
更新内容:
- 更新时区数据至 2021a
- 修正了
about:license
中的语句并添加了更多已使用的许可证说明 - 为了兼容,已更新一些用于特定站点的 UA 覆盖
- 更新了 lz4 库,以获得性能优化及安全更新
- 提高了严格化的 JSON 性能
- 进一步改善了对 FreeBSD 的支持
- 修复了 useragent 的兼容性更改需要重启才能生效的问题
- 修复了 WebCrypto (隐蔽的加密API)中 AES-GCM 不起作用的问题(这可能会导致一些登录页出错)
- 修复了页面脚本将浏览历史记录与快速位置状态更改淹没时,浏览器完全死锁的问题
- 默认情况下,AV1 编码和解码器再次被禁用,因为我们的实现存在重大的流媒体问题(尤其是音频),这需要进一步工作
- 在某些操作系统上添加了与 html 文件 input 元素上的文件与目录打开的必要对话框交互,以避免恶意网页诱导用户上传敏感文件(CVE-2021-23956 相关)
- 添加了字体完整性检查,以避免在未打补丁的 Windows 上触发潜在漏洞(CVE-2021-24093 相关)
- 解决了安全问题:CVE-2021-23974、CVE-2021-23973,以及几个没有编号的内存安全隐患
- 统一 XUL 平台 Mozilla 安全补丁概述:4个已修复,2个DiD,19个不可用
v29.0.1 (2021-02-06)
这是一个安全和稳定性更新。
更新内容:
- 修复了控制 frame 树时浏览器的崩溃问题
- 修复了 ANGLE 的深度纹理问题
- 为 You Tube Studio 更新了 SSAOU
- 解决了安全问题:ZDI-CAN-12197
v29.0.0 (2021-02-02)
新的一年,新的里程!
我们的初始目的是让 Google WebComponent 支持这个里程碑版本,然而现在所有合理的 deadline 都已经过去。
所以,取而代之的是,这个新版本将继续建立在开发平台的进一步增强改进、浏览器的新功能添加以及大量错误修复的基础之上。
新增内容:
- 为 JS 实现了
Intl.PluralRules
API - 添加了一个常用的设置项(browser.tabs.allowTabDetach),用来禁用拖拽标签到窗口外以新建窗口
- 将 FLAC 添加为可识别的文件扩展名
- 实现了对 CSS 属性
scrollbar-width
的基础支持,详见实施说明 - 增加了对现代 FreeBSD 构建的初步支持
- 选择性启用 DOM Animations API 的核心特性
- 默认情况下启用对 AV1 视频的支持(早已构建,但之前未启用)
- 增加了对指针事件的支持
- 增加了对 SVG
transform-box
属性的支持 - 增加了对表单
inputmode
属性的支持,以支持软键盘的敏感内容显示 - 启用了空闲时关闭文件 I/O 进程的资源优化
- 已默认阻止后台自动播放
- 除了 GTK2 版本,我们现在还提供 Linux 官方的 GTK3 版本构建
- Google WebComponents 的部分实现(但暂不可用),详见实施说明
一些改变和 Bug 修复:
- 将 NSPR 更新至 4.29 版本
- 将 NSS 更新至 3.59 版本
- 已禁用存储证书和密码的旧数据库格式,详见实施说明
- 更新了一些站点的特定 UA 覆盖以解决兼容问题
- 改进了查找栏的样式,以避免某些系统主题出现难以阅读的文本
- 删除了大量 Android 限定的代码
- 将 gkmedias.dll 从 xul.dll 中分离出来
- 清除了大量冗余和过时的代码路径
- 修复了 Performance API 的回退问题
- 修复了强制禁用某些类型缓存后的初始化问题
- 修复了从 FTP 保存可预览的文件时发生的崩溃
- 修复了 JS 模块加载导致崩溃的根本原因,详见实施说明
- 修复了导致打印预览窗口不显示的初始化问题,这很少出现
- 修复了 Mac 上文本输入不安全时的崩溃问题
- 默认禁用 Storage Manager API
- 默认禁用 html tag
<menuitem>
,如果仍然需要,可以在about:config
中启用配置项dom.menuitem.enabled
- 修复了 XUL 树相关的内存安全问题(CVE-2021-23962)
- 实施了几项 DiD 修复,以改善稳定性和并解决未来的安全问题
- 统一 XUL 平台 Mozilla 安全补丁概述:1个已修复,6个DiD,1个已实施,1个推迟下一版本,24个不可用
实施说明:
我们已经实现了对 CSS 属性 scrollbar-width
的基本支持,网页日渐常用的配置是 scrollbar-width: none
,即当内容溢出限定空间而不显示滚动条,我们将完全地支持此 none
键值。
此属性的另一个可选值为 thin
,尽管支持了这一特性,但它目前依赖于各操作系统的基础主题,所以可能几乎没有影响,并依旧是标准宽度的滚动条(与默认的 auto
相同,Linux 尤是)。
用于存储安全证书和密码的 dbm 数据库格式将不再使用。
同时浏览器无法将旧格式(cert8.db 和 key3.db)转换为现在基于 SQL 的格式,请参阅我们关于配置文件迁移的文档,以获取建议。
有个问题迫使我们在之前版本默认禁用 JS 的 JIT 编译器(IonMonkey)中代码的内联优化,以防止模块脚本崩溃(可以参阅 28.17.0 的更新日志)。
而我们现在追踪到它了(thanks, jarman!),于是,我们将修复先前操作带来的浏览器性能损失,同时解决临时方案可能导致的崩溃问题。
我们已经实现了大量 Google WebComponents(CustomElements 以及 Shadow DOM),但代码还不完全,所以目前通过一个配置项(dom.webcomponents.enabled)控制——但强烈建议目前不要开启,除非你想帮助我们实现这个从根本上改变 web 世界规范的其余部分。
请不要期望此配置项能带来魔法,让 Google 及其附属网站突然可以在没有辅助的情况下「现代化」工作(如 polyfills),虽然我们已经做了很多工作以寻求一个可行的实现,但此规范有点特殊,因为要么全做,要么全不做,因为它不是现有技术的扩展或演变,而是试图在最基本的层面上重新定义网站的工作方式和结构(因此有大量负面反馈)。