Польская компания Security Explorations в уходящем году стала знаменитой на весь мир, после того как обнаружила несколько критических уязвимостей в Java. Это привело к значительным последствиям, так что в итоге некоторые специалисты по безопасности стали рекомендовать вовсе отключить Java-плагины в браузерах.
С апреля по сентябрь 2012 года было найдено более 50 уязвимостей различной степени опасности. В компании Oracle, IBM и Apple были отправлены фрагменты кода proof-of-concept с демонстрацией возможных эксплойтов для найденных багов. Почти все они были закрыты в октябрьском обновлении Java SE, хотя уязвимость с полным выходом из песочницы не закрыта до сих пор (см. уязвимость № 50 в отчётах Security Explorations), её оставили на февраль 2013 года. Специалисты Security Explorations говорят, что баг исправляется за 30 минут, так что можно сделать соответствующие выводы о профессионализме сотрудников Oracle.
Сейчас, по прошествии достаточного времени, Security Explorations имеет право раскрыть информацию для широкой публики. Компания опубликовала подробный технический отчёт (pdf) и презентацию (pdf) с описанием закрытых уязвимостей, а также обзор общей архитектуры безопасности Java VM и её слабых мест.
Архитектура безопасности Java VM
Несколько дней назад компания обновила страницу проекта и добавила туда демонстрационный код для осуществления описанных эксплойтов.
Кстати, в презентации для Java-конференции Devoxx (12 ноября 2012 г.) представители Security Explorations объясняют, что, хотя их фирма была создана совсем недавно, но они успешно занимаются поиском уязвимостей в Java с 2002 года. Получается, что ребят можно считать чуть ли не самыми опытными в мире экспертами в этой теме. Методы работы с Reflection API, которые используются для осуществления эксплойтов вышеупомянутых уязвимостей, были обнаружены семь лет назад, но держались в секрете и никем не публиковались до сих пор.
Специалисты Security Explorations подчёркивают, что уязвимости Java не ограничиваются только браузерами, баги есть и в серверной части, особенно в протоколе RMI и десериализации XML Beans.
Java 7 выглядит менее защищённой, чем Java 6, а наличие многочисленных проблем в новом интерфейсе Reflection API указывает на недостаточно качественно проведённый анализ безопасности, говорят представители Security Explorations.