FlawOpen

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

● CVE-2026-91140 · CVSS 9.6 · Crítica
Investigación · FlawOpen

CVE-2026-91140: inyección de comandos en ARCGenAI-Generator

Un documento Swagger/OpenAPI preparado podía influir en la limpieza de temporales mediante shell de ARCGenAI-Generator 2.0 cuando un desarrollador lo ejecutaba. Progress corrigió el flujo en 2.1; el aviso no informa de explotación activa.[1], [3], [4]

💡 Explicación en Lenguaje Sencillo (ELI5)

Una instrucción de limpieza del taller recibe un nombre de archivo de otro paso y se lo pasa al sistema operativo. Si ese nombre se interpreta como parte de una instrucción de shell y no como texto, la limpieza puede ejecutar comandos inesperados. La corrección evita el shell cuando es posible y restringe y entrecomilla cualquier nombre de archivo que todavía deba pasarse.[1], [2]

Conceptos Clave y Términos

ARCGenAI-Generator
Herramienta de Progress DataDirect que genera artefactos de conectores REST a partir de entradas Swagger/OpenAPI. La versión afectada es 2.0; Progress identifica 2.1 como corregida.[1], [3]
Documento Swagger/OpenAPI
Descripción estructurada de una API que recibe el generador. Los nombres del esquema y metadatos son entradas externas y no deben convertirse en sintaxis de shell.[1], [4]
Inyección de comandos en shell
Fallo en el límite entre datos y comandos que permite que una entrada no confiable altere la orden interpretada por el shell del sistema operativo.[1], [4], [5]
Limpieza de temporales
Eliminación de archivos intermedios tras ensamblarlos. El aviso sitúa el fallo en las instrucciones de limpieza basadas en shell.[1], [2]
CWE-78
Neutralización incorrecta de elementos especiales usados en un comando del sistema operativo; asignada a CVE-2026-91140.[4]

Mapeos de marcos

  • Referencia CWE para la debilidad descrita en esta guía: CWE-78

Flujo de Ataque Paso a Paso

Paso 1

Un desarrollador usa ARCGenAI-Generator 2.0

El componente afectado es Progress DataDirect Autonomous REST Connector GenAI Agents ARCGenAI-Generator versión 2.0. El desarrollador lo ejecuta para procesar un documento Swagger/OpenAPI.[1], [3]

Paso 2

Los nombres derivados del documento entran en el flujo

El registro CVE identifica un documento Swagger/OpenAPI preparado como desencadenante y requiere que un desarrollador invoque el generador. El commit público de la corrección muestra que la limpieza recibe {fileName} del orquestador; las fuentes citadas no demuestran que ese nombre proceda del documento.[1], [2]

Paso 3

Las instrucciones de limpieza llegan al shell

Las instrucciones públicas del agente anteriores a la corrección usaban el terminal para limpiar temporales e interpolaban {fileName} en expresiones de ruta. El commit identifica ese valor como recibido del orquestador; las fuentes citadas no demuestran que proceda del documento.[2]

Paso 4

El sistema operativo puede interpretar la entrada como sintaxis

Un documento preparado puede hacer que la instrucción de limpieza ejecute comandos inesperados en el contexto del proceso del desarrollador. El registro CVE describe ejecución de comandos en su equipo; no publica una cadena de explotación concreta ni afirma que toda ejecución del generador sea vulnerable.[1], [4], [5]

Paso 5

La versión 2.1 reduce el uso del shell

El parche prefiere operaciones nativas de archivos, exige que el nombre coincida con ^[A-Za-z0-9._-]+$ y entrecomilla cada expansión si es necesario usar el shell. Progress identifica 2.1 como versión corregida.[2], [3]

Código Fuente: Vulnerable vs. Seguro

El panel vulnerable cita las instrucciones del agente de Progress anteriores al arreglo. El panel corregido resume los cambios del commit 7ede6d9: preferir operaciones nativas, validar los nombres con la allowlist y entrecomillar cada expansión si se necesita recurrir al shell. Se omiten comandos de limpieza ejecutables y entradas de explotación.[2]

IMPLEMENTACIÓN VULNERABLE
# Antes de la corrección de Progress: instrucciones del agente para limpiar archivos temporales
After successful assembly, delete temp files using the terminal with shell-native commands.
Use retry logic to handle transient file locks.
PARCHE SEGURO Y ROBUSTO
# Corrección de Progress: use una operación nativa siempre que sea posible
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.

# Si necesita recurrir al shell, valide {fileName} con ^[A-Za-z0-9._-]+$
# y entrecomille cada expansión en las instrucciones de limpieza específicas de la plataforma.

Lista de Verificación de Seguridad para Ingeniería

Fuentes

← AI Security Directory →