파일 기반 XSS 취약성 문제 해결

파일 기반 교차 사이트 스크립팅에 취약한 앱 개발자를 위해 작성된 정보입니다.

현재 상태

하나 이상의 앱에 해결해야 하는 파일 기반 교차 사이트 스크립팅 취약점이 있습니다. Play Console의 공지를 참조하세요. Play Console에 표시된 기한이 지난 후에도 보안 취약점이 수정되지 않은 앱은 모두 Google Play에서 삭제될 수 있습니다.

필요한 조치​

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

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

추가 세부정보

WebSettingssetAllowFileAccessFromFileURLs 또는 setAllowUniversalAccessFromFileURLs가 true로 설정된 WebViews에서 신뢰할 수 없는 웹 콘텐츠를 로드해서는 안 됩니다. HTTP를 통해 로드된 신뢰할 수 있는 도메인의 콘텐츠도 로드해서는 안 됩니다. 악성 웹 콘텐츠나 네트워크에서 스크립트를 삽입하여 WebView를 악성 로컬 파일로 리디렉션하거나 교차 사이트 스크립팅 공격을 실행하여 비공개 로컬 파일이나 쿠키에 액세스할 수 있기 때문입니다.

다음 중 한 가지 조치를 통해 이러한 취약성이 발생하지 않도록 해야 합니다.

  1. WebView에 위험한 설정이 포함되지 않도록 합니다.
  2. WebView에서 로컬 파일을 로드하거나 자바스크립트를 실행할 수 없도록 합니다.
  3. 위험한 설정이 포함된 WebView에서 신뢰할 수 없는 웹 콘텐츠를 로드하지 않도록 합니다.

1. WebView에 위험한 설정이 포함되지 않도록 설정

Manifestandroid:targetSdkVersion을 16 이상으로 업데이트하여 WebView에서 안전한 기본 설정을 사용할 수 있습니다. 또는 setAllowFileAccessFromFileURLs(false)setAllowUniversalAccessFromFileURLs(false)를 호출하여 WebView가 안전한지 확인합니다.

2. WebView에서 로컬 파일을 로드하거나 자바스크립트를 실행할 수 없도록 설정

setAllowFileAccess(false)를 호출하여 위험한 설정이 포함된 WebView에서 로컬 파일을 로드할 수 없게 하거나 setJavaScriptEnabled(false)를 호출하여 위험한 설정이 포함된 WebView에서 자바스크립트 코드를 실행할 수 없게 합니다.

3. 위험한 설정이 포함된 WebView에서 신뢰할 수 없는 웹 콘텐츠를 로드하지 않도록 설정

WebView에서 위험한 설정을 사용해야 하는 경우 신뢰할 수 없는 웹 콘텐츠를 로드하지 않도록 해야 합니다. HTTP를 통해 로드되는 웹 콘텐츠도 로드해서는 안 됩니다. android:usesCleartextTraffic=false로 설정하거나 Manifest에서 HTTP 트래픽을 허용하지 않도록 Network Security Config를 설정하세요. 또는 위험한 설정이 포함된 모든 WebView에서 어떤 HTTP 스키마의 URL도 로드하지 않도록 할 수도 있습니다.

또한 위험한 설정이 포함된 WebView에서 출처를 신뢰할 수 없는 URL을 로드하지 않도록 해야 합니다.

도움이 필요하신가요?

취약점에 관한 기술적인 문의사항이 있다면 'android-security' 태그를 사용하여 Stack Overflow에 게시해 주시기 바랍니다. 문제 해결 절차에 관해 궁금하신 점이 있으면 Google 개발자 지원팀에 문의하세요.

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