如何检测 TrueType 字体 (.ttf) 字体文件中的可疑内容

信息安全 恶意软件 漏洞扫描器 部件 字体
2021-09-06 18:09:06

我很好奇如何在将特定字体文件部署到主机之前对其进行扫描或评估其风险。当然,第一道防线是确保我们的主机针对任何 TrueType 字体漏洞进行了修补。

我阅读了Google Project Zero的出色研究,似乎值得了解字体的风险。我还阅读了Tom Leek答案,答案建议(非常明智地)在 Windows 上尝试之前先在 Linux 上尝试字体,因为:

制作可以在 Windows 系统上安装病毒但在 Linux 系统上“正常”工作的“恶意字体”将非常困难

最后,我安装了一个 python 库 (FontTools),它允许从 .ttf 转换为人类可读的 .xml 文件。在生成的文件中,有数百行汇编代码,因为每个 .ttf 文件中都存在“提示机制”。攻击者将在此汇编代码中插入漏洞利用程序。

为了进一步调查,我想将已知的错误 .ttf 文件(例如用于利用字体处理漏洞的文件)与已知的良好 .ttf 文件进行比较。我想如果没有对组装的深入了解,很难发现这些差异,但我想看看,或者如果可能的话,至少听听这里的人的意见。所以,问题是:有没有人知道分析 .ttf 文件以查找可疑命令的方法,有没有人知道从哪里可以得到用于利用字体处理漏洞的 .ttf 文件。

1个回答

这是个有趣的问题。字体文件就像其他媒体文件一样,可能会被恶意软件滥用或在利用尝试中。

检测此类媒体文件中的恶意块将遵循基于签名的方法:您或您的防病毒软件将寻找可疑模式。

我不知道字体文件中存在恶意代码的公开编译。您可能必须在公共漏洞数据库和漏洞利用数据库的帮助下自己编译。

在另一个平台上打开不受信任的文件可能能够在不暴露环境的情况下检测缺陷。这是因为漏洞利用代码通常针对特定平台,不可能在其他平台上成功。行为不端的字体文件可能是攻击企图的指标。

将字体文件从一种格式转换为另一种格式基本上是代理会做的事情(应用程序网关正在使用协议执行此操作)。严格的实现会检测到不当行为并导致转换失败。不太严格的实现会忽略恶意部分并生成有效文件而不会留下危险。