基于安全性考虑,如何选择及切换 Firefox 版本?

文章目录

★本文所说的【安全性】,包括哪些层面?
★本文只针对桌面系统(PC)
★强烈建议:【不要】使用【中国版】
★扫盲一下 Firefox 的开发周期
★Firefox 的两种【发布版本】
★【不要】使用“Nightly”和“Beta”
★为啥“长期支持版”(ESR)要【优于】“普通发布版”?
★扫盲一下 ESR 的版本号
★聊聊 ESR 的【滞后升级】策略?
★“滞后升级”策略的【例外】情况
★全程【加密】的必要性
★全程走【匿名网络】的必要性
★Tor Browser(TBB) — — 不仅仅是 Tor + Firefox
★面向极客的高级玩法 — — 自己组合 ESR + Tor

今天这篇,可以视作《弃用 Chrome 改用 Firefox 的几点理由》一文的后续和补充。

★本文所说的【安全性】,包括哪些层面?

为了避免歧义,也防止有人来抬杠,俺先界定一下:
本文以下内容提及的【安全性】,主要包括:“安全加固”和“隐私保护”,另外也会顺便谈到“隐匿性”。

★本文只针对桌面系统(PC)

有一句话,俺唠叨了很多年(今天再唠叨一次):
如果你很在意安全性,就【不要】基于移动设备(手机、平板)进行各种【敏感操作】

具体的原因,可以参见俺之前写的三个系列:
如何保护隐私
如何防止黑客入侵
如何隐藏你的踪迹,避免跨省追捕

有鉴于此,你应该把【所有的】敏感操作都放到桌面系统中进行。而本文也只讨论:【桌面环境】中如何选择 Firefox。

★强烈建议:【不要】使用【中国版】

◇两种不同的 Firefox

对于天朝的读者而言,你首先要搞清楚:“国际版”与“中国版”是【完全不同】滴!
“国际版” — — 由 Mozilla 官方开发并维护,面向【全球用户】。
“中国版” — — 由“谋智中国”在“国际版”的基础上进行定制(二次开发),面向【墙内用户】。

◇中国版的【劣迹】

虽然这个“谋智公司”是 Mozilla 下属的公司,但由于它是在咱们天朝运营滴,多多少少会沾染上一些【中国特色】。据俺所知,“谋智中国”搞过好几次不光彩的破事儿。比如下面这个新闻曝光了“中国版 Firefox 擅自篡改用户设定的书签”:
谋智中国被发现 “do some evil” @ solidot

关于这两个版本的差异,俺再随便聊几点:
数据同步的差异
“国际版”使用的是 Mozilla 官方的服务器;而“中国版”使用的是【国内服务器】。
“服务器放在国内”意味着什么,大伙儿心知肚明。
插件与扩展的差异
“中国版”内置了一些恶心的东西(比如“支付宝控件”之类的东西)。
搜索引擎的差异
“国际版”内置的搜索引擎是“Google、Bing、duckduckgo、Wikipedia”这些。
“中国版”内置的搜索引擎是“百度”这种非常人渣的公司。

◇如何避免下载到中国版?

下载 Firefox 的时候,要看清楚网站的【域名】 — —
如果域名是以【firefox.com.cn】结尾,那就是流氓的“谋智中国”的网站;
而 Mozilla 官网的域名,是以【mozilla.org】结尾滴。

注:聊完“中国版”的话题之后。本文后续部分的讨论,全都是针对【国际版】。

★扫盲一下 Firefox 的开发周期

根据 Firefox 的开发流程,每个版本会经历如下几个阶段:

Nightly(每夜构建阶段)
在这个阶段,每天晚上会编译一个版本,包含当天加入的新代码(Nightly 由此得名)。

Beta(β 测试阶段)
在软件工程中,“β 测试”指的是 — — 把软件提供给外部真实用户进行【试用】,以此来发现一些开发环境中未能发现的 bug。
那么,这些用于外部测试的 Beta 版本是从哪里来的捏?实际上是从 Nightly 版本中筛选出内部测试比较 OK 的,然后作为 Beta。
对这个阶段的版本,Mozilla 的软件工程师只进行 bug 修复,【不会】增加新功能。
如今,“Beta 版本”也被称做“开发者版本”(洋文叫“Developer Edition”)。
注:
历史上曾经有过一个叫“Aurora”的阶段(位于 Nightly 与 Beta 之间)。当时的“开发者版本”指的是 Aurora。从“54版本”之后,为了简化开发周期,这个 Aurora 就废除了。所以“54版本”之后,“Developer Edition”就是指 Beta。

