Обновление Chrome 19 с устранением критических уязвимостей. Детали взлома Chrome, представленного на соревновании Pwnium
Компания Google представила корректирующий выпуск web-браузера Chrome 19.0.1084.52, в котором устранено 13 уязвимостей и представлена порция исправлений ошибок. Две уязвимости имеют характер критических проблем, которые позволяют обойти все уровни защиты браузера и совершить атаку на систему пользователя. Девять уязвимостей отнесены к категории опасных, две - умеренных.
Первая критическая уязвимость найдена в коде с реализацией поддержки работы WebSockets поверх SSL, а вторая связана с возможностью обращения к освобождённой области памяти (use-after-free) в коде работы с браузерным кэшем. Одна из опасных уязвимостей специфична только для платформы Linux и связана с работой GTK UI. Среди других опасных проблем: ошибка в сборщике мусора и обработчике типов JavaScript-движка v8, обращения к освобождённой области памяти при обработке первых символов и при работе с шифрованными PDF, крах в JavaScript-биндинге для плагинов, выход за допустимые границы памяти во встроенном просмотрщике PDF-файлов.
Большая часть исправленных уязвимостей выявлена при помощи инструментария AddressSanitizer, предназначенного для автоматизированного определения фактов обращения к освобождённым областям памяти, выхода за пределы границ выделенного буфера и некоторых других типов ошибок при работе с памятью. В рамках программы выплаты вознаграждений за выявление уязвимостей в Chrome исследователям безопасности выплачено 4837 долларов: три премии по 1000$, одна 1337$ и одна 500$.
Кроме того, можно отметить интересную публикацию в блоге разработчиков Chromium, рассказывающую о методах, использованных при создании сложного эксплоита, продемонстрированного на соревновании Pwnium. Эксплоит позволил организовать выполнение кода в системе, используя для обхода всех уровней защиты браузера сочетание из шести не связанных друг с другом ошибок. Например, для того чтобы задействовать уязвимость в коде работающего вне sandbox-окружения класса для формования вывода, доступного только для расширений и служебных страниц настройки, были дополнительно задействованы несколько уязвимостей, позволивших выполнить действие от имени менеджера расширений и уже через IPC-вызовы от менеджера расширения эксплуатировать проблему в коде рендеринга.