Seguridad IA

AI Security — 31 Ago 2026

Lo nuevo hoy

Today's highlights

Points forts du jour

Click en cualquiera para ir al detalle

Click any item to jump to the full section

Cliquez un élément pour aller à la section complète

🛡️

Framework CVEs

Crítico

CVE-2026-37751 — ai-maestro: command injection en killSessionSync, sin auth ni interacción (9.8)

La función killSessionSync de 23blocks-OS ai-maestro v0.24.17 arma un comando de shell con input controlado por el atacante y lo ejecuta sin sanitizar. Vector de red, complejidad baja, cero privilegios, cero interacción del usuario: AV:N/AC:L/PR:N/UI:N con impacto alto en las tres patas. Eso es el 9.8 completo, no un score inflado.

Ojo con esto: el orquestador de agentes es justo el componente que suele quedar escuchando en la red interna porque «solo lo llaman nuestros propios workers». Hasta que actualices, segmentá la red, cerrá el endpoint y mirá los logs de ejecución de comandos. Un orquestador comprometido no te cuesta un servicio, te cuesta todos los agentes que despacha.

28 Aug 2026
OpenCVE →
Crítico

CVE-2026-80104 — DB-GPT 0.8.0: la subida de skills escribe donde le digas, y la auth devuelve admin siempre (9.3)

Tres fallas encadenadas en el endpoint de subida de skills de DB-GPT 0.8.0 (eosphoros-ai): el handler usa el filename tal cual, sin canonicalizar ni verificar que quede dentro del directorio; el endpoint no pide autenticación; y la función de auth devuelve privilegios de admin sin importar las credenciales. Un payload tipo ../../../tmp/malicious.py escribe donde el proceso tenga permiso.

El salto a ejecución no es teórico: si el módulo Python subido se importa después, el código corre. 9.3 en CVSS v4.0, 9.8 en v3.1. Parche en v0.8.1. Y mientras tanto la lección de siempre: canonicalizá el path ANTES de tocar el filesystem, y una función de auth que devuelve admin en todos los caminos no es auth, es decoración.

25 Aug 2026
OpenCVE →
CVE

CVE-2026-37003 — Agno ≤ 2.5.8: PythonTools y ShellTools mandan lo que dice el LLM directo a exec() y subprocess

En Agno hasta 2.5.8, los componentes PythonTools y ShellTools pasan argumentos generados por el LLM, sin sanitizar, directo a sinks de ejecución: exec(), runpy.run_path() y subprocess.run(). El atacante no necesita credenciales: le alcanza con meter instrucciones en contenido que el agente vaya a procesar — una página web, un documento, un ticket.

Esta es la clase de bug que va a definir el año. La salida del modelo NO es input confiable. Es input de un tercero que casualmente pasa por tu modelo. Actualizá por encima de 2.5.8, validá todo argumento generado por el LLM antes del sink, y corré el proceso del agente en sandbox o container. Las tres cosas, no una.

27 Aug 2026
OpenCVE →
Alto

CVE-2026-82268 — Qwen-Agent ≤ 0.0.34: el parser de documentos acepta cualquier URL y te trae la metadata del cloud (8.7)

SSRF clásico (CWE-918) en el parseo de documentos de Qwen-Agent: la URL que provee el llamador no se valida ni por esquema ni por host. Vía la interfaz Gradio, que va sin autenticación, se manda una ruta de documento que el servidor trata como URL legítima y sale a buscar direcciones internas — incluidos los servicios de metadata del cloud — devolviendo el contenido.

Hay PoC pública y la explotación es trivial. Arreglado en 0.0.35. Si no podés actualizar hoy: autenticación delante de Gradio, restricción del tráfico entrante, o whitelist de salida. Y anotá el patrón: cada vez que un agente acepta «una URL de documento», acabás de darle a un desconocido un cliente HTTP adentro de tu VPC.

28 Aug 2026
OpenCVE →
Alto

CVE-2026-55585 — QWED: expresiones matemáticas a SymPy parse_expr() sin namespace restringido, y el signup abierto por defecto (8.8)

El paquete qwed-verification, anterior a 5.1.2, pasa expresiones matemáticas controladas por el llamador directo a parse_expr() de SymPy sin namespace restringido. Traducción: ejecución arbitraria de Python en el servidor. Los endpoints afectados son POST /verify/math, que acepta cualquier API key de tenant, y POST /verify/batch.

