今天,我们犯了一个错误。这个错误导致许多 LGBTQIA+ 网站被新上线的家庭版 1.1.1.1 服务意外阻止。我想梳理一下当时的情况、具体的原因,以及我们为解决问题所做的事。

按照三年来的传统,我们在 4 月 1 日面向使用互联网的普通大众推出新产品。今年的一款产品是过滤版 DNS 服务,即家庭版 1.1.1.1。任何选择使用此服务的人都可限制某些类别的网站。

过滤与未过滤 DNS

我们新推的过滤版 DNS 服务绝不会改变原版 1.1.1.1 服务不经过滤的性质。但是,我们意识到有一部分人想要一种方法来控制自己家里的内容。例如,我会在工作时阻止社交媒体网站的解析,因为这样可以提高工作效率。在 1.1.1.1 用户提出的要求中,呼声最高的便是希望我们创建一个供家庭使用的服务版本来阻止某些类别的网站。所以在今天早些时候,我们发布了家庭版 1.1.1.1。

过段时间,我们将为家庭版 1.1.1.1 用户提供准确自定义阻止类别的功能(例如,像我一样通过阻止社交媒体网站来保持生产力)。但在初期,我们针对人们想要阻止的内容中请求最多的类型创建了两个默认设置:恶意软件(可以通过将 1.1.1.2 和 1.0.0.2 设为 DNS 解析器来阻止),以及恶意软件 + 成人内容(可通过将 1.1.1.3 和1.0.0.3 设为 DNS 解析器来阻止)。

授权分类数据

为获得用于家庭版 1.1.1.1 的数据,我们从多家擅长网站分类的提供商那里授权了数据摘要。我们在过去几个月审核了分类提供商,选出准确性最高、误报率最低的提供商。

恶意软件涵盖了一系列广泛认可的网络安全威胁,所以是这两个类别中比较容易定义的。对于成人内容,我们打算沿用Google SafeSearch 标准。Google 在这方面一向考虑周到,其 SafeSearch 工具设计为可限制“色情内容”的搜索结果。其定义侧重于色情内容,主要遵循美国儿童互联网保护法(CIPA)的要求(美国的学校和图书馆必须遵循这些要求)。

由于它是 1.1.1.3 服务的默认设置,也因为我们计划日后允许个人在默认设置以外制定自己的规范,我们打算缩小成人内容类别的范围。我们没有打算将 LGBTQIA+ 内容包含在成人内容类别中。但在服务推出后,我们很震惊地收到关于那些站点被过滤的报告。

选错了摘要

问题出在哪里?我们从其授权内容的数据提供商制定了不同的分类;这些分类在提供商之间的契合度不是很完美。其中一家提供商有多个“成人内容”类别。一个“成人内容”类别包括符合 Google SafeSearch/CIPA 定义的内容。另一个“成人内容”内容类别包括更广泛的主题,当中包含了LGBTQIA+ 网站。

尽管我们专门审核了成人内容类别,确保其在精心定制后反映 Google SafeSearch/CIPA 定义,但今天早上发布生产版本时,我们在这个版本中纳入了错误的“成人内容”类别。结果,第一批尝试 1.1.1.3 的用户发现被过滤网站的范围比原本预期的要广,而且 LGBTQIA+ 内容也包含在内。我们立即想办法解决问题。

数据结构更新比较慢

为了将网站列表快速分发给我们的所有数据中心,我们采用了一种紧凑的数据结构。好处是我们能够非常高效地在全球范围内复制数据结构,而缺点则是生成新版数据结构需要数小时。在发现自己犯错的那一刻,我们找出了错误的数据提供商,并开始重新创建新的数据结构。

在新数据结构在我们网络中复制的同时,我们也立即将各个网站推送到允许列表中。我们开始从用户报告和其他 LGBTQIA+ 资源中汇总列表。这些更新迅速发送出去。在收到报告或自己发现后,我们不断将网站添加到允许列表中。

到 16:51(UTC)时,即收到第一份错误阻止报告约两小时后,含有成人内容预期定义的数据结构生成完毕,我们将它推送上线。唯一遭遇阻止范围过广的用户是已经切换到 1.1.1.3 服务的用户。1.1.1.1(保持未经过滤)和 1.1.1.2 的用户不会遇到这种无意的阻止。

截至目前,1.1.1.3 默认设置提供的过滤已经符合我们的预期,并且应该与使用 Google SafeSearch 时找到的结果大致匹配,而且 LGBTQIA+ 网站也不会被阻止。如果您发现本不应被阻止的网站,请通过以下网址告诉我们。

https://report.teams.cloudflare.com/

防患于未然

今后,我们已对不应归入预期类别的已知网站设置了多项检查,其中包括我们今天列错的许多网站。未来更新默认值之前,我们的构建系统会确认这些网站无一被列入名单。我们希望这有助于以后捕捉到此类错误。

我为今天的错误道歉。虽然我理解它是怎么发生的,但它绝不应该发生。我也感谢我们团队迅速响应并解决犯下的错误。