Итак, начнем. В июле 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
Автор: Артем Чайкин.
Автор: ptsecurity