Lo que sube el impacto no es el bug en sí, es la combinación: POST /auth/signup viene habilitado por defecto, así que cualquiera se crea una cuenta de tenant y ya tiene la key que hace falta. En un despliegue multi-tenant compartido, eso es leer y escribir archivos, ejecutar comandos y comprometer a los demás tenants. Actualizá a 5.1.2 y apagá el signup público.

25 Aug 2026
OpenCVE →
Medio

CVE-2026-82640 — browser-use web-ui: las API keys de los proveedores quedan en disco en texto plano (6.8)

browser-use web-ui, de 2.0.0 a 3.0.0, escribe las API keys de LLM configuradas a disco en texto plano, sin cifrado ni restricción de acceso, en archivos JSON de nombre predecible dentro de directorios temporales de settings. CWE-312. Vector local, complejidad baja: cualquiera con lectura sobre esos directorios se lleva tus claves de proveedor.

Un 6.8 no te va a despertar de noche, pero medí el blast radius real: no es la app la que se compromete, es tu factura de OpenAI o Anthropic y todo lo que esas claves puedan tocar. Rotá las keys si corriste alguna de esas versiones en una máquina compartida, y revisá permisos en los directorios de settings.

30 Aug 2026
OpenCVE →
📦

Supply Chain

Crítico

CVE-2026-82021 — Hermes Agent: el catálogo MCP apunta a ramas mutables, no a commits fijos (9.0)

El catálogo MCP que trae Hermes Agent de NousResearch, versiones 0.18.2 a 0.19.0, referencia repositorios upstream por rama mutable en lugar de por hash de commit fijo. CWE-494, «Download of Code Without Integrity Check». Si alguien compromete uno de esos repos upstream, el payload se propaga solo a todas las máquinas que instalen esa entrada del catálogo, sin que ningún operador haga nada.

Actualizá a 0.19.0 o posterior. Pero el arreglo estructural es otro y aplica a todos: pineá las entradas del catálogo MCP a un SHA de commit específico, exigí firma de commits y limitá el write access a mantenedores de confianza. Una rama es un puntero móvil; confiar en ella es delegarle tu integridad a quien tenga push.

28 Aug 2026
OpenCVE →
Alto

CVE-2026-55557 — browse-mcp: path traversal en download y save_state, con prompt injection como disparador (8.6)

browse-mcp, servidor MCP de navegador headless, antes de 0.8.2: browser_download no valida el directorio de guardado que le pasan, y browser_save_state / browser_load_state aceptan rutas sin validar. CWE-22. El atacante controla la ruta y el contenido, así que puede escribir en ~/.bashrc, en un cron o en entradas de autostart.

La parte interesante es quién dispara el ataque. No hace falta un cliente MCP malicioso: alcanza con un agente autónomo dirigido por prompt injection indirecta desde una página que visitó. La página elige el save_dir. Eso es lo que significa darle al agente un filesystem sin fronteras. Actualizá a 0.8.2, firewall al servidor MCP y monitoreo sobre directorios críticos.

25 Aug 2026
OpenCVE →
🎯

LLM Attacks & Research

Investigación

«Resumime esta web» termina en RCE: Rehberger encadena curl, un ZIP y module shadowing contra Claude Code en Auto Mode

Johann Rehberger (wunderwuzzi) mostró que Claude Code corriendo Opus 5 en Auto Mode se puede llevar a ejecutar código del atacante partiendo de un pedido inocente: resumir una página. La cadena son varios pasos que individualmente parecen benignos — el resumen dispara un WebFetch que falla, el fallo empuja a usar curl, el curl redirige a un ZIP hostil, y ahí entra el module shadowing de Python.

El truco fino: el atacante planta un struct.py envenenado, que se ejecuta cuando el modelo escribe su propio decodificador. Los guardrails que se niegan a correr binarios provistos por el usuario no ven nada raro, porque el código lo escribe el modelo. Tasa de éxito del 60–80% según la variante. Demostró calculadora, reconocimiento del sistema, e instancias anidadas de Claude Code con acceso a herramientas propio.

Anthropic describe Auto Mode como una función de conveniencia respaldada por un clasificador best-effort, no como una garantía de seguridad. Rehberger lo resume mejor: no confíes en la salida del modelo. La defensa real es sandbox — SO y red restringidos — no un clasificador.

28 Aug 2026
The Register →
🛡️

