노블의 개발이야기

[Android] Android O - WebView Security 본문

Android

[Android] Android O - WebView Security

더플러스 2017. 8. 17. 13:55

WebView Security

앱의 네트워크 보안 구성에서 지원하는 일반 텍스트 트래픽을 옵트아웃하는 경우, 이 앱의 WebView 객체가 HTTP를 통해 웹사이트에 액세스할 수 없습니다. 각 WebView 객체는 대신 HTTPS를 사용해야 합니다.

Opting Out of Cleartext Traffic (일반 텍스트 트래픽 옵트아웃)

보안 연결만 사용하여 대상에 연결하려는 어플리케이션은 해당 대상에 일반 텍스트(HTTPS 대신 암호화되지 않은 HTTP 프로토콜 사용)를 지원하지 않도록 선택할 수 있습니다.

이 옵션은 백엔드 서버와 같은 외부 소스에서 제공한 URL 변경으로 인해 앱이 실수로 회귀(regression)하는 것을 방지합니다.

예를 들어 앱은 네트워크에서 중요한 트래픽을 보호하기 위해 secure.example.com에 대한 모든 연결이 항상 HTTPS를 통해 이루어지도록 보장할 수 있습니다.

res/xml/network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

What's new in WebView security

외부 및 신뢰할 수 없는 콘텐츠 처리는 앱의 가장 중요한 기능 중 하나입니다. 신뢰할 수 없는 콘텐츠 처리는 침입자가 앱을 손상시킬 수 있는 주요 방법 중 하나입니다.

많은 앱이 WebView를 사용하여 신뢰할 수 없는 콘텐츠를 처리하며 Android에서는 Android와 앱을 보호하기 위해 여러 해 동안 많은 부분을 개선했습니다.

Isolating the renderer process in Android O (Android O에서 렌더러 프로세스 분리)

Android O부터 WebView 렌더러는 호스트 앱과 별도로 분리된 프로세스에서 실행하게 됩니다.



image

Chrome과 마찬가지로 WebView는 다음과 같은 두가지 수준의 격리 수준을 제공합니다.

  • 렌더러 엔진이 별도의 프로세스로 분할되었습니다. 이렇게 하면 호스트 응용 프로그램이 렌더러 프로세스의 버그 또는 충돌로 부터 격리되고 렌더러를 악용할 수 있는 악성 웹 사이트가 호스트 응용프로그램을 악용하는 것이 더 어려워집니다.

  • 렌더러 프로세스는 제한된 리소스 세트로 제한되는 격리된 샌드박스 내에서 실행됩니다. 예를 들어, 렌더링 엔진은 디스크에 쓰거나 네트워크에 직접 말할 수 없습니다. 또한 Android의 Chrome에서 사용되는 것과 동일한 seccomp 필터 (seccomp의 blogpost가 곧 제공됨)에도 바인딩 됩니다. seccomp 필터는 렌더러 프로세스가 액세스할 수 있는 시스템 호출 수를 줄이고 시스템 호출에 허용된 arguments를 제한합니다.

Incorporating Safe Browsing (안전 브라우징 통합)

최신 버전의 WebView는 Google의 세이프 브라우징(Safe Browsing) 보호 기능을 통합하여 잠재적으로 위험한 사이트를 감지하고 사용자에게 경고합니다.

올바르게 구성하면 WebView는 안전 브라우징의 악성 코드 및 피싱 데이터베이스에 대한 URL을 확인하고 사용자가 위험한 사이트를 방문하기 전에 경고 메시지를 표시합니다.



image





Enabling Safe Browsing (안전 브라우징 사용)

앱의 모든 WebView에 대해 세이프 브라우징을 사용하려면 매니페스트 태그를 추가합니다.

<manifest>
     <meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
                android:value="true" />
      . . .
     <application> . . . </application>
</manifest>

Android 5.0 이상을 실행하는 기기에서 WebView의 세이프 브라우징을 사용할 수 있습니다. 매니페스트에 태그만 추가하면 대부분의 사용자에 대한 보안을 즉시 개선할 수 있습니다.


Comments