
Curl 首席开发人员兼创始人 Daniel Stenberg 写道,一位 Curl 贡献者在一次拉取请求中用 Unicode 替代字符替换了一个 ASCII 字母。但团队(或任何持续集成 (CI) 工作)中没有一个人注意到这一点。该更改“看起来与 ASCII 版本完全相同,因此无法从视觉上发现……”当然,更改 URL 中的一个或多个字母可能会造成毁灭性的影响,具体取决于具体情况……我们已经实施了检查,以帮助我们这些可怜的人类发现此类问题。为了检测恶意的 Unicode,我们添加了一个持续集成 (CI) 作业,用于扫描所有文件并验证 git 存储库中的每个 UTF-8 序列。在 curl git 存储库中,大多数文件和大多数内容都是普通的 ASCII 码,因此我们可以“轻松地”将一小部分 UTF-8 序列和一些特定文件列入白名单,其余文件则完全不允许使用 UTF-8,因为它们会导致持续集成 (CI) 作业失败并显示为红色。为了彻底落实这一变更,我们检查了 curl 存储库中的所有测试文件,并确保所有 UTF-8 字符都被其他类型的转义序列等替换。其中一些字符的使用或多或少是误用,很容易被对应的 ASCII 字符替换。下次有人试图对我们耍这种花招时,可能并非出于好意,但现在理想情况下,我们的 CI 会告诉我们……我们希望并努力在恶意攻击者利用某些漏洞之前采取主动措施,加强一切安全措施,但安全仍然是一场永无止境的竞赛,我们只能尽力而为,而对方则默默无闻,未来可能会以我们意想不到的创新方式攻击我们。未来未知的攻击非常棘手。在最初的博客文章中,Stenberg 抱怨他几乎没有收到 GitHub 的回复(开玩笑说“也许他们都忙着实现我们不想要的下一个 AI 功能。”)。但几个小时后,他发布了一条更新:“GitHub 告诉我,他们已经在内部将此问题作为安全问题提出,并且正在努力修复。”
在 Slashdot 上阅读更多内容。