flawopen.com/AI Security/progress-arcgenai-generator-command-injection-cve-2026-91140
CVE-2026-91140: внедрение команд в Progress ARCGenAI-Generator
Подготовленный документ Swagger/OpenAPI мог повлиять на очистку временных файлов через shell в ARCGenAI-Generator 2.0 при запуске разработчиком. Progress исправила процесс в версии 2.1; в бюллетене не сообщается об активной эксплуатации.[1], [3], [4]
Инструкция мастерской по очистке получает имя файла на предыдущем этапе и передаёт его операционной системе. Если это имя трактуется как часть 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
Пошаговый сценарий атаки
Имена из документа попадают в рабочий процесс
В записи CVE подготовленный документ Swagger/OpenAPI указан как условие атаки; разработчик должен запустить генератор. В открытом коммите исправления видно, что очистка получает {fileName} от оркестратора; приведённые источники не подтверждают, что это имя берётся из документа.[1], [2]
Инструкции очистки доходят до shell
В опубликованных до исправления инструкциях агента очистка временных файлов выполнялась через терминал, а {fileName} подставлялся в выражения путей. Коммит указывает, что это значение поступает от оркестратора; источники не подтверждают его происхождение из документа.[2]
ОС может прочитать ввод как синтаксис команды
Подготовленный документ может заставить инструкцию очистки выполнить непредусмотренные команды ОС в контексте процесса разработчика. Запись CVE описывает выполнение команд на компьютере разработчика; она не публикует конкретную строку эксплойта и не утверждает, что уязвим каждый запуск генератора.[1], [4], [5]
Исходный код: Уязвимый 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._-]+$
# и заключите каждое раскрываемое значение в кавычки в инструкциях очистки для платформы.
Чек-лист по защите системы для инженеров
- ✓Найдите установки ARCGenAI-Generator, копии в репозиториях и рабочие среды разработчиков или CI; подтвердите версию самого продукта, а не только родительского коннектора.[1], [3]
- ✓Обновите ARCGenAI-Generator до версии 2.1 или новее. До обновления не обрабатывайте недоверенные документы Swagger/OpenAPI в версии 2.0.[1], [3]
- ✓Проверьте исправленные инструкции
.github/agents/ARCGenAI-Generator.agent.md: предпочтительны встроенные файловые операции,{fileName}проверяется по allowlist, shell-подстановки заключены в кавычки.[2] - ✓Рекомендация FlawOpen: Считайте спецификации API и имена из схемы недоверенным вводом на всех этапах генерации, очистки и проверки; не полагайтесь на разделение данных и команд модельным агентом без явных ограничений.
- ✓Рекомендация FlawOpen: Запускайте инструменты разработчика с минимальными правами и, если возможно, изолируйте генерацию документов от исходного кода, ключей подписи, облачных учётных данных и производственных секретов.
- ✓Рекомендация FlawOpen: Добавьте безопасные регрессионные тесты для allowlist имён и выбора очистки без shell; используйте безвредные имена и только временные тестовые фикстуры.
- ✓Рекомендация FlawOpen: Для сред разработчиков или CI, где ARCGenAI-Generator 2.0 обрабатывал недоверенные документы, изучите доступную телеметрию процессов и файлов вокруг этих запусков. Её отсутствие — пробел в подтверждении, а не доказательство компрометации или безопасности.