CVE-2024-4879

ServiceNow Utah, Vancouver, and Washington DC Now Platform

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2024-07-29

Официальное описание

ServiceNow Utah, Vancouver, and Washington DC Now Platform releases contain a jelly template injection vulnerability in UI macros. An unauthenticated user could exploit this vulnerability to execute code remotely.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2024-4879 представляет собой критическую уязвимость типа Jelly Template Injection в UI-макросах платформы ServiceNow. Проблема возникает из-за недостаточной фильтрации входных данных, передаваемых в движок рендеринга Jelly.

Поскольку Jelly используется для динамической генерации веб-интерфейсов на стороне сервера, злоумышленник может внедрить вредоносный код в параметры запроса. Это позволяет неавторизованному удаленному пользователю (Unauthenticated) добиться выполнения произвольного кода (RCE) в контексте серверного приложения, что ведет к полной компрометации экземпляра ServiceNow и потенциальному доступу к конфиденциальным данным.

Как исправить

Основным и единственным надежным способом устранения уязвимости является обновление платформы до исправленных версий (Hot Fix или Patch), выпущенных вендором.

  1. Определите текущую версию вашей платформы через "Stats" в интерфейсе ServiceNow.
  2. Перейдите в портал поддержки (Now Support) и скачайте соответствующее обновление.
  3. Установите исправление для вашей ветки:
  4. Washington DC: Обновитесь до версии Patch 1 Hotfix 2b, Patch 2 Hotfix 2 или выше.
  5. Vancouver: Обновитесь до версии Patch 6 Hotfix 2, Patch 7 Hotfix 3b, Patch 8 Hotfix 4, Patch 9 или выше.
  6. Utah: Обновитесь до версии Patch 10 Hotfix 3 или выше.

Для проверки статуса обновления в консоли можно использовать скрипт (через Scripts - Background) для вывода версии:

gs.info(gs.getProperty('glide.build.name') + " : " + gs.getProperty('glide.build.version'));

Временные меры

Если немедленное обновление невозможно, необходимо применить компенсирующие меры контроля для снижения риска эксплуатации:

  1. Настройка IP Access Controls: Ограничьте доступ к экземпляру ServiceNow только доверенными IP-адресами (VPN компании), чтобы отсечь внешних неавторизованных атакующих.

  2. Настройка Web Application Firewall (WAF): Настройте правила фильтрации для блокировки подозрительных последовательностей в URL-параметрах, характерных для Jelly Injection (например, поиск тегов <j:, jelly:, ${, или вызовов Java-классов).

  3. Мониторинг логов: Настройте алертинг на необычные HTTP-запросы к UI-макросам. Проверьте логи транзакций на наличие ошибок парсинга Jelly:

var gr = new GlideRecord('syslog');
gr.addEncodedQuery('messageLIKEjelly^ORmessageLIKEtemplate^level=2');
gr.query();
while(gr.next()){
    gs.print(gr.time + " : " + gr.message);
}

  1. Ограничение доступа к UI Macros: Проведите аудит публично доступных UI-макросов и страниц, требующих аутентификации, и временно отключите неиспользуемые публичные компоненты через системные свойства.