我正在查看如何制作 CTAN 包,令我惊讶的是它不需要制作帐户:你只需要填写表单。如果您有新版本的软件包,您只需再次填写相同的表格即可。
现在,使用恶意的 .sty 文件对我来说是个非常糟糕的主意。我倾向于使用 Makefile 编译我的 LaTeX,默认情况下,我认为 .sty 文件可以更改同一目录中的任何文件,因此例如,他们可以将其更改为在我下次编译文档时下载并运行后门。当然,如果我使用的软件包的作者想要对我进行后门,他们就可以做到。但是随机第三方可以更新其他人的软件包并以这种方式困扰我吗?
为了更清楚起见,这是我想象的攻击模型。
- Mallory 拿走了这个
hyperref
包。这个包太大了,没人会读完整的源代码。 - Mallory 发现该软件包存在错误。在更新日志中,她声称已经解决了一个小错误。
- 马洛里一直等到 hyperref 的作者们去度假。
- Mallory 以原作者的名义将软件包上传到 CTAN。CTAN 没有其他验证方法,将接受该软件包,尽管他们可能会或可能不会向实际作者发送电子邮件。
- 实际作者不会立即注意到更新版本已经发布。
- 许多人从 CTAN 下载并使用这个软件包。这个有缺陷的软件包甚至可能被纳入 LaTeX 发行版中。
- 真正的作者度假回来后发现他们的软件包已经更新。后门被充分混淆,作者没有发现它的恶意,并将它归咎于有人想搞笑。
- 作者回滚了软件包更新,但是没有引起任何不满。
- 马洛里再次对另一个包裹进行同样的操作,以感染更多的人。
为了增加效果和发病率,不要使用 ,而要hyperref
选择一个经常使用但作者已经去世的软件包。用假名上传,并声称改进了该软件包;CTAN 可能会接受你作为新的维护者。如果该软件包被巧妙地植入了 bug,检测起来会非常困难。
为了产生更可怕的效果,想象一下使用一个经常需要 shell 访问的包(例如gmp
)。
这些问题看似相关,但并不相同:CTAN 镜像完整性 - Miktex 更新。该问题询问 CTAN 镜像是否可能被窃听;我想知道是否有可能主动窃听 CTAN 本身。
答案1
不,CTAN 并不安全,无法抵御攻击者上传知名软件包的漏洞版本。
防止任何假设攻击的唯一方法是要求上传的包签由作者撰写。