2016-12-22 3 views
1

내 Android 용 앱은 Checkmarx를 사용하여 보안 문제를위한 소스 코드를 검사합니다. Checkmarx는 Google Volley 라이브러리에 문제가 있음을보고합니다. 다음은 오류 설명입니다checkmarx이 Volley에 대해 REFELCTED_XSS_ALL_CLIENT를보고했습니다.

방법 performRequest 라인 89에서는의 \ 응용 프로그램 \ 라이브러리 \ 발리 \ SRC \ 주 \ 자바는 \ COM은 안드로이드 \ 발리 \ 도구 상자 \ \ HurlStack.java 는 대해 getHeaders에 대한 사용자 입력을 취득하는 요소. 이 요소의 값인 은 적절하게 새 니타 이징되거나 유효성이 검사되지 않고 코드를 통과하여 결국 의 parseNetworkResponse \ app \ libraries \ volley \ src \ android \ volley의 61 행에 사용자에게 표시됩니다 \ toolbox \ JsonArrayRequest.java. 이 경우 교차 사이트 스크립팅 공격이 가능할 수 있습니다.

public HttpResponse performRequest(Request<?> request, Map<String, String> additionalHeaders) 
      throws IOException, AuthFailureError { 
     String url = request.getUrl(); 
     HashMap<String, String> map = new HashMap<String, String>(); 
     map.putAll(request.getHeaders()); 
     map.putAll(additionalHeaders); 
    .... 
} 

그것은 요청의 헤더가 캐시 나중에 JsonArrayRequest::parseNetworkResponse에서 사용자에게 표시됩니다 말한다. 그러나 그것은 사용자에게 전혀 표시되지 않습니다. 이것은 잘못된 경보입니까? 그리고 Android 앱에서 Cross-Site-Scripting 공격이 발생할 수있는 조건은 무엇입니까? 웹 뷰를 사용할 때만 발생합니까?

답변

2

마지막 질문에 먼저 대답 해주십시오. 예, 거의 WebViews 만 영향을받습니다. XSS 페이로드를 파일에 저장하고 나중에 브라우저에서 열면 다른 (덜 일반적인) 시나리오가 될 수 있습니다.

HTTP 헤더는 XSS의 유효한 벡터로 간주되므로 잘못된 경보로 보지 않습니다.

: 여기에 추가 읽기를위한 두 개의 리소스입니다
관련 문제