Release(发布阶段)
经历了“β 测试”之后,就正式发布。
那么,这些用于发布的 Release 版本是从哪里来的捏?实际上是从 Beta 版本中挑选出外部测试比较 OK 的,然后用作发布。
对这个阶段的版本,Mozilla 的软件工程师只进行“大 bug”(关键 bug)的修复工作。对“小 bug”,会留到下一个版本。
Release 的版本号规则如下:
(截止俺写本文时)最新版本是【63.0】 — — 这是刚发布时的版本号。
过了一段时间后,如果修复了一些关键 bug,会再出一个版本叫【63.0.1】,然后再下一个是【63.0.2】,以此类推…

举例:
在俺写这篇博文时,Firefox 的几个版本处于如下状态:

65646362 Nightly Beta Release Nightly Beta Release
你可以通过如下几个链接,查看并下载 Firefox 历史上的【所有版本】。
https://archive.mozilla.org/pub/firefox/releases/
https://ftp.mozilla.org/pub/firefox/releases/

如果你熟悉 Web 相关技术的话,还可以通过如下链接,查看历史上【每一个版本】的技术性发布说明(相当于写给程序猿看的 Release Notes):
https://developer.mozilla.org/docs/Mozilla/Firefox/Releases

★Firefox 的两种【发布版本】

Firefox 的版本迭代周期大约是6~7星期。当下一个版本进入 Release 阶段,之前那个版本就不再维护了(不再修复 bug)。
但是为了照顾到【企业用户】,Mozilla 还搞了一个【长期支持版本】(洋文叫“Extended Support Release”,缩写为 ESR)。
每隔7到8个版本,就有一个版本被选作 ESR 版本。ESR 的维护周期比较长(一年左右)。只有当下一个 ESR 版本出现之后,才会结束对上一个 ESR 版本的维护。

下面是最新的 ESR 版本下载页面(包含:不同平台,多个语种):
https://www.mozilla.org/firefox/organizations/all/

★【不要】使用“Nightly”和“Beta”

如果你理解了 Firefox 的开发流程和发布规则,自然也就理解了 — — 为啥【不应该】使用“Nightly”和“Beta”。
因为这两个版本的质量【尚未】达到“可发布”的水平,会有比较多的 bug。有些 bug 可能会是【安全漏洞】。
如果你关注安全性,当然不应该用这两个版本。

★为啥“长期支持版”(ESR)要【优于】“普通发布版”?

对于 Firefox,每个新版本都会引入一些【新功能】。要增加新功能,就要增加软件代码(source code),也就增加了攻击面,也就【有可能】出现新的安全漏洞。
由于“普通 release”的维护周期比较短(6~7星期),过了这个时间段之后就变成【旧版本】,即使发现 bug 也不会再修复了。
相比之下,ESR 的好处就很明显。ESR 维护的时间长达一年左右,而且 ESR 是【只修复 bug,不增加新功能】。所以在 ESR 的维护周期内,它的代码质量会【越来越好】。

★扫盲一下 ESR 的版本号

前面介绍了“普通发布版”的版本号规则。再来说一下 ESR 的版本号规则。
(俺敢说:即使是 Firefox 的发烧友,也不一定清楚 ESR 版本号的规则)
为了简明起见,俺以【52】这个 ESR 版本来举例。(因为 52 ESR 已经走完它的生命周期)。

时间ESR
版本号普通发布
版本号备注 2017–03–0752.052.0ESR 与普通版同步发布 2017–03–1752.0.152.0.1同步修复 bug 2017–03–2852.0.252.0.2同步修复 bug 2017–04–1952.1.053.052 结束,53 发布
ESR 版本号跳到 52.1.0 2017–04–2752.1.153.0.1修复若干 bug,含 52 版本的【旧】bug 2017–05–0552.1.253.0.2修复若干 bug,含 52 版本的【旧】bug 2017–05–19N/A53.0.3修复若干 53 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变 2017–06–1352.2.054.053 结束,54 发布
ESR 版本号跳到 52.2.0 2017–06–2952.2.154.0.1修复若干 bug,含 52 版本的【旧】bug 2017–08–0852.3.055.054 结束,55 发布
ESR 版本号跳到 52.3.0 2017–08–10N/A55.0.1修复若干 53 或 54 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变 2017–08–16N/A55.0.2修复若干 53 或 54 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变 2017–08–25N/A55.0.3修复若干 53 或 54 版本的【新】bug
由于【不含】52 版本的 bug,ESR 版本不变

