앱의 WebView SSL 오류 핸들러 알림 해결 방법

이 도움말은 안전하지 않은 WebViewClient.onReceivedSslError 핸들러 구현을 사용한 앱의 개발자를 대상으로 합니다.

현재 상태

하나 이상의 앱에 안전하지 않은 onReceivedSslError 핸들러 구현이 포함되어 있습니다. 이를 포함한 앱은 중간자 공격에 취약합니다. 공격자는 영향을 받은 WebView의 콘텐츠를 변경하고, 전송된 데이터(예: 로그인 사용자 인증 정보)를 읽고, 자바스크립트를 사용해 앱 내부에서 코드를 실행할 수 있습니다. Play Console의 공지를 참조하세요. Play Console에 표시된 기한이 지난 후에도 보안 취약점이 수정되지 않은 앱은 모두 Google Play에서 삭제될 수 있습니다.

필요한 조치​

  1. Play Console에 로그인한 후 알림 섹션으로 이동하여 영향을 받는 앱과 문제 해결 기한을 확인합니다.
  2. 영향을 받는 앱을 업데이트하여 취약점을 수정합니다.
  3. 영향을 받는 앱의 업데이트된 버전을 제출합니다.

제출된 앱은 다시 검토 절차를 거치게 되며 이 절차는 몇 시간 정도 걸릴 수 있습니다. 앱이 검토 과정을 통과하고 게시가 완료되면 더 이상의 조치가 필요하지 않습니다. 앱이 검토 과정을 통과하지 못할 경우 새로운 앱 버전은 게시되지 않으며 이메일 알림을 받게 됩니다.

추가 세부정보

  1. 문제를 해결하려면 서버에서 제공하는 인증서가 요구사항을 충족할 때마다 SslErrorHandler.proceed()를 호출하고 그렇지 않으면 SslErrorHandler.cancel()을 호출하도록 앱 코드를 업데이트하세요. 인증서의 유효성을 검사할 때 다음 사항에 유의하세요.
    1. 앱에 인증서 유효성 검사가 충분히 포함되어 있지 않으면 앱이 신고될 수 있습니다. 예를 들어 getPrimaryError의 반환 값만 검사하는 것은 인증서의 유효성을 확립하는 데 있어서 충분하지 않습니다.

    2. SslError.getPrimaryError에 의해 반환된 대부분의 SSL 오류를 무시하는 것은 안전하지 않습니다. getPrimaryError는 여러 가지 오류 중에서도 가장 심각한 오류를 반환하므로 getPrimaryError() != SSL_UNTRUSTED가 True인 경우 연결에 여러 가지 오류 중 SSL_UNTRUSTED 오류가 여전히 포함되어 있을 수 있습니다.

  2. 이 문제를 일으킨 타사 라이브러리를 사용 중인 경우 타사에 알려 함께 문제를 해결하시기 바랍니다.

SSL 오류 핸들러에 관한 자세한 정보는 Android 개발자 고객센터의 문서를 참조하시기 바랍니다. 다른 기술 관련 질문은 https://www.stackoverflow.com/questions에 'android-security' 및 'SslErrorHandler' 태그를 추가하여 게시하세요.

이러한 문제가 WebView SSL을 사용하는 모든 앱에 영향을 주는 것은 아니지만 모든 보안 패치를 최신 상태로 유지하는 것이 가장 좋습니다. 사용자를 보안 위험에 노출시키는 취약점이 있는 앱은 콘텐츠 정책 및 개발자 배포 계약의 4.4항을 위반하는 위험한 제품으로 간주될 수 있습니다.

도움이 필요한 경우

취약점에 관한 기술적인 문의사항이 있다면 'android-security' 태그를 사용하여 Stack Overflow에 질문을 올려주시기 바랍니다. 이 문제를 해결하기 위해 취해야 할 단계를 명확하게 알고 싶으신 경우 개발자 지원팀에 문의해 주세요.

도움이 되었나요?
어떻게 하면 개선할 수 있을까요?