众所周知,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:
推荐软件下载
- 解决了几种类型视频流下载问题;
- 改进了对浏览器下载内容的接管;
- 其它错误修正。