Hyn*_*rix 27 android openssl android-ndk google-play
我刚刚收到来自Google Play的电子邮件,说明:
你好,
您的一个或多个应用程序运行的是过时的OpenSSL版本,该版本存在多个安全漏洞.您应该尽快更新OpenSSL.有关OpenSSL中最新安全漏洞的更多信息,请访问 http://www.openssl.org/news/secadv_20140605.txt.
请注意,虽然尚不清楚这些特定问题是否会影响您的应用程序,但是具有漏洞的应用程序可能会将用户置于危险之中,可能被视为"危险产品",并且可能会从Google Play中删除.
问候,
Google Play团队
©2014 Google Inc. 1600 Amphitheatre Parkway Mountain View,CA 94043
电子邮件偏好设置:我们向您发送这封必读的电子邮件服务通告,目的是让您了解Google Play帐户的重大变化.
我没有在任何应用程序中明确包含OpenSSL.使用Android NDK的应用程序正在使用NDK 9d(最新版本).我使用的唯一外部本机库是ffmpeg和OpenCV以及一些没有包含本机代码的广告库.
还有哪些地方可以包含OpenSSL导致此警告?
问候,
cal*_*er9 21
我编写了一个bash脚本,它将显示应用程序中静态链接的任何内容的OpenSSL版本以及是否包含TLS心跳方法.
这适用于我投掷的少量APK.OpenSSL版本字符串是使用版本号和日期专门提取的.如果Google标记了APK并且无法找到它,请将egrep命令中的OpenSSL正则表达式放松到"OpenSSL"并查看它的位置.
将以下内容放在文件中,例如testopenssl.sh
用法:./ testopenssl.sh APK_File
#!/bin/bash
sslworkdir="ssl_work_dir"
if [ ! -d $sslworkdir ]; then
mkdir $sslworkdir
fi
unzip -q "$1" -d $sslworkdir
#Set delimiter to ignore spaces
IFS=$'\r\n'
#Create an array of OpenSSL version strings
opensslarr=($(egrep --binary-files=text -o -R -e "OpenSSL\s\d+\.\d+\.\d+\w+\s\d+\s\w+\s\d+" $sslworkdir/*))
#Stackoverflow syntax highlight fix closing 'block comment' */
if [ ${#opensslarr[@]} -gt 0 ]; then
echo "Found OpenSSL versions"
printf "%s\n" "${opensslarr[@]}"
heartbeatarr=($(grep -R -E "(tls1_process_heartbeat|dtls1_process_heartbeat|dtls1_heartbeat|tls1_hearbeat)" $sslworkdir/*))
#Stackoverflow syntax highlight fix closing 'block comment' */
if [ ${#heartbeatarr[@]} -gt 0 ]; then
echo "Files that contains heartbeat methods:"
printf "%s\n" "${heartbeatarr[@]}"
else
echo "No libraries contain heartbeat methods"
fi
else
echo "Did not find OpenSSL"
fi
rm -rf $sslworkdir
Run Code Online (Sandbox Code Playgroud)
根据Android安全讨论邮件列表中的Eric Davis对安全警报的回应:您正在使用OpenSSL的高度易受攻击的版本:
("$ unzip -p YourApp.apk | strings | grep "OpenSSL"")当您收到此消息,您应该更新双方的NDK和IDE你正在使用.我已经看到NDK的某些版本的报告,包括一个下层标题.我还怀疑你使用的IDE可能提供了一个低级的OpenSSL版本(我没有在Android上使用IDE,所以我还没有遇到它).
如果您不是直接使用OpenSSL,那么SDK将提供易受攻击的OpenSSL版本.在这种情况下,您应该更新SDK.如果您需要在SDK中找到下层OpenSSL,请参阅如何检查哪个依赖导致OpenSSL漏洞.
谷歌还提供更新您的安全提供程序以防止SSL攻击,但我怀疑它仍然会触发该消息,因为它似乎是一个基本的字符串搜索.
它通常更容易更新所有内容,而不是试图找出谁提供低级版本的OpenSSL.在您花时间确定提供者之后,您的可操作项目是相同的:更新SDK.那么为什么要浪费时间呢?只是更新所有这些,并享受其他错误修复.
但仍有一些悬而未决的问题:如果一个人使用加密技术libcrypto(例如(RAND_bytes或EVP_encrypt)而不是SSL/TLS函数libssl(例如SSL_connect),它是否仍然会触发警告?也就是说,谷歌正在扫描使用易受攻击的功能,或谷歌正在扫描OpenSSL版本strings.
| 归档时间: |
|
| 查看次数: |
21589 次 |
| 最近记录: |