GoAgent漏洞可导致中间人攻击风险

(编辑:jimmy 日期: 2024/11/8 浏览:2)

GoAgent漏洞可导致中间人攻击风险
  • 软件作者: Jimmy
  • 软件大小:
  • 软件类别: 国产软件
  • 软件语言: 简体中文
  • 软件评级:
  • 运行环境: XP/Win7/Win8/Win10
  • 更新时间: 2017年01月07日
  • 软件授权: 免费版/破解版/去广告纯净版
  • 所需点数: 0
  • 插件情况:
  • 相关链接:
  • 演示地址:
软件下载:
软件介绍:

众所周知,GoAgent利用 Google App Engine(GAE) 来翻墙代理上网的一个工具,深受网民的欢迎。但是,大家是否知道GoAgent 的安装和配置中存在两点严重安全风险的问题却鲜为人知。(以下为国外原文,对少数句子词语和标点进行了调整。)

GoAgent 导入公开私钥的根证书的问题

· 测试页面

· 如何防范风险

· 如何删除 GoAgent CA 证书

GoAgent 没有进行正确的 TLS 验证,存在中间人攻击的风险 

· 如何防范风险

GoAgent (https://github.com/goagent/goagent) 利用 Google App Engine(GAE) 来代理上网的一个工具,深受网民的欢迎。但是,GoAgent 的安装和配置中存在两点严重安全风险的问题却鲜为人知。这两点安全风险都可能被攻击者利用进行 “中间人攻击(man-in-the-middle attack)” 来窃取 GoAgent 用户的网络帐号密码等敏感信息,其概括描述如下:

-   GoAgent 在启动时会尝试自动往系统的可信根证书中导入一个名为 “GoAgentCA” 的证书。由于这个证书的私钥是公开的,导致任何人都可以利用这个私钥来伪造任意网站的证书,进行 HTTPS 中间人攻击。即使在不开启 GoAgent 时,这种攻击的风险仍然存在。换而言之,一旦这个证书被导入,攻击者可以用此绕过几乎所有网站的 HTTPS 保护。

-  GoAgent 本身对 TLS 证书的认证存在问题,而且默认时不对证书进行检查,这导致在使用 GoAgent 时存在 HTTPS 中间人攻击的风险。

事实上曾经有用户在 GoAgent 主页上的问题跟踪列表中指出了这两个安全问题(见以下链接),但既没有修复也没有广泛公开,多数用户,尤其是非中文用户可能并不知情。下面是这两个问题的详细解释。

-   https://code.google.com/p/goagent/issues/detail?id=11091 

  -   https://code.google.com/p/goagent/issues/detail?id=8031 

GoAgent 导入公开私钥根证书的问题 

GoAgent 在启动时会尝试在系统中导入一个根证书来避免访问 HTTPS 网站时的证书报警,但在默认情况下所导入证书的私钥是公开的。因为私钥公开,任何人可以作为 “GoAgent CA” 来签发任何网站的证书。即使在 GoAgent 没有启动甚至卸载的情况下,这个公钥仍会遗留在系统中。在有些系统中,GoAgent 所导入的根证书不仅被 GoAgent 默认使用的浏览器信任,其他的浏览器也可能会信任这一根证书,从而受到这一问题的影响。

GoAgent 所导入的这一公开私钥根证书的指纹是:

SHA1 Fingerprint=AB:70:2C:DF:18:EB:E8:B4:38:C5:28:69:CD:4A:5D:EF:48:B4:0E:33MD5 Fingerprint=56:B1:20:86:1B:0A:B0:61:38:00:1B:C3:67:CF:0C:CC

包含这一 “GoAgent CA” 证书以其私钥(文件中 “—–BEGIN RSA PRIVATE KEY—–” 位置)的文件 URL 为: 

https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/local/CA.crt 

根据版本信息,这一证书和私钥从 2011 年 6 月甚至更早的时间以来一直保持不变。 

https://github.com/goagent/goagent/blob/fa9959e577395e48a477fd5495afbc2363a51baa/local/CA.key 

GoAgent 主要包含两个部分:一个在用户计算机上运行的本地代理程序proxy.py,以及一个在 GAE 上运行的远程代理程序 gae.py。 

https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/local/proxy.py 

https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/server/gae/gae.py

安装时,用户需要上传 gae.py 到 GAE。用户浏览器通过设置一个本地代理将HTTP/HTTPS 请求转发到 proxy.py,再由 proxy.py 和 gae.py 进行通信。

默认情况下,GoAgent 在启动时试图导入上述 GoAgent CA 证书。具体的代码为proxy.py 中的 CertUtil.import_ca: