2016-07-04 2 views
1

저는 현재 큰 레거시 프로젝트를 진행 중이고 How to address OpenSSL vulnerabilities in your apps에서 설명한 OpenSSL 취약성 문제를 해결하려고합니다.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 

구분하지 않는 경우 (-i) 재귀 (-R) 검색하지 필요 grep -iR을 수행 당신. 이진 파일 (-I)을 건너 뛰는 재귀 (-R) 검색 인 grep -IR도 필요하지 않습니다.

OpenSSL 라이브러리는 해당 버전을 데이터 섹션에 문자열로 포함시키기 때문에이 모든 작업이 가능합니다. 결국에는 공유 객체로 사전 빌드되어 제공되지만 OpenSSL을 정적 라이브러리로 포함하는 SDK 인 범인에 해당합니다. 하나의 SDK는 빈번하게 식별되는 것으로 보이며 정적 OpenSSL 라이브러리에 대해 빌드 된 cURL을 사용합니다.


당신이 JAR files and suspect them이있는 경우

는, 당신은 빠른 테스트로 다음을 수행 할 수 있습니다

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

명령은 디렉토리 <dir>와 그 하위 디렉토리에서 찾게됩니다. 확장자가 *.jar 인 파일을 검색합니다. 하나를 찾으면 grep을 실행하여 문자열을 찾습니다. find은 발견 할 때마다 *.jar에 해당됩니다.