Framework CVEs

Critical

CVE-2026-37751 — ai-maestro: command injection in killSessionSync, no auth, no interaction (9.8)

The killSessionSync function in 23blocks-OS ai-maestro v0.24.17 builds a shell command from attacker-controlled input and runs it without sanitization. Network vector, low complexity, no privileges, no user interaction: AV:N/AC:L/PR:N/UI:N with high impact on all three legs. That is a genuine 9.8, not an inflated score.

Watch this one: the agent orchestrator is exactly the component people leave listening on the internal network because «only our own workers call it». Until you upgrade, segment the network, close the endpoint, and watch your command-execution logs. A compromised orchestrator does not cost you one service, it costs you every agent it dispatches.

28 Aug 2026
OpenCVE →
Critical

CVE-2026-80104 — DB-GPT 0.8.0: skill upload writes anywhere, and the auth function always returns admin (9.3)

Three chained failures in DB-GPT 0.8.0's skill upload endpoint (eosphoros-ai): the handler uses the filename as-is with no canonicalization and no directory boundary check; the endpoint requires no authentication; and the auth function returns admin privileges regardless of credentials. A payload like ../../../tmp/malicious.py writes anywhere the process can reach.

The jump to execution is not theoretical: if the uploaded Python module gets imported later, the code runs. 9.3 on CVSS v4.0, 9.8 on v3.1. Patched in v0.8.1. In the meantime, the usual lesson: canonicalize the path BEFORE touching the filesystem, and an auth function that returns admin on every path is not auth, it is decoration.

25 Aug 2026
OpenCVE →
CVE

CVE-2026-37003 — Agno ≤ 2.5.8: PythonTools and ShellTools pipe LLM output straight into exec() and subprocess

In Agno up to 2.5.8, the PythonTools and ShellTools components pass unsanitized, LLM-generated arguments straight into execution sinks: exec(), runpy.run_path() and subprocess.run(). The attacker needs no credentials — planting instructions in content the agent will process is enough: a web page, a document, a ticket.

This is the bug class that will define the year. Model output is NOT trusted input. It is third-party input that happened to pass through your model. Upgrade past 2.5.8, validate every LLM-generated argument before the sink, and run the agent process in a sandbox or container. All three, not one.

27 Aug 2026
OpenCVE →
High

CVE-2026-82268 — Qwen-Agent ≤ 0.0.34: the document parser accepts any URL and fetches your cloud metadata (8.7)

Textbook SSRF (CWE-918) in Qwen-Agent's document parsing: the caller-supplied URL gets no scheme restriction and no host validation. Through the Gradio interface, which ships unauthenticated, you hand it a document path the server treats as a legitimate URL and it goes fetching internal addresses — cloud metadata services included — handing the content back.

A PoC is public and exploitation is trivial. Fixed in 0.0.35. If you cannot upgrade today: put auth in front of Gradio, restrict inbound traffic, or whitelist outbound requests. And note the pattern: every time an agent accepts «a document URL», you just handed a stranger an HTTP client inside your VPC.

28 Aug 2026
OpenCVE →
High

CVE-2026-55585 — QWED: math expressions into SymPy parse_expr() with no restricted namespace, and signup open by default (8.8)

The qwed-verification package before 5.1.2 passes caller-controlled math expressions straight into SymPy's parse_expr() with no restricted namespace. Translation: arbitrary Python execution on the server. The affected endpoints are POST /verify/math, which accepts any tenant API key, and POST /verify/batch.

What raises the impact is not the bug itself but the combination: POST /auth/signup is enabled by default, so anyone creates a tenant account and already holds the key they need. In a shared multi-tenant deployment that means reading and writing files, running system commands, and compromising other tenants. Upgrade to 5.1.2 and turn public signup off.

25 Aug 2026
OpenCVE →
Medium

CVE-2026-82640 — browser-use web-ui: provider API keys written to disk in cleartext (6.8)

browser-use web-ui, versions 2.0.0 through 3.0.0, writes configured LLM API keys to disk in cleartext — no encryption, no access restrictions — in predictably-named JSON files inside temporary settings directories. CWE-312. Local vector, low complexity: anyone with read access to those directories walks off with your provider keys.

A 6.8 will not wake you up at night, but measure the real blast radius: it is not the app that gets compromised, it is your OpenAI or Anthropic bill and everything those keys can reach. Rotate the keys if you ran any of those versions on a shared machine, and check the permissions on the settings directories.

