在 DuckDuckGo 和 VikingVPN 的资助下,QuarksLab 最近对开源加密软件 VeraCrypt 进行了安全审计。此次审计发现了 8个高危漏洞和 10 多个中低级别的漏洞。
关于VeraCrypt
VeraCrypt 是一款非常流行的磁盘加密软件,它基于 TrueCrypt 7.1a 开发(在 2014 年 TrueCrypt 突然关闭之后才启动的这个项目),因此可以把它看成是 TrueCrypt 的分支 。在 TrueCrypt 停用之后,VeraCrypt 接过了 TrueCrypt 的钢枪,迅速成为了一款十分受欢迎的加密软件。其开发者为法国的 Mounir Idrassi,现在是由 IDRIX 团队在负责维护,相比 TrueCrypt ,VeraCrypt 在防暴力破解方面造诣更深。
VeraCrypt 有着十分庞大的用户群,记者、安全从业人员以及很多其他用户,他们都是 VeraCrypt 的忠实粉丝。正是因为用户数量庞大(本身也存在一些漏洞),OSTIF(一个开源技术改进基金)才同意独立审计 VeraCrypt,并于今年8月聘请了 QuarksLab 研究人员主导这次审计。
发现数个高危漏洞
这次安全审计的源代码来自 VeraCrypt 1.18 版本和 VeraCrypt DCS EFI Bootloader 1.18 版本,重点聚焦在上次审查后,这款应用引入的新特性上。另外此次安全审计仅针对 Windows 版本,OS X 和 Linux 版本不在审计范围之内。另外,使用的SHA-2 值为:
VeraCrypt_1.18_Source.zip : 12c1438a9d2467dcfa9fa1440c3e4f9bd5e886a038231d7931aa2117fef3a5c5
VeraCrypt-DCS-EFI-LGPL_1.18_Source.zip : 2e8655b3b14ee427320891c08cc7f52239378ee650eb28bad9531371e7c64ae3
这次审计牵扯到方方面面,既要熟悉操作系统,Windows 内核,系统启动链,又要对密码学有了解。总之,就是对参与人员的素质要求非常高。安全专家们对 VeraCrypt 1.18 版本和 VeraCrypt DCS EFI Bootloader 1.18 版本进行了一个月的分析后,总结了一份长达42页的审计报告。
在 VeraCrypt 1.18 版本中,UEFI 支持是其最重要的功能之一,这部分代码存储在一个名为 VeraCrypt-DCS 的单独库中。但跟其他功能比起来,由于某些功能的欠缺,这个特性还是显得不够成熟。
研究人员发现,黑客能够在 UEFI 模式下轻松获取到启动密码——在用户变更密码的时候,VeraCrypt 未能正确将其擦除。
bootloader 处理的数据一般不会被擦除。一般来说,启动时用户密码会被正确清除。但在用户修改密码时,包含新密码的密码结构则不会被擦除。实际上,TrueCrypt 和 VeraCrypt 的开发人员有仔细检查内存中的数据是否被正确清除。但 DCS 模块显然没有被纳入到检查范围内。除此之外,还有一些高危的漏洞也被检查出来。其余的高危漏洞和 GOST 28147-89 对称分组密码的实施过程相关。
在 VeraCrypt 发布的 1.19 版本中,修复了报告披露的部分漏洞,而部分漏洞因为其复杂性尚未修复。已经修复的漏洞包括:VeraCrypt 使用了旧版本的 zlib 库,1.19 版移除了旧版本用新版本替换;移除 GOST 28147-89 加密选项,原因是其实现不安全;修复了多个 UEFI 支持问题。
值得一提的是,James Forshaw 在 TrueCrypt 驱动中发现的一个漏洞也被修复,该漏洞可以实现提权,而在 OCAP 审计报告中并没有提及到该漏洞。对于需要大量修改代码或架构的漏洞,VeraCrypt 暂时还没有修复。包括:
- TC_IOCTL_OPEN_TEST,multiple issues
- EncryptDataUnits() lacks error handling
- AES implementation susceptible to cache-timing attacks
另外,涉及到密码机制的相关漏洞也未修复,包括:
- Keyfile mixing is not cryptographically sound
- Unauthenticated ciphertext in volume headers
毫无疑问,这种类型的审计不仅对用户安全非常重要,而且也加快了 bug 的发现和修复进程。现在我们更关注的是,其他的 bug何时能修复?