Google Chrome для Android: уязвимость UXSS и раскрытие учетных данных

Google Chrome для Android: уязвимость UXSS и раскрытие учетных данных

Рассмотрим UXSS-уязвимость в браузере по умолчанию в Android, которая позволяет вредоносному приложению внедрить JavaScript-код в контекст произвольного домена и захватить файлы Cookies.

Итак, начнем.

В июле 2011 года Roee Hay и Yair Amit из IBM Research Group обнаружили UXSS-уязвимость в используемом по умолчанию браузере Android. Эта ошибка позволяет вредоносному приложению внедрить JavaScript-код в контекст произвольного домена и захватить файлы Cookies или произвести другие вредоносные действия. 
Эта уязвимость была устранена в версии Android 2.3.5.

21 июня 2012 года для Android был выпущен Google Chrome. Я смог найти в нем весьма интересные ошибки. Взгляните сами.

УЯЗВИМОСТЬ UXSS

Как и ожидалось, эта уязвимость не затрагивает основную деятельность Chrome. Однако давайте рассмотрим файл AndroidManifest.xml из Chrome .apk.

Очевидно, что класс com.google.android.apps.chrome.SimpleChromeActivity можно вызвать из другого приложения, если в нем объявлена директива <intent-filter>.

Декомпилируйте classes.dex из apk и взгляните на класс SimpleChromeActivity.

В представленном выше методе onCreate можно заметить, что новый URL будет загружен в текущей, а не новой вкладке.

Существует два способа запустить эту активность: посредством Android API или Activity Manager. Вызов из Android API немного сложен, поэтому я использовал команду «am» из оболочки adb.

shell@android:/ $ am start -n com.android.chrome/com.google.android.apps.chrome.SimpleChromeActivity -d 'http://www.google.ru'

Мне кажется, эта проблема с отображением содержимого не связана с безопасностью. Судя по заголовку, Chrome загрузил www.google.ru в SimpleChromeActivity вместо Main, а эта активность имеет доступ к базе Cookies в Chrome. Следующим шагом будет внедрение кода JavaScript.

shell@android:/ $ am start -n com.android.chrome/com.google.android.apps.chrome.SimpleChromeActivity -d 'javascript:alert(document.cookie)' 

Вот и все, JavaScript был исполнен в контексте домена www.google.ru.

РАСКРЫТИЕ УЧЕТНЫХ ДАННЫХ

Другая проблема — автоматическая загрузка файлов —стала настоящей головной болью при использовании браузеров, подобных Chrome. Если вы открыли бинарный файл в браузере Chrome, то он загрузится в каталог SDCard без вашего подтверждения. То же самое происходило и в стандартном браузере, в котором такая опция использовалась вредоносной программной NonCompatible. Вы можете спросить, как это связано с раскрытием учетных данных. Взгляните на каталог Chrome в системе.

Только Chrome app может читать эти файлы (такие как Cookies, History и т.д.). Выглядит безопасно. Попробуйте запустить Chrome, используя file:// wrapper, и открыть файл Cookies.

shell@android:/ $ am start -n com.android.chrome/com.android.chrome.Main -d 'file:///data/data/com.android.chrome/app_chrome/Default/Cookies'

После запуска браузера Cookies будут загружаться/копироваться в /sdcard/Downloads/Cookies.bin, и любое приложение в системе сможет их прочитать.

Я предоставил подробную информацию команде безопасности Chromium, и эти ошибки были устранены в версии 18.0.1025308.

Ссылки:
http://code.google.com/p/chromium/issues/detail?id=138035
http://code.google.com/p/chromium/issues/detail?id=138210

 

Домашний Wi-Fi – ваша крепость или картонный домик?

Узнайте, как построить неприступную стену