【发布时间】:2014-11-21 11:52:33
【问题描述】:
最近收到一封警告信,说我的应用程序安全受到威胁。
---------- Forwarded message ----------
From: CERT Coordination Center <cert@cert.org>
Subject: SSL Vulnerability in ********* VU#582497
Cc: cert@cert.org
这封信包含以下信息: 我们最近一直在使用 CERT Tapioca 进行评估 http://www.cert.org/blogs/certcc/post.cfm?EntryID=203SSL的使用 通过 Android 应用程序。通过自动化测试,我们正在记录应用程序 导致通过 HTTPS 连接发送或接收流量 无效的 SSL 证书链。以下应用程序已经证明了这种不正确的行为。
可能会影响测试结果的一些注意事项:
1) 我们尚未调查通过 HTTPS 发送的内容 使用无效的 SSL 证书链。如果信息不 敏感,有人可能会争辩说该漏洞并不真正 有影响。然而,另一个论点是使用 未经验证的 SSL 是一个需要纠正的漏洞, 无论发送或接收的内容如何。
2) 可能是您的应用程序本身正确使用了 SSL,但它 包含一个第三方库,该库本身执行不正确的 SSL 验证。在这种情况下,这个第三方库需要 被更新。或者如果修复不可用,图书馆的作者 应该通知他们,让他们知道他们需要修复 图书馆。
3) 由于我们在动态测试中使用的 UI 自动化 执行时,应用程序或 应用程序使用的浏览器组件确实正确警告 用户在继续之前。如果 UI 自动化确实发生了点击 尽管证书无效,仍需要继续的按钮,然后 这可以被认为是误报。如果你相信这 如果是这种情况,请回复并让我们知道。
根据要求,我使用 robospice-spring-android。 ssl 用法:
static {
try {
SSLContext sslc = SSLContext.getInstance("TLS");
TrustManager[] trustManagerArray = {new NullX509TrustManager()};
sslc.init(null, trustManagerArray, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new NullHostnameVerifier());
} catch (Exception e) {
}
}
private static class NullX509TrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
private static class NullHostnameVerifier implements HostnameVerifier {
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
任何人都可以就这个问题提出建议。我的错是什么?
【问题讨论】: