CVE-2019-5765分析

简述

CVE-2019-5765的原理比较简单。Chrome Android客户端注册了一个broadcast receiver, 当接收到(app_package)_GPU_PROFILER_START广播后,会开启trace, 并将所有的url请求和header(不包含cookie)保存在文件中。

然而,这个receiver未做好权限控制,导致任意第三方应用都可以发送该广播开启chrome的trace,而且还可以指定trace log的保存路径,恶意应用通过读取trace log文件可以窃取用户所有的浏览记录。

影响范围

该漏洞影响所有chrome内核版本小于72.0.3626.81的浏览器,例如webview、第三方浏览器等等。

通常,该漏洞的利用需要攻击者在用户手机上安装一个恶意apk,通过发送广播可以获取目标浏览器或webview上所有的浏览记录,以及用户的登录凭据(例如Oauth token, header里的敏感token)等。

PoC

  1. 发送广播开启trace

    1
    adb shell am broadcast -a com.android.chrome.GPU_PROFILER_START
  2. 在目标浏览器中打开一个页面

  3. 发送广播关闭trace
    1
    adb shell am broadcast -a com.android.chrome.GPU_PROFILER_STOP

trace log默认保存在/sdcard/Download/目录下,例如”/sdcard/Download/chrome-profile-results-2019-05-24-084507“,使用adb shell am broadcast -a com.android.chrome.GPU_PROFILER_START -e file mypath可以指定保存路径。

漏洞修复

修复方式为”只有debug版本的系统才会注册该receiver“

upload successful

总结

  • Android 7.0之后,系统webview使用Chrome的引擎,因此更新Chrome即可修复漏洞。在安装Play Store的系统上,Chrome和系统内置webview会自动更新到最新版本。Android 7.0之前的系统需要更新系统内置的webview

  • 未安装Play Store的AOSP系统(三星、华为、小米、oppo、vivo等)需要厂商来更新,因此多数第三方ROM手机或定制webview浏览器厂商受该漏洞影响。

  • 部分定制化的浏览器对chrome内核进行了修改,因此也有可能不存在这个漏洞

参考资料:

  1. chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=922627
  2. chrome fix log https://chromium.googlesource.com/chromium/src.git/+/318a79045ace18d73e1115d086599e036d0496ba%5E%21/#F0
  3. https://hackerone.com/reports/563870