Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Уязвимость в Android < 5.0 (ObjectInputStream)

Как сообщает Jann Horn в рассылке Full Disclosure, в Android 5.0 включили патч, который исправляет уязвимость в объекте java.io.ObjectInputStream. До этого патча java.io.ObjectInputStream не проверял, является ли объект сериализируемым, перед его де-сериализацией.

Атакующему достаточно создать экземпляр любого класса с конструктором без параметров и наполнить его поля случайными значениями. При срабатывании сборщика мусора, у этого экземпляра будет вызван метод finalize. В конечном итоге, если передать этот экземпляр в сервис system_service через Intents с Bundles, произойдет перезапись указателя на адрес, подконтрольный злоумышленнику, и если ему удастся записать нужный payload на этот адрес, код атакующего выполнится с привилегиями system_service.

Хоть в Android и есть ASLR, из-за того, что все процессы запускаются путем форка от zygote, они все имеют примерно одинаковый memory map, так что его можно обойти.

Автор также написал PoC и опубликовал его в рассылке.
Об уязвимости было сообщено 22.06.2014 и ей присвоен номер CVE-2014-7911.

habrahabr.ru