PSTricks 和 TikZ 允许我们使用 PostScript。它安全吗?
我的意思是:是否存在可供他人利用的漏洞?
编辑:我刚刚发现编译 PSTricksxelatex
可能不安全,因为dNOSAFER
必须按照说明启用“新闻”栏目发布日期 2012-05-26。 这是对的吗?
答案1
通常现在,postscript 被转换为 pdf 或由基于 ghostscript 的解释器进行处理。 ghostscript
有一个选项可以禁用在运行来自未知来源的代码时可能不想允许的操作:
-d安全
禁用“deletefile”和“renamefile”操作符以及以除只读之外的任何模式打开文件的能力。强烈建议在假脱机程序、转换脚本或其他敏感环境中使用此功能,因为必须防止编写不当或恶意的 PostScript 程序代码更改重要文件。
答案2
我想说它在编译时是安全的,因为 PSTricks 和 TikZ 只写PostScript 位于文件中,但不要执行它。
安全隐患与 PostScript 代码的执行有关,该执行是在 PostScript 解释器(查看器)或打印机中完成的。
从原则上来说,PS 是一种图灵完备的语言,它甚至具有打开文件进行读/写的可能性,因此如果解释器允许它这样做,那么安全风险就是真实存在的。
这是什么RFC1341(关于 MIME 类型) 关于 PostScript (第 7.4.2 节) 的说法:
通用 PostScript 解释器的执行会带来
严重的安全风险,因此不鼓励实施者简单地将 PostScript 电子邮件正文发送到“现成的”解释器。虽然将 PostScript 发送到打印机通常是安全的,因为打印机的危害可能性大大降低,但实施者在向邮件阅读器添加 PostScript 正文的交互式显示之前,应考虑以下所有事项。本节的其余部分概述了通过邮件发送 PostScript 时可能出现的一些问题(但可能不是全部)。[...]
您可以在 RFC 中阅读其余内容,但基本上它可以重命名、删除、创建等文件。它甚至可以加载执行机器代码(TeX 的一种\write18
)。它可以改变解释器中的参数,这些参数可以跨文档保留,改变处理其他文档的方式(即有可能“感染”解释器),等等。更不用说解释器中可能存在可被利用的错误。
不过,我不知道这些风险是否都只是理论上的,或者是否真的存在 PS 漏洞的实际案例。