翻译助手实用程序中的小型安全漏洞已修复
Django 团队发现并修复了django/bin/compile-messages.py
辅助脚本中的一个小安全漏洞,该脚本用于将语言翻译消息文件(.po 文件)编译成二进制格式(.mo 文件)。
compile-messages.py
脚本使用 .po 文件的名称来构建系统命令的参数,并且它没有充分验证文件名中是否存在潜在的恶意内容。
依赖 Django 提供的语言翻译文件或编写和编译自己翻译的用户从未面临风险。从未运行过compile-messages.py
脚本的用户也从未面临风险。只有在未首先检查文件名的情况下编译第三方翻译的用户才可能受到攻击。
据悉,目前尚不存在基于此漏洞的利用程序(概念验证或其他)。
鉴于漏洞的性质,我们认为这不需要发布 Django 的新版本。但是,依赖第三方提供翻译文件(例如 Django 自身的 i18n 维护者)的用户,建议通过以下方式之一修补其代码
- 升级到最新的 Django trunk(Django 开发版本)。
- 只需将您的
django/bin/compile-messages.py
副本替换为新版本。自 Django 0.90 版本之前,此文件在任何向后不兼容的方式上均未发生更改,因此无论您使用哪个 Django 版本,都可以安全地复制。 我们已将补丁应用于以前 Django 版本 0.90 和 0.91 的 Subversion“错误修复”分支。
svn co http://code.djangoproject.com/svn/django/branches/0.90-bugfixes
svn co http://code.djangoproject.com/svn/django/branches/0.91-bugfixes
如果以上解决方案都不适用,我们强烈建议用户在编译翻译文件之前仔细检查其文件名。当然,检查来自不受信任的第三方的翻译文件时,应应用与检查来自不受信任来源的任何代码相同的标准。
(我们始终建议所有用户记住使用来自第三方的任何文件的风险,并在执行任何第三方代码之前仔细检查。)
此安全漏洞已在 changeset 3592 中修复。补丁程序可在此处获取。
如果您有兴趣了解我们如何修复错误,请参阅优秀的文档命令行中的字符串替换。
感谢 Rene Dudfield 报告此问题。
返回顶部