30 Aug 2026
OpenCVE →
📦

Supply Chain

Critical

CVE-2026-82021 — Hermes Agent: the MCP catalog points at mutable branches, not fixed commits (9.0)

The MCP catalog bundled with NousResearch's Hermes Agent, versions 0.18.2 through 0.19.0, references upstream repositories by mutable branch instead of by fixed commit hash. CWE-494, «Download of Code Without Integrity Check». If someone compromises one of those upstream repos, the payload propagates on its own to every machine installing that catalog entry, with no operator involved.

Upgrade to 0.19.0 or later. But the structural fix is a different one and it applies to everybody: pin MCP catalog entries to a specific commit SHA, require commit signing, and restrict write access to trusted maintainers. A branch is a moving pointer; trusting it means delegating your integrity to whoever holds push.

28 Aug 2026
OpenCVE →
High

CVE-2026-55557 — browse-mcp: path traversal in download and save_state, with prompt injection as the trigger (8.6)

browse-mcp, a headless-browser MCP server, before 0.8.2: browser_download does not validate the caller-supplied save directory, and browser_save_state / browser_load_state accept unvalidated paths. CWE-22. The attacker controls both the path and the content, so they can write to ~/.bashrc, a cron job, or autostart entries.

The interesting part is who pulls the trigger. A malicious MCP client is not required: an autonomous agent steered by indirect prompt injection on a page it visited is enough. The page picks the save_dir. That is what handing an agent a borderless filesystem actually means. Upgrade to 0.8.2, firewall the MCP server, and monitor critical directories.

25 Aug 2026
OpenCVE →
🎯

LLM Attacks & Research

Research

«Summarize this website» ends in RCE: Rehberger chains curl, a ZIP and module shadowing against Claude Code in Auto Mode

Johann Rehberger (wunderwuzzi) showed that Claude Code running Opus 5 in Auto Mode can be walked into executing attacker code from an innocent starting point: summarize a page. The chain is several individually benign-looking steps — the summary triggers a WebFetch that fails, the failure pushes the model toward curl, the curl redirects to a hostile ZIP, and Python module shadowing takes over from there.

The sharp part: the attacker plants a poisoned struct.py that executes when the model writes its own decoder. Guardrails that refuse to run user-supplied binaries see nothing wrong, because the model wrote the code. Success rate of 60–80% depending on the variant. He demonstrated launching Calculator, system reconnaissance, and nested Claude Code instances with their own independent tool access.

Anthropic describes Auto Mode as a convenience feature backed by a best-effort classifier, not a security guarantee. Rehberger puts it better: do not trust the model output. The real defense is a sandbox — restricted OS and network access — not a classifier.

28 Aug 2026
The Register →
🛡️

Framework CVEs

Critique

CVE-2026-37751 — ai-maestro : injection de commandes dans killSessionSync, sans auth (9.8)

La fonction killSessionSync d'ai-maestro v0.24.17 construit une commande shell à partir d'entrées contrôlées par l'attaquant et l'exécute sans assainissement. Vecteur réseau, complexité faible, aucun privilège, aucune interaction : AV:N/AC:L/PR:N/UI:N avec impact élevé sur les trois axes.

L'orchestrateur d'agents est précisément le composant laissé à l'écoute sur le réseau interne. En attendant la mise à jour : segmentation, fermeture de l'endpoint, surveillance des logs d'exécution.

28 Aug 2026
OpenCVE →
Critique

CVE-2026-80104 — DB-GPT 0.8.0 : l'upload de skills écrit n'importe où, et l'auth renvoie toujours admin (9.3)

Trois failles chaînées dans l'endpoint d'upload de skills de DB-GPT 0.8.0 : nom de fichier utilisé tel quel sans canonicalisation, endpoint sans authentification, et fonction d'auth renvoyant admin quelles que soient les credentials. Un payload ../../../tmp/malicious.py écrit partout où le processus a droit.

Le saut vers l'exécution n'est pas théorique : si le module Python uploadé est importé ensuite, le code s'exécute. Correctif en v0.8.1.

25 Aug 2026
OpenCVE →
CVE

CVE-2026-37003 — Agno ≤ 2.5.8 : PythonTools et ShellTools envoient la sortie du LLM dans exec() et subprocess

