FlawOpen

flawopen.com/AI Security/progress-arcgenai-generator-command-injection-cve-2026-91140

● CVE-2026-91140 · CVSS 9.6 · Критический
Исследования · FlawOpen

CVE-2026-91140: внедрение команд в Progress ARCGenAI-Generator

Подготовленный документ Swagger/OpenAPI мог повлиять на очистку временных файлов через shell в ARCGenAI-Generator 2.0 при запуске разработчиком. Progress исправила процесс в версии 2.1; в бюллетене не сообщается об активной эксплуатации.[1], [3], [4]

💡 Простыми словами (ELI5)

Инструкция мастерской по очистке получает имя файла на предыдущем этапе и передаёт его операционной системе. Если это имя трактуется как часть shell-инструкции, а не как обычный текст, очистка может выполнить непредусмотренные команды. Исправление по возможности исключает shell и ограничивает и заключает в кавычки любое имя файла, которое всё же приходится ему передавать.[1], [2]

Ключевые понятия и термины

ARCGenAI-Generator
Инструмент Progress DataDirect, создающий артефакты REST-коннектора из Swagger/OpenAPI. Затронута версия 2.0; Progress указывает 2.1 как исправленную.[1], [3]
Документ Swagger/OpenAPI
Структурированное описание API, передаваемое генератору. Имена схем и метаданные — внешний ввод, который нельзя превращать в синтаксис shell.[1], [4]
Внедрение команд в shell
Нарушение границы данных и команды, при котором недоверенный ввод изменяет команду, интерпретируемую shell операционной системы.[1], [4], [5]
Очистка временных файлов
Удаление промежуточных файлов после сборки. В бюллетене уязвимость отнесена к инструкциям очистки на основе shell.[1], [2]
CWE-78
Недостаточная нейтрализация специальных символов в команде ОС; присвоена CVE-2026-91140.[4]

Связи со стандартами

  • Ссылка CWE для слабого места, описанного в этом руководстве: CWE-78

Пошаговый сценарий атаки

Шаг 1

Разработчик запускает ARCGenAI-Generator 2.0

Затронут Progress DataDirect Autonomous REST Connector GenAI Agents ARCGenAI-Generator версии 2.0. Разработчик запускает его для обработки документа Swagger/OpenAPI.[1], [3]

Шаг 2

Имена из документа попадают в рабочий процесс

В записи CVE подготовленный документ Swagger/OpenAPI указан как условие атаки; разработчик должен запустить генератор. В открытом коммите исправления видно, что очистка получает {fileName} от оркестратора; приведённые источники не подтверждают, что это имя берётся из документа.[1], [2]

Шаг 3

Инструкции очистки доходят до shell

В опубликованных до исправления инструкциях агента очистка временных файлов выполнялась через терминал, а {fileName} подставлялся в выражения путей. Коммит указывает, что это значение поступает от оркестратора; источники не подтверждают его происхождение из документа.[2]

Шаг 4

ОС может прочитать ввод как синтаксис команды

Подготовленный документ может заставить инструкцию очистки выполнить непредусмотренные команды ОС в контексте процесса разработчика. Запись CVE описывает выполнение команд на компьютере разработчика; она не публикует конкретную строку эксплойта и не утверждает, что уязвим каждый запуск генератора.[1], [4], [5]

Шаг 5

Версия 2.1 уменьшает зависимость от shell

Патч предпочитает встроенные файловые операции, требует соответствия шаблону ^[A-Za-z0-9._-]+$ и заключает каждую подстановку в кавычки, если необходим shell-fallback. Progress указывает версию 2.1 как исправленную.[2], [3]

Исходный код: Уязвимый vs Защищённый вариант

Уязвимая панель цитирует инструкции агента Progress до исправления. Исправленная панель кратко описывает изменения коммита 7ede6d9: предпочитать встроенные файловые операции, проверять имена по allowlist и заключать подстановки в кавычки при необходимости shell-fallback. Исполняемые команды очистки и ввод эксплойта опущены.[2]

УЯЗВИМАЯ РЕАЛИЗАЦИЯ
# До исправления Progress: инструкции агента по очистке временных файлов
After successful assembly, delete temp files using the terminal with shell-native commands.
Use retry logic to handle transient file locks.
БЕЗОПАСНЫЙ ИСПРАВЛЕННЫЙ ВАРИАНТ
# Исправление Progress: по возможности используйте штатную файловую операцию
Prefer your file-editing tool's native delete/remove capability over the terminal.
Removing temp files is a plain file-system operation — it does not need a shell.

# Если необходим запасной вариант с shell, проверьте {fileName} по ^[A-Za-z0-9._-]+$
# и заключите каждое раскрываемое значение в кавычки в инструкциях очистки для платформы.

Чек-лист по защите системы для инженеров

Источники

← AI Security Directory →