Исследователи кибербезопасности из сообщества LGTM обнаружили критическую уязвимость в Apache Struts — популярной платформе с открытым исходным кодом для разработки веб-приложений на языке Java.
Команда разработчиков Apache Struts подтвердила серьезность проблемы и уже выпустила патч. Найденная уязвимость позволяет злоумышленнику удаленно выполнить произвольный код на любом сервере, где запущено приложение, построенное с использованием Apache Struts и плагина REST. Проблема заключается в том, что Apache Struts некорректно десериализует недоверенные данные.
В ходе атаки хакер может собрать данные на сервере и отправить их, куда пожелает. Также сервер можно использовать как точку доступа к другим участкам той же сети, причем корпоративные файерволы не смогут их защитить.
По словам исследователя Ман Юэ Мо (Man Yue Mo), обнаружившего баг, использовать его предельно просто — хакеру достаточно обычного веб-браузера. Команда LGTM сообщает, что у них есть простой рабочий эксплойт для этой уязвимости, которые они пока не публикуют.
Зона поражения
Исследователь Финтан Райан (Fintan Ryan) из аналитической фирмы RedMonk утверждает, что как минимум 65% крупнейших компаний, входящих в рейтинг Fortune 100, активно используют приложения, созданные с помощью Apache Struts. Точно известно, что такие приложения есть у авиастроительной компании Lockheed Martin, финансового конгломерата Citigroup, сотового оператора Vodafone, авиакомпании Virgin Atlantic, популярного американского журнала Reader’s Digest, поставщика товаров для офиса Office Depot, телеканала Showtime и даже у Налогового управления США.
По словам Ман Ю Мо, приложения на основе Apache Struts особенно широко используются в сервисах покупки авиабилетов, а также в финансовых организациях. Опрошенный командой LGTM глава службы безопасности банка, использующего стандарт Tier 1, подтвердил, что Apache Struts повсеместно используется на сайтах и приложениях, и что для решения проблемы недостаточно будет просто применить патч, придется менять сам код. По его словам, последствия использования этого бага могут быть хуже, чем у нашумевшей уязвимости Poodle, найденной в протоколе SSL 3.0 в 2014 г.
Что такое Apache Struts
Apache Struts — это фреймворк с открытым исходным кодом, с помощью которого пишутся веб-приложения на Java EE. Фреймворк базируется на Java Servlet API и предусматривает реализацию паттерна MVC. Apache Struts был разработан Крейгом МакКланаханом (Craig McClanahan), Apache Foundation получила его в мае 2000 г. Изначально развивался в рамках Apache Jakarta Project и назывался Jakarta Struts. В 2005 г. стал проектом Apache верхнего уровня.
Struts был создан с целью отделить модель, то есть логику приложения, которая взаимодействует с базой данных, от представления HTML-страницы и от контроллера, передающего данные между представлением и моделью. У Apache Struts есть ответвление — фреймворк WebWork такой же архитектуры, но с рядом усовершенствований. В декабре 2005 г. было объявлено, что Struts снова объединится с WebWork. WebWork 2.2 был обозначен как Apache Struts 2, выпущенный в феврале 2007 г.