Dans Agno jusqu'à 2.5.8, PythonTools et ShellTools transmettent des arguments générés par le LLM, non assainis, vers exec(), runpy.run_path() et subprocess.run(). Aucune authentification requise : il suffit d'injecter des instructions dans un contenu traité par l'agent.

La sortie du modèle n'est PAS une entrée de confiance. Mettez à jour au-delà de 2.5.8, validez chaque argument avant le sink, et isolez le processus.

27 Aug 2026
OpenCVE →
Élevé

CVE-2026-82268 — Qwen-Agent ≤ 0.0.34 : le parseur de documents accepte n'importe quelle URL (8.7)

SSRF classique (CWE-918) dans le parsing de documents de Qwen-Agent : l'URL fournie par l'appelant n'est validée ni par schéma ni par hôte. Via l'interface Gradio non authentifiée, le serveur va chercher des adresses internes — services de métadonnées cloud inclus — et renvoie le contenu.

PoC publique, exploitation triviale. Corrigé en 0.0.35.

28 Aug 2026
OpenCVE →
Élevé

CVE-2026-55585 — QWED : expressions envoyées à SymPy parse_expr() sans namespace restreint (8.8)

Le paquet qwed-verification avant 5.1.2 transmet des expressions contrôlées par l'appelant à parse_expr() de SymPy sans namespace restreint : exécution Python arbitraire côté serveur, via POST /verify/math et POST /verify/batch.

Aggravant : POST /auth/signup est activé par défaut, n'importe qui obtient donc la clé nécessaire. Mettez à jour vers 5.1.2 et désactivez l'inscription publique.

25 Aug 2026
OpenCVE →
Moyen

CVE-2026-82640 — browser-use web-ui : clés API des fournisseurs écrites en clair sur disque (6.8)

browser-use web-ui, versions 2.0.0 à 3.0.0, écrit les clés API LLM configurées en clair sur disque, sans chiffrement ni restriction, dans des fichiers JSON aux noms prévisibles. CWE-312, vecteur local, complexité faible.

Le vrai rayon d'impact n'est pas l'application mais votre facture fournisseur et tout ce que ces clés atteignent. Faites tourner les clés si vous avez utilisé ces versions sur une machine partagée.

30 Aug 2026
OpenCVE →
📦

Supply Chain

Critique

CVE-2026-82021 — Hermes Agent : le catalogue MCP pointe vers des branches mutables (9.0)

Le catalogue MCP fourni avec Hermes Agent (0.18.2 à 0.19.0) référence des dépôts upstream par branche mutable plutôt que par hash de commit. CWE-494. Un dépôt upstream compromis propage automatiquement son payload à toutes les machines installant cette entrée.

Mettez à jour vers 0.19.0. Le vrai correctif : épingler les entrées du catalogue à un SHA de commit, exiger la signature des commits, restreindre l'accès en écriture.

28 Aug 2026
OpenCVE →
Élevé

CVE-2026-55557 — browse-mcp : path traversal dans download et save_state (8.6)

browse-mcp, serveur MCP de navigateur headless, avant 0.8.2 : browser_download ne valide pas le répertoire de sauvegarde, et browser_save_state / browser_load_state acceptent des chemins non validés. CWE-22. Écriture possible dans ~/.bashrc, un cron ou l'autostart.

Le déclencheur : un agent autonome piloté par prompt injection indirecte sur une page visitée. Mettez à jour vers 0.8.2 et surveillez les répertoires critiques.

25 Aug 2026
OpenCVE →
🎯

LLM Attacks & Research

Recherche

« Résume ce site » finit en RCE : Rehberger enchaîne curl, un ZIP et du module shadowing contre Claude Code

Johann Rehberger (wunderwuzzi) a montré que Claude Code sous Opus 5 en Auto Mode peut être amené à exécuter du code attaquant à partir d'une demande anodine : résumer une page. La chaîne enchaîne des étapes bénignes — WebFetch qui échoue, bascule vers curl, redirection vers un ZIP hostile, puis module shadowing Python.

Le point clé : un struct.py empoisonné s'exécute quand le modèle écrit son propre décodeur. Les garde-fous refusant les binaires fournis ne voient rien, car c'est le modèle qui écrit le code. Taux de réussite de 60 à 80 %.

Anthropic décrit Auto Mode comme une commodité adossée à un classificateur best-effort, pas une garantie de sécurité. La vraie défense est le sandbox, pas le classificateur.

28 Aug 2026
The Register →