2016-07-04 65 views
1

我目前正在研究一個大型的遺留項目,並試圖修復OpenSSL漏洞問題,如How to address OpenSSL vulnerabilities in your apps所述。如何確定哪些依賴性會導致Google Play OpenSSL警告?

問題是,有很多依賴關係,有些是開放源代碼(我更新了所有沒有打破兼容性的問題)作爲Gradle導入添加,有些是由合作伙伴和公司承包商提供的自定義/關閉源作爲JAR工作並附屬於該項目。

有沒有什麼方法可以查明具有此漏洞的特定庫?我使用了Google Play and OpenSSL warning message提供的bash腳本,它指向一個本地依賴項(實際上是.so文件)。有沒有任何選項可以從那裏查明實際的依賴關係?

回答

2

有沒有任何選項可以從那裏查明實際的依賴關係?

是的,但你需要知道有問題的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似乎經常被識別出來,它使用的cURL是針對靜態OpenSSL庫構建的。


如果你有JAR files and suspect them,那麼你可以執行以下的快速測試:

find <dir> -name '*.jar' -exec grep -R '1.0.1h' {} \; 

該命令將查找的目錄<dir>及其子目錄。它將搜索擴展名爲*.jar的文件。當它找到一個,它會運行grep上尋找字符串。 find會爲它找到的每個*.jar

相關問題