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
для проверки контейнеров