Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Прежде всего, давайте проясним, что это НЕ новая уязвимость Log4Shell или Spring4Shell.
Хотя это проблема удаленного выполнения кода, ее последствия не столь серьезны и не так легко эксплуатируются, как проблема в Log4j от декабря 2021 года.
Как и в случае с Log4j, суть проблемы заключается в том, что вы можете выполнить поиск, который затем может быть использован не по назначению.
Однако уязвимость Log4shell было очень легко использовать, что не обязательно произойдет в этот раз.
На самом деле эта проблема очень похожа на CVE-2022-33980, о которой мы писали в начале этого года.
Объяснение проблем безопасности Apache commons-text
В библиотеке Apache Commons Text вы можете выполнять интерполяцию переменных. Это позволяет загружать свойства, которые можно динамически оценивать.
Проблема заключается в StringLookup
, который выполняет поиски строк. Эти поиски представляют собой выражения, которые могут разрешать DNS записи, загружать значения из URL-адресов и выполнять сценарии с использованием механизма выполнения сценариев JVM.
Эти URL-адреса и сценарии могут исходить из удаленных источников и вызывать удаленное выполнение кода, если используются ненадежные значения. Об этом сообщается в CVE-2022-42889 как об уязвимости высокой степени опасности, которая встречается в версиях с 1.5.x по 1.9.x.
Примеры CVE-2022-42889
Ниже приведены два примера такого рода сценариев, использующих движок Nashorn или JavaScript. Использование interpolatorStringLookup
напрямую или через StringSubstitutor
(что, вероятно, более распространено) даст тот же результат.
Обратите внимание, что механизм сценариев Nashorn больше не доступен по умолчанию в Java 15 и более поздних версиях. Таким образом, эти сценарии будут выполняться только в том случае, если вы сами предоставите механизм сценариев. Однако, поскольку многие предприятия по-прежнему зависят от более старых версий, таких как Java 8, это может стать серьезной проблемой.
Если вы используете последнюю LTS-версию Java 17, ни скрипты JavaScript, ни скрипты Nashorn не будут выполняться, поскольку по умолчанию движок недоступен.
Исправление для CVE-2022-42889
Позвольте мне еще раз подчеркнуть, что это не Log4Shell снова.
Скорее всего, вы сами не используете StringLookup
, но вы не знаете, используют ли его какие-либо из ваших транзитивных библиотек.
Самый простой решения этой проблемы — обновление commons-text
до версии 1.10 (или более поздней), которая по умолчанию отключает префиксы URL, DNS и script и делает невозможным выполнение произвольного кода этим путем.
Сканирование с помощью Snyk может помочь определить, присутствует ли эта уязвимость в вашем стеке. Если уязвимость обнаружена, обновите ее до версии 1.10 и запустите snyk monitor
в CLI, чтобы продолжить мониторинг в рабочей среде.
Сканируйте свой код бесплатно
Создайте учетную запись Snyk сегодня, чтобы защитить свой код от CVE-2022-42889 и миллионов других уязвимостей.
Бесплатно зарегистрироваться