Уязвимость Text4Shell в библиотеке Apache Commons Text

CVE-2022-42889: критическая уязвимость в библиотеке Apache Commons Text


25 октября, 2022


В популярной Java-библиотеке Apache Commons Text (commons-text-1.9.jar) была обнаружена уязвимость CVE-2022-42889, также известная как Text4Shell. Она затрагивает версии библиотеки с 1.5 по 1.9. Уязвимость была включена в список рассылки Apache dev list 13 октября 2022 г.

Хотя данная уязвимость не затрагивает код Axiom JDK, мы решили опубликовать небольшую статью с ключевой информацией о CVE, так как многие Java-разработчики используют Apache Commons Text в корпоративных проектах.

Описание

Уязвимость CVE-2022-42889 была обнаружена в классе StringSubstitutor библиотеки, выполняющем интерполяцию переменных. В качестве шаблона для интерполяции используется “${prefix:name}”, где префикс задает алгоритм обработки данных. Из-за ошибки проектирования некоторые префиксы — script, dns и url — интерполируются по умолчанию. Это может привести к контакту с удаленными недоверенными серверами и удаленному выполнению произвольного кода при обработке вредоносных данных. В большинстве случае используются запросы с префиксом DNS: при успешной атаке сайт-жертва отправит DNS-запрос домену-слушателю, контролируемому злоумышленником.

Уровень риска

Text4Shell сравнивают с прошлогодней уязвимостью Log4Shell, так как она была обнаружена в опенсорсной библиотеке и потенциально может нанести вред большому количеству приложений. Но вероятность того, что приложения, использующие Apache Commons Text, будут обрабатывать ненадежные данные с применением уязвимых компонентов, низка, поэтому риск успешной атаки гораздо меньше, чем в случае с Apache Log4j. Тем не менее уязвимость получила 9,8 баллов из 10 по шкале CVSS, что указывает на критический уровень опасности из-за возможности удаленного выполнения кода.

Меры безопасности

Text4Shell была устранена в версии 1.10.0 Apache Commons Text. Мы рекомендуем обновить библиотеку как можно скорее во избежание потенциальных эксплойтов. Также следует проверить, присутствует ли она он в зависимостях вашего проекта, включая транзитивные.

Вот как можно проанализировать приложение на наличие CVE-2022-42889:

  • Осуществите поиск зависимости Apache Commons Text в файле .pom/.gradle
  • Используйте сканнеры безопасности для обнаружения этой или других уязвимостей
  • Проанализируйте библиотеки собранного проекта
  • Выполните docker scan для проверки контейнеров
Author image

Олег Чирухин

Директор по коммуникациям с разработчиками (DevRel)

Команда Axiom JDK roman.karpov@axiomjdk.ru Команда Axiom JDK logo Axiom Committed to Freedom 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 Команда Axiom JDK 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67