Abstract

摘要—SSL 和 TLS 是用于在 Internet 上创建安全连接的两种安全协议。 X.509 证书验证对安全性很重要,需要在建立 SSL/TLS 连接之前执行。 然而,最先进的测试技术,如 frankencert 和 mucert,通过随机改变 Internet 可访问证书,揭示了不同 SSL/TLS 实现之间存在意想不到的、有时是关键的验证差异。 尽管做出了这些巨大的努力,证书验证仍然没有经过彻底的测试,并且需要更有效的技术,如这项工作所示。
为此,本文介绍了 transcert,这是一种有效指导模糊测试对 X.509 证书验证进行深度测试的新方法。 transcert 的目标是生成触发各种执行的证书; 它通过将覆盖转移图的概念引入高效、精确地抽象程序执行来实现这一目标。 特别是,它记录了给定证书如何通过参考 SSL/TLS 实现进行验证的执行情况。 然后它构造一个覆盖转移图来模拟从测试证书(种子)到其变异证书(突变体)的覆盖转移,并通过迭代采样和变异证书来探索覆盖转移图。 我们已经实施了 transcert,并在四种最先进的 SSL/TLS 实施中针对 frankencert 和 mucert 对其进行了评估。 评估结果清楚地显示了 transcert 的优势——在 10,000 次迭代中,transcert 揭示了 3,469 个验证差异,是 frankencert 和 mucert 揭示的差异的 8 倍。 我们已经确定了 11 个验证差异的根本原因,所有这些都已得到确认,其中 5 个以前从未报告过。 我们还发现,证书链验证的主要目标在广泛采用的 PKI 标准 RFC 5280 中的表述含糊不清。索引词——传输覆盖图、模糊测试、X.509 证书验证