禁用证书检查:我们没有学到太多

主要观点:强调在开发世界中默认进行服务器证书验证的重要性,指出跳过证书验证会使连接不安全,介绍了 curl 及 libcurl 中与证书验证相关的 API 和历史发展,包括不同版本的调整及存在的问题,同时展示了当前仍有大量代码存在禁用证书验证的情况及相关安全漏洞。

关键信息:

  • 1990 年代中期到后期开始了解 SSL,2002 年起 curl 和 libcurl 默认验证服务器证书,至今已二十多年。
  • 标准验证方式是检查证书由受信任的证书颁发机构签名且域名在证书中。
  • 跳过证书验证会导致连接不安全,存在中间人攻击等风险。
  • 2012 年有论文称应用程序不验证 TLS 证书是 libcurl 的问题,之后 API 有所调整。
  • curl 工具的--insecure选项可关闭证书验证,libcurl 被很多框架和语言使用,存在大量禁用证书验证的代码及安全漏洞。

重要细节:

  • curl 1998 年添加 SSL 支持,2006 年起未破坏 ABI。
  • 2012 年 10 月发布关于 libcurl 的论文,称其接口有问题,之后 API 调整。
  • 2012 年 12 月 7.28.1 版本改变了 CURLOPT_SSL_VERIFYHOST 的工作方式。
  • 2019 年进一步调整 VERIFYHOST 处理。
  • 2025 年在 GitHub 上搜索相关代码有大量匹配,且有近年发布的安全漏洞。
阅读 6
0 条评论