告别Kerberos FTP
我们将在cURL 8.17.0中弃用此功能支持。具体来说是Kerberos5 FTP。这是我们为FTP保留的最后一个Kerberos支持。
问题发现
2025年9月16日,我们收到一份安全报告,准确指出了Kerberos FTP代码中可能存在基于栈的缓冲区溢出,恶意FTP服务器可能利用此漏洞对cURL造成严重破坏。
这确实很糟糕。
但等等,报告还指出了第二个问题。在引入潜在安全漏洞的同一个提交中(而且是由我提交的),我还注入了第二个bug!
警示性bug
这第二个bug实际上完全破坏了功能,导致Kerberos FTP无法工作。因此没有用户会真正受到第一个问题的影响,因为该功能根本已经无法使用,没有用户会针对恶意服务器使用此功能!
当我合并该提交时,第二个bug未被发现,因为我们显然没有测试这段代码的测试用例和CI。虽然我很不愿意承认,但cURL中确实还有少数区域没有被测试或测试覆盖不足。
我在2024年5月合并了这段有问题的代码,自那以后我们已经发布了一年多的版本,由于没有任何人报告此故障,我们可以将其视为一个有效的"矿井金丝雀",并安全地得出结论:在这段时间内(使用近期cURL安装的)没有任何人使用过此功能。如果有人使用了,他们没有告诉我们,而我不计入这种情况。
没有用户:没有代码
通过这次意外/巧妙的用户检查,我们决定不修复代码,而是完全移除整个功能。显然我们不应该支持这段代码,因为A)它没有被使用,B)它在测试套件中没有被测试。也许还有C)这是段奇怪的代码。
再见,Kerberos5 FTP支持。我们在2007年7月引入了它。
我们在2000年9月至2013年8月期间曾支持FTP的Kerberos4。
作为后续影响,我们还移除了代码库中最后一段以BSD-3许可证版权归属"Kungliga Tekniska Högskolan"的代码。这是唯一一段BSD-3许可的代码。少了一个需要关注的许可证!
致谢
顶部图片是Cerberus和Heracles的裁剪版本。由Antonio Tempesta(意大利佛罗伦萨,1555–1630)制作的蚀刻版画。