软件供应商在用户桌面上部署 SSL 拦截代理会带来哪些安全风险(例如 Superfish)

信息安全 tls 恶意软件 代理人
2021-09-02 10:55:52

最近发现联想正在预安装一个广告软件(Superfish),该广告软件能够拦截来自安装它的机器的 SSL 流量,引起了相当多的关注。

让 OEM 或其他公司将此类软件安装到客户系统上会带来哪些安全风险?

4个回答

拥有代理 SSL 证书会产生一些隐私和安全隐患:

  • Superfish 可以冒充任何网站

    这并不意味着 Superfish 会做(或正在做),但他们有能力。由于他们拥有证书颁发机构证书,因此他们生成的任何证书都将有效并被接受。

    证书固定也不能保护您

    “在许多情况下,HTTPS 连接被使用本地临时证书拦截。这些证书由必须手动安装在客户端上的根证书签名。企业 MITM 代理可能会这样做,几个防病毒/父母“

    如果您使用 Windows 和 EMET,如果您事先配置,证书信任可以保护您。但这个过程是手动的,有些复杂。

  • Superfish可以拦截流量

    作为受信任的 CA,Superfish 可以对任何站点进行MiTM 攻击,普通用户不会检测到攻击。精明的用户可以看到证书是由一个奇怪的 CA 签署的,如果他们知道去哪里看的话。

  • Superfish 可以在任何地方注入代码

    即使网站受到 SSL/TLS 保护,Superfish 也可以在每个页面上注入 Javascript 或 HTML。他们只是代理请求,向目标服务器发出请求,读取响应,注入数据并将数据发送给用户。除非你正在寻找它,否则你永远不会注意到。

  • Superfish 可用于安装恶意软件

    和上面一样,Superfish 可以将代码添加到 Windows 更新、更改正在下载的可执行文件、感染 Java 小程序、Flash 文件等。任何下载都可能被无声地破坏。他们甚至可以更改原始站点并在其上放置更改的校验和,因此即使您在下载文件后计算哈希值,它们看起来也是合法的。

  • Superfish 可以知道您访问的每个站点

    该软件监控您的浏览器并将数据发送到 Superfish。即使没有该软件,他们也可以在每个站点上注入代码并随时随地跟踪您。

  • 网络上的任何人都可以使用其证书

    证书的私钥已被泄露,因此任何知道密钥的人都可以使用 Superfish 证书为他们想要的任何东西创建有效的 SSL 证书。

他们可以并不意味着或暗示他们会,只是他们有权(或被迫)做。

以下是您使用此特定软件所面临的一些风险:

  • 它为每个安装使用相同的私钥。由于关联的是根 CA 并插入到您的私有信任列表中,因此任何人都可以轻松生成任何证书并让受影响的客户端信任它(在这种情况下,即使服务器证书固定也无济于事)。
  • 所有数据都由软件检查:很可能(甚至很可能)通常应受 SSL 加密保护的部分数据正在传输到软件供应商并在那里进行分析。即使该供应商非常诚实(考虑到其产品的性质和分发方式,这已经有些令人怀疑),它也会使您的数据容易受到他们一方发生的任何破坏的影响。
  • 与所有软件一样,会出现错误。使用它会增加系统的攻击面。

作为次要问题,此类软件隐藏了数据加密方式的真实性质。由于该软件用自己的证书替换已知证书,因此用户对原始证书知之甚少。软件如何将其传达给用户?如果原始证书已过期或不匹配,如何将其发送给用户?如果站点通常由一个 CA 签名但更改为另一个,那么人们怎么知道?其次,用户界面公开了数据在传输过程中是如何受到保护的。用户界面无法显示原始连接是不安全的(例如 SSL2、空证书等),因为它仅显示从本地代理到用户的加密级别。

基于 Superfish 的另一项重大更新:Komodia 客户端 SSL 验证已损坏!

由 OEM 或 Komodia 等第三方开发的 SSL 拦截代理(或任何内部加密软件)的主要问题是您不能真正信任它们(尤其是在 Superfish 嗡嗡声之后)!此新更新的 TLDR:攻击者甚至不需要提取根密钥来针对受害者进行中间人攻击。由于 Komodia 处理无效/不受信任/自签名证书的方式存在缺陷,因此很容易绕过 SSL 证书验证过程(通过在证书中设置备用名称)。查看上面链接的帖子以获取详细信息

经验教训:实施加密软件(包括拦截代理)并非易事。在用于生产之前,必须对此类软件进行适当的设计分析(来自多位加密专家)、严格的测试和评估。引用这个问题的一个很棒的答案为什么我们不应该自己动手?

你可以自己动手,但如果你不是安全/密码学方面的专家,或者你的方案已经被多位专家分析过,你可能会犯一个重大的安全错误。我更愿意押注一个开源的、众所周知的加密方案,所有人都可以看到和分析。与非专家内部开发的东西相比,更多的眼睛意味着当前版本没有重大漏洞的可能性更小。