★聊聊 ESR 的【滞后升级】策略?

◇Bug 递减模型

在聊这个话题之前,先简单说一下:“Bug 递减模型”。
对于正规的软件开发流程,在【正式发布】之后,就只是修复 bug,而不会再加新功能(要加也是加到下一个版本)。
在这种情况下,bug 通常是一个【递减】的过程(极少数情况会出现递增,这不在本文讨论之列)。而且这个“递减过程”并不是【匀速】的,而是一个【先快后慢】的过程(如果画一条“bug 数变化曲线”,其形状有点类似于倒数函数那样)。
为啥 bug 的递减过程是【先快后慢】捏?道理很简单 — —
软件在刚刚发布时,会被大量使用(“实际用户数”远远多于软件公司的“测试人员数”)。所以,在刚发布的初始阶段,会有比较多的 bug 暴露出来。
但是随着时间的推移,容易发现的 bug 都已经被发现了,剩下的都是比较隐蔽的 bug(比较难发现)。所以 bug 递减的趋势会变慢。

为了增加说服力,俺稍微整理了一下 52 ESR 生命周期内的 bug 修复情况:
(简洁起见,只列出那些修复了【高危安全漏洞】的 52 ESR 版本)。

时间ESR
版本号CRITICAL 级别
bug 数HIGH 级别
bug 数 2017–03–0752.0N/AN/A 2017–03–1752.0.120 2017–04–1952.1.0920 2017–04–2752.1.102 2017–06–1352.2.023 2017–08–0852.3.0410 2017–09–2852.4.025 2017–11–1452.5.031 2017–12–0752.5.221 2018–01–2352.6.038 2018–03–1352.7.033 2018–03–1652.7.230 2018–03–2652.7.302 2018–05–0952.8.025 2018–06–0652.8.111 2018–06–2652.9.034 (注:上表数据是从 Mozilla 官网的“这个链接”整理的)

◇切换 ESR 的时间点 — — 滞后一段时间

花了这么多口水来描述“bug 递减模型”。俺无非是想得出一个结论 — — 软件刚发布的时候,先不要急着用,稍等片刻再说。
俺所说“片刻”是多长捏?取决于具体的“软件类型”和“用户群体”。对于 Firefox 的 ESR 而言,俺建议【至少】等一两个月。
以 52 ESR 为例:
当该版本刚发布时,先别用。等到 54(甚至 55)发布的时候,你再开始用 52 ESR。

★“滞后升级”策略的【例外】情况

说完了“滞后升级策略”,再来说说该策略的例外情况。

◇什么情况下应该立即升级 ESR?

刚才说的是“滞后升级”的策略。但存在一种【例外情况】,需要你【立即】升级 — —
如果前一个 ESR 结束维护之后,又发现了一个新的高危漏洞(该漏洞对你有显著影响,并且无法通过“配置项”进行规避)。在这种情况下,前一个 ESR(由于维护已结束)不会再修复了,那么你就应该立即升级到下一个 ESR。

◇通过配置项规避高危漏洞,是啥意思?

刚才提到“通过配置项规避高危漏洞”,估计很多同学不明所以,俺简单解释一下。
Firefox 提供了很丰富、很全面的配置选项(Preference)。可以通过它,对 Firefox 进行各种定制,也包括【禁用】某些功能。Mozilla 官网的介绍在“这里”。
如果某个高危漏洞所在的模块,可以通过配置项禁用;那么你就【不需要】升级 ESR 版本,只需通过“about:config 界面”或“user.js 文件”禁用这个有问题的模块。
根据俺的观察,相当比例的 Firefox 高危漏洞,对俺的 Firefox【毫无影响】。因为漏洞所在的模块,老早就已经被俺禁用了。
以俺的习惯,凡是“用不到”或“很少用”的功能,统统禁掉。套用信息安全的行话,叫做【降低攻击面】。

★全程【加密】的必要性

