Android 如何确定哪个依赖项导致Google Play OpenSSL警告?

Android 如何确定哪个依赖项导致Google Play OpenSSL警告?,android,openssl,google-play-services,android-security,Android,Openssl,Google Play Services,Android Security,我目前正在从事一个大型遗留项目,并试图修复OpenSSL漏洞问题,如中所述 问题是,有很多依赖项,一些是开源的(我更新了所有没有破坏兼容性的内容),作为Gradle导入添加,一些是自定义/封闭源代码,由我工作的公司的合作伙伴和承包商提供,并作为JAR附加到项目中 是否有任何方法可以确定具有此漏洞的特定库?我使用了在中提供的bash脚本,它指向一个本机依赖项(实际上是.so文件)。是否有任何选项可以从中确定实际的依赖关系 是否有任何选项可以从中确定实际的依赖关系 是的,但是您需要知道有问题的Ope

我目前正在从事一个大型遗留项目,并试图修复OpenSSL漏洞问题,如中所述

问题是,有很多依赖项,一些是开源的(我更新了所有没有破坏兼容性的内容),作为Gradle导入添加,一些是自定义/封闭源代码,由我工作的公司的合作伙伴和承包商提供,并作为JAR附加到项目中

是否有任何方法可以确定具有此漏洞的特定库?我使用了在中提供的bash脚本,它指向一个本机依赖项(实际上是.so文件)。是否有任何选项可以从中确定实际的依赖关系

是否有任何选项可以从中确定实际的依赖关系

是的,但是您需要知道有问题的OpenSSL版本,并且需要
grep
。Windows
find
不起作用

首先,注意有问题的OpenSSL版本。为了便于讨论,请说它是由于OpenSSL 1.0.1h引起的

接下来,收集依赖项及其顶级文件夹的列表。为了便于讨论,可以说它的
$HOME/Desktop/aosp app
$HOME/sdk-a
/usr/local/sdk-b
/opt/local/sdk-c

最后,对于顶级目录:

grep -R '1.0.1h' "$HOME/Desktop/aosp-app"
grep -R '1.0.1h' "$HOME/sdk-a"
grep -R '1.0.1h' /usr/local/sdk-b
grep -R '1.0.1h' /opt/local/sdk-c
您不需要
grep-iR
,这是一种不区分大小写的(
-i
)递归(
-R
)搜索。您也不需要
grep-IR
,这是一种跳过二进制文件(
-I
)的递归(
-R
)搜索

所有这些都可以工作,因为OpenSSL库将其版本作为字符串嵌入到数据部分中。最终,您将找到罪魁祸首,它可能是一个作为共享对象预构建的SDK,但包含作为静态库的OpenSSL。有一个SDK似乎经常被识别,它使用了针对静态OpenSSL库构建的cURL


如果有,则可以执行以下快速测试:

find <dir> -name '*.jar' -exec grep -R '1.0.1h' {} \;
find-name'*.jar'-execgrep-R'1.0.1h'{}\;
该命令将查看目录
及其子目录。它将搜索扩展名为
*.jar
的文件。当它找到一个字符串时,它将在其上运行
grep
,查找字符串
find
将为找到的每个
*.jar
执行此操作