Pull to refresh

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

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

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

Уязвимость UXSS


Как и ожидалось, эта уязвимость не затрагивает активити “Main” Хрома. Однако давайте рассмотрим файл 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

Автор: Артем Чайкин (artemchaykin).
Tags:
Hubs:
Total votes 58: ↑52 and ↓6 +46
Views 23K
Comments Comments 9

Information

Founded
2002
Location
Россия
Website
www.ptsecurity.com
Employees
1,001–5,000 employees
Registered