如果你很在意安全性,上网的时候应该【全程加密】(这又是俺唠叨了很多年的老话题)。
“全程加密”的好处【至少】包括:
1. 防止上网流量被嗅探(被第三方偷窥)
2. 防止上网流量被劫持(被第三方篡改)

上述所说【第三方】是指谁捏?稍微解释一下:
如果你通过公司的网络上网,“第三方”可能是你公司的网管;
如果你通过公共场合(比如:餐厅、酒吧)的 wifi 热点上网,“第三方”可能是 wifi 热点的管理员;
另外,不管你通过哪一种方式上网,电信运营商(ISP)都是潜在的“第三方”。

★全程走【匿名网络】的必要性

◇为啥“全程加密”还不够?

如果你很在意安全性,光搞“全程加密”是【不够】滴!还需要更进一步,做到【全程走匿名网络】。
为啥捏?简单举2个例子:

举例1 — — 为啥“全程 HTTPS”是不够滴?
假设你访问某个网站,该网站已经实现【全站 HTTPS】。那么你对该网站的访问,就可以算是【全程加密】了。这种情况下,刚才提到的“嗅探”和“劫持”的风险,基本上可以规避掉了。
但是(俺要开始说“但是”了),依然存在另外几个风险点:
其一,
在这种情况下,该网站还是可以看到你的【真实公网 IP】。如果网站把所有访问者的信息记了日志(web log),日后追查起来,还是可以查出,某年某月某日,某个公网 IP 访问了该网站。
其二,
如果你在公司里面上网,即便你全程 HTTPS;公司的网管虽然无法解密 HTTPS 的流量数据,但还是可以看出 — — 你访问的是【哪个网站】。

举例2 — — 为啥“全程翻墙”是不够滴?
全程走翻墙通道,可以避免“例1”中提到的两个弊端 — —
1. 目标网站即便记录了访问者日志(web log),里面包含的公网 IP 也是翻墙服务器的 IP,而【不是】你个人的公网 IP。
2. 公司网管只知道你连接了某个服务器,但不知道你最终访问了哪个网站。
但这样依然是【不够】滴!为啥捏?因为翻墙工具的设计初衷是为了“突破 GFW”,而【不是】为了“匿名化”。
如果你非常在意“匿名化”(比如:想在网上发表敏感的政治言论),那么你还需要使用专门的【匿名网络】。

◇啥是“匿名网络”?

“匿名网络”,洋文叫做“anonymity network”。顾名思义,是用来帮助你实现【匿名化】的手段之一。通过匿名网络进行各种操作(比如在网上发布言论),可以让【网络层面】的【逆向追溯】变得极端困难。
注:很多人把“匿名网络”与“暗网”混为一谈,其实这是两个不同维度的概念。之所以会有这种混淆,是因为几个知名的工具(Tor、I2P)既是“暗网”,也是“匿名网络”。
如果你想了解“匿名网络的原理”,可以参见俺的几篇旧博文(里面包含若干示意图):
“如何翻墙”系列:关于 Tor 的常见问题解答
“如何翻墙”系列:简单扫盲 I2P 的使用

◇为啥选择 Tor?

名气比较大的“匿名网络”有两个,分别是 Tor 与 I2P。俺个人推荐 Tor。主要原因如下:
1. 在性能方面,I2P【严重不如】Tor — — 这与协议设计有关(参见“这张对比图”),也与用户数量有关。
2. I2P 客户端更适合用来访问它自己的暗网,而【不】适合用作访问公网的代理;而 Tor 两者都适合。
3. Tor 客户端可以完美地搭配 Firefox 浏览器(参见下面介绍的 Tor Browser)

★Tor Browser(TBB) — — 不仅仅是 Tor + Firefox

Tor Browser,还有另一个叫法是 TBB(Tor Browser Bundle)。为了打字省力,以下都称之为 TBB。
之前没接触过 TBB 的同学,先看另一篇扫盲教程《“如何翻墙”系列:扫盲 Tor Browser 7.5 — — 关于 meek 插件的配置、优化、原理》,熟悉一下。

