Рубріки: Новости

В Java Spring Framework нашли критическую уязвимость — кто может пострадать

Ігор Грегорченко

Не успел мир отойти от громкой уязвимости Apache Log4j2 (CVE-2021-44228), как в сети появились сообщения о новой, не менее опасной 0-day уязвимости. В Spring Framework для Java обнаружено сразу несколько уязвимостей «нулевого дня», которые позволяют удаленно выполнять произвольный код (RCE).

 

Почему это важно

 29 марта 2022 года с китайского аккаунта в Twitter был опубликован набор твитов (ныне удаленных), в которых были показаны скриншоты нового POC-эксплойта 0-day в популярной Java-библиотеке Spring Core.

На момент написания этой новости, уязвимость находится в статусе wild, то есть не имеет номера CVE, связанного с этой уязвимостью, а пользователи в сети называют ее Spring4Shell или или как SpringShell.

Учитывая распространённость Spring Framework, специалисты справедливо опасаются грандиозного погрома в ближайшие недели-месяцы. Важно учитывать два момента:

  • Рабочий эксплойт уже доступен в паблике, но по этическим соображениям мы не будем публиковать PoC.
  • Ситуация драматически усложняется тем, что разработчики еще не выпустили патч. Можно посоветовать использовать Nemesida WAF, который заблокирует попытки эксплуатации этой и других уязвимостей, включая техники обхода.

Технические детали

 Перечислим, что известно на этот момент:

  • Клиенты, использующие JDK версии 9 и новее, уязвимы для атаки удаленного выполнения кода из-за обхода CVE-2010-1622.
  • Уязвимости подвержены все версии Spring Core (исправление еще не выпущено).
  • Уязвимость затрагивает функции, использующие RequestMapping и параметры POJO (Plain Old Java Object).


С технической стороны идея эксплоита сводится к отправке запроса с параметрами class.module.classLoader.resources.context.parent.pipeline.first.*, обработка которых при использовании WebappClassLoaderBase приводит к обращению к классу AccessLogValve.

В свою очередь этот класс позволяет настроить логгер для создания произвольного jsp-файла в корневом окружении Apache Tomcat и записи в этот файл кода, подготовленного атакующим. Далее, созданный файл становится доступным для прямых запросов извне.

Результатом такой эксплуатации будет созданный шелл-файл на jsp (shell.jsp), при обращении к которому можно удаленно выполнять произвольные команды на сервере. Например, используя curl, вызов можно оформить так:

# curl http://example.com/shell.jsp?cmd=whoami

 

Что можно сделать?

Согласно сообщению Praetorian, подтверждающему наличие RCE в Spring Core, рекомендуемый в настоящее время подход заключается в исправлении DataBinder путем добавления черного списка уязвимых шаблонов полей, необходимых для эксплуатации. Если вы используете Spring Core, то на данный момент это единственное известное средство исправления данной атаки.

 

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024