CVE-2024-23897: захват сервера Jenkins с помощью одного символа

Разработчик популярного открытого ПО для автоматизации CI/CD-процессов (Continuous Integration/Continuous Delivery) Jenkins исправил 9 уязвимостейв системе безопасности, включая одну критическую – CVE-2024-23897, которая приводит к удаленному выполнению кода (Remote Code Execution, RCE).

CVE-2024-23897описана как уязвимость чтения произвольного файла через встроенный интерфейс командной строки (Jenkins CLI). Особенностью парсера команд, использующегося в Jenkins, является замена символа “@” на содержимое файла, если путь к файлу следует за этим символом в аргументе команды. Эта функция активирована по умолчанию в версиях Jenkins 2.441 и более ранних, а также в LTS 2.426.2 и более ранних, и до недавнего времени не была отключена.

Эксплуатация уязвимости позволяет злоумышленнику читать произвольные файлы в файловой системе контроллера Jenkins, используя стандартную кодировку символов процесса контроллера. При наличии у атакующего прав “Overall/Read” он может читать файлы целиком, а без таких прав – только первые 3 строки файлов в зависимости от команд CLI.

Кроме того, недостаток может быть использован для чтения бинарных файлов, содержащих криптографические ключи, хотя и с определенными ограничениями. Извлечение секретов открывает путь к различным атакам:

  • Удаленное выполнение кода через корневые URL-адреса ресурсов;
  • Удаленное выполнение кода через cookie-файл “Запомнить меня”;
  • Удаленное выполнение кода с помощью XSS-атак (Cross-Site Scripting, XSS) через журналы сборки;
  • Удаленное выполнение кода через обход защиты CSRF (Cross-Site Request Forgery);
  • Расшифровка секретов, хранящихся в Jenkins;
  • Удаление любого элемента в Jenkins;
  • Загрузка дампа кучи Java.

Исследователь безопасности из компании Checkmarx Янив Низри получил признание за обнаружение и сообщение об уязвимости, которая была устранена в версиях Jenkins 2.442 и LTS 2.426.3 путём отключения функции синтаксического анализа команд. В качестве временного решения, пока исправление не будет применено, рекомендуется отключить доступ к CLI.

Public Release.