很多人对 TBB 有一个【误解】,以为它只是简单地把“Firefox ESR”与“TOR 客户端”拼凑在一起。其实不然!
Tor 社区发布的 TBB 至少包括如下几项主要工作:
1. 对 Firefox ESR 的修改(代码层面)
2. 基于 Preference 对 Firefox 进行定制(基于 Preference 的定制,本文前面提到过)
3. 内置了若干安全相关的扩展(比如:NoScript、HTTPS Everywhere ……)
4. 整合 TOR 客户端

通过上述这些工作,不光让 Firefox 可以走 Tor 的匿名网络,而且还把 Firefox 本身的“隐私保护”与“安全加固”提升到一个新的高度。
说到这里,再次夸奖一下 Tor 社区 — — 在信息安全方面非常成熟且牛逼。比如在上个月的博文中,俺还提到了 Tor 社区对 Firefox 的很多改进(比如:第一方隔离、防范指纹追踪),已经被 Mozilla 官方接纳,成为 Firefox 的标准功能。

★面向极客的高级玩法 — — 自己组合 ESR + Tor

在本文的最后部分,聊一个比较阳春白雪的话题 — — 自己组合“ESR 与 Tor”。
可能有些读者觉得:既然已经有了 TBB,为啥还要自己折腾“ESR + Tor”?所以俺先来谈一下必要性。

◇必要性

如果你是个技术能力和动手能力都比较强的极客,同时对安全性的要求【非常非常高】,那就可以考虑自己折腾一下“ESR + Tor”。这种玩法的好处包括如下:

1. 实现【更小颗粒度】的隔离
对于使用 TBB 的场景,浏览器(Firefox)与 Tor 客户端运行在【同一个用户环境】中。但“浏览器”的重要性显然要高于“Tor 客户端”。
把两个重要程度【不同】的进程放在同一个环境中运行,这本身就违背了安全加固的原则。
打个比方:
假如某一天,Tor 客户端曝出某个高危的安全漏洞,使得攻击者可以利用该漏洞在本地执行代码;由于浏览器与 Tor 运行在同一个环境,那么攻击者就可以借助此漏洞,攻击浏览器。严重的话,可能导致你的 Web 帐号沦陷。
而如果是自己组合 ESR + TOR,就可以把这两者隔离在不同的环境(不同的操作系统用户 或 不同的虚拟机)。如此一来,(相比 TBB)安全性提升了一大截。

2. 满足个性化需求
TBB 是面向大众用户的。很多时候,“大众的需求”与“极客的需求”是不太匹配滴。

◇可行性

之所以能够自己折腾 ESR + Tor,得益于 — — Firefox 本身是【高度可定制】的。
比如俺曾经写过一篇博文《无需任何插件或扩展,定制 Firefox 外观》,介绍“如何折腾 userChrome.css”。类似 userChrome.cssuser.js 之类的定制,还只是 Firefox 的【高层定制】。
另外,Firefox 还支持一些【底层定制】,可以实现比【高层定制】更多的效果。举个例子:你可以不安装任何插件或扩展,修改 Firefox【所有的】默认快捷键。
有些同学可能会问:既然可以用扩展的方式定制快捷键,为啥还要折腾【无扩展方案】?
因为,如果你对安全性的要求非常非常高,每一个额外的插件或扩展,都将被视作一个潜在的攻击面。而且你无法验证这些插件或扩展的作者,是否足够靠谱。所以,不用插件或扩展就能搞定的方案,总是让人心情愉悦 :)

最后俺还想说的是:
虽然折腾一些东西(比如本文所说的“ESR + Tor”)很花时间,但这些时间值得付出。具体原因请看:《聊聊【折腾】的重要性》。


俺博客上,和本文相关的帖子(需翻墙)
如何保护隐私(系列)
如何防止黑客入侵(系列)
如何隐藏你的踪迹,避免跨省追捕(系列)
弃用 Chrome 改用 Firefox 的几点理由
“如何翻墙”系列:关于 Tor 的常见问题解答
“如何翻墙”系列:扫盲 Tor Browser 7.5——关于 meek 插件的配置、优化、原理
“如何翻墙”系列:简单扫盲 I2P 的使用
无需任何插件或扩展,定制 Firefox 外观
聊聊【折腾】的重要性

版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
https://program-think.blogspot.com/2018/10/How-to-Choose-Firefox-Version.html

Written by

编程随想的blogspot镜像,欢迎关注!编程随想:IT宅,热衷于:抹黑党国、揭露洗脑、普及翻墙。 偶尔会谈点技术。

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store