
POC Jenkins: уязвимость произвольного чтения файлов через CLI может привести к RCE
Jenkins имеет встроенный интерфейс командной строки (CLI) для доступа к Jenkins из сценария или командной оболочки.
Jenkins использует библиотеку args4j для разбора аргументов и параметров команд на контроллере Jenkins при обработке команд CLI. Этот парсер команд имеет функцию, которая заменяет символ @, за которым следует путь к файлу в аргументе, содержимым файла (expandAtFiles). Эта функция включена по умолчанию, и Jenkins 2.441 и более ранние версии, LTS 2.426.2 и более ранние версии не отключают её.
Это позволяет злоумышленникам читать произвольные файлы в файловой системе контроллера Jenkins, используя кодировку символов по умолчанию процесса контроллера Jenkins.
Злоумышленники с разрешением Overall/Read могут читать файлы целиком.
Злоумышленники без разрешения Overall/Read могут читать первые несколько строк файлов. Количество строк, которые можно прочитать, зависит от доступных команд CLI. На момент публикации данного уведомления группа безопасности Jenkins нашла способы чтения первых трёх строк файлов в последних выпусках Jenkins без установленных плагинов и не выявила плагинов, которые могли бы увеличить это количество строк.
Описание исправления: Jenkins 2.442, LTS 2.426.3 отключает функцию парсера команд, которая заменяет символ @, за которым следует путь к файлу в аргументе, содержимым файла для команд CLI.
В случае проблем с этим исправлением отключите это изменение, установив системное свойство Java hudson.cli.CLICommand.allowAtSyntax в значение true. Настоятельно не рекомендуется делать это в любой сети, доступной пользователям, не являющимся администраторами Jenkins.
Обходной путь: Ожидается, что отключение доступа к CLI полностью предотвратит эксплуатацию уязвимости. Настоятельно рекомендуется это администраторам, которые не могут немедленно обновиться до Jenkins 2.442, LTS 2.426.3. Применение этого обходного пути не требует перезапуска Jenkins
Подробнее: https://www.jenkins.io/security/advisory/2024-01-24/#SECURITY-3314
Команда для запуска: python CVE-2024-23897 Jenkins.py -l list.txt -f /etc/passwd
Ответ VULN может содержать больше, чем daemon или bin, добавьте в строке 28, если хотите добавить больше.