Vuelve la campaña de malware en Hugging Face: 31 repos usan trust_remote_code para minar cripto con tus GPUs
Pluto Security encontró 31 repositorios maliciosos en siete cuentas de Hugging Face, con el modelo insignia MENXIANGYU/qwen2-tiny y un clon casi idéntico, htt0118/qwen2-tiny. No hay pickle ni pesos envenenados: el código Python que viene con el modelo se ejecuta cuando lo cargás con trust_remote_code=True. El payload es un cryptominer disfrazado de proceso del sistema que se reinicia si lo matás y elimina mineros rivales; algunas versiones abren una reverse shell y un modelo posterior trae un script de container escape. Suman más de 32.000 descargas (descargas, no infecciones confirmadas). Hugging Face bajó la primera ola, pero una segunda de 19 repos siguió online ocho días, y los escáneres de la plataforma (antivirus, Protect AI, JFrog) no detectaron el código. En la misma nota, Air Security describe un falso solana-starter-kit en GitHub que los agentes de código encuentran primero y cuyo único paso de instalación es un one-liner de PowerShell que instala NetSupport Manager. Ojo con esto: nunca habilites trust_remote_code en modelos que no auditaste, y fijá revisiones por hash.
CVE-2026-61438 (CVSS 7.3): el sandbox AST de PraisonAI permite import os y ejecuta comandos desde un workflow YAML
JobWorkflowExecutor._exec_inline_python() valida los pasos script: de los workflows YAML con un allowlist de nodos AST y un __builtins__ recortado. El problema: el allowlist de módulos incluye os y se permiten Import, Call y Attribute, así que import os; os.system(...) pasa la validación. Cualquiera que aporte un workflow type: job consigue RCE con los privilegios del proceso cuando un usuario o un pipeline de CI con PRAISONAI_ALLOW_JOB_WORKFLOWS=true lo corre. Arreglado en praisonai 4.6.78. Ojo con esto en CI multi-tenant: un sandbox hecho con allowlists de AST casi nunca es un sandbox.
CVE-2026-62264 (CVSS 7.5): pdf-reader-mcp anunciaba autenticación por API key en el log pero nunca validaba el header
Con el transporte HTTP (MCP_TRANSPORT=http), @sylphx/pdf-reader-mcp leía MCP_API_KEY y logueaba «API key authentication enabled», pero nunca validaba X-API-Key. Como además escucha por defecto en 0.0.0.0, cualquiera que llegara al puerto podía invocar todas las herramientas y leer cualquier PDF accesible para el proceso, con un SSRF limitado vía fuentes por URL. Lo peor es el log engañoso: el operador creía estar protegido. Afecta de 2.2.0 a 3.0.0; arreglado en 3.0.1. El transporte stdio por defecto no está afectado.
volto-chatbot (CVSS 8.2): un proxy sin autenticación reenvía cualquier llamada a Danswer con las credenciales del servidor
@eeacms/volto-chatbot registra middleware.all('**/_v1_da/**', proxyMiddleware): cualquier método, cualquier subruta, sin autenticación, y le agrega al request upstream el DANSWER_API_KEY o la cookie de sesión del servidor. Un atacante anónimo puede invocar cualquier operación de la API de Danswer, incluidos los endpoints de admin, como la cuenta de servicio: un confused deputy de manual frente a tu backend RAG. Afecta hasta 2.0.3; arreglado en 2.0.4. Sin CVE asignado todavía.
CVE-2026-116177 (CVSS 7.5): los procesadores Nemotron-VL de vLLM desactivan globalmente la protección de Pillow contra decompression bombs
Los procesadores Nemotron-VL ponen Image.MAX_IMAGE_PIXELS = None a nivel global, lo que apaga la defensa de Pillow para todo el proceso. Un atacante sin autenticación manda una imagen-bomba a /v1/chat/completions, agota la memoria y el worker muere por OOM, tirando el servicio para todos los tenants del deployment (CVSS v4 8.7). Afecta de 0.10.2 a antes de 0.25.0; arreglado en vLLM 0.25.0. Si todavía no actualizaste, limitá el tamaño de request y el conteo de píxeles antes de que la imagen llegue al modelo.
Forever Security encuentra bugs en los navegadores embebidos de Cursor, Copilot, Claude Desktop, Codex y VS Code; los de OpenAI y Microsoft siguen sin parche
El investigador Gal Weizman llama «Embrace» a la clase de bug: el navegador embebido de cada herramienta tiene más capacidades que un navegador normal. En Cursor, un prompt injection vía ese navegador lograba ejecución de código en el host (parcheado en silencio el 1 de octubre, sin advisory). GitHub Copilot permitía spoofear la barra de direcciones (arreglado en 1.1.29). Claude Desktop y VS Code tenían lectura arbitraria de archivos saltando el sandbox de web workers; Anthropic primero rechazó el reporte y Microsoft lo calificó de problema de workspace trust inválido. Codex también permite leer archivos y sigue sin parche desde el reporte del 27 de julio; OpenAI dice que está trabajando en un fix. No hay CVEs asignados. Ojo con esto: el panel de navegador de tu agente es superficie de ataque, no un iframe inocente.
Tendencias Destacadas
La confianza mal ubicada es el hilo del día: trust_remote_code ejecuta lo que traiga el modelo, un sandbox AST deja pasar os, un MCP loguea que autentica sin hacerlo y un proxy de chatbot presta sus credenciales a cualquiera. Ningún escáner de hub ni mensaje de log reemplaza verificar qué código corre y quién puede llamarlo.
Las herramientas de desarrollo con IA son el nuevo navegador: paneles web embebidos, READMEs que los agentes ejecutan al pie de la letra y repos que rankean para búsquedas de agentes. La superficie de ataque es lo que el agente lee y abre, no solo lo que vos tipeás.
The Hugging Face malware campaign returns: 31 repos abuse trust_remote_code to mine crypto on your GPUs
Pluto Security found 31 malicious repositories across seven accounts on Hugging Face, led by MENXIANGYU/qwen2-tiny and a near-identical copy, htt0118/qwen2-tiny. There is no pickle exploit and no poisoned weights: Python code shipped with the model runs when you load it with trust_remote_code=True. The payload is a cryptominer disguised as a system process that restarts when killed and removes competing miners; some versions open a reverse shell, and a later model carries a container-escape script. The repos total more than 32,000 downloads (downloads, not confirmed infections). Hugging Face removed the first wave, but a second wave of 19 repos stayed live for eight days, and the platform's scanners (antivirus, Protect AI, JFrog) missed the code. The same report covers Air Security's fake solana-starter-kit on GitHub, which AI coding agents find first and whose only install step is a PowerShell one-liner that deploys NetSupport Manager. Never enable trust_remote_code on models you have not audited, and pin revisions by hash.
CVE-2026-61438 (CVSS 7.3): PraisonAI's AST sandbox allows import os and runs commands from a YAML workflow
JobWorkflowExecutor._exec_inline_python() validates YAML workflow script: steps with an AST node allowlist and a trimmed __builtins__. The catch: the module allowlist includes os, and Import, Call and Attribute nodes are permitted, so import os; os.system(...) passes validation. Anyone who contributes a type: job workflow gets RCE with the process's privileges when a user or a CI pipeline with PRAISONAI_ALLOW_JOB_WORKFLOWS=true runs it. Fixed in praisonai 4.6.78. Watch multi-tenant CI: an AST-allowlist sandbox is rarely a sandbox.
CVE-2026-62264 (CVSS 7.5): pdf-reader-mcp logged that API key auth was enabled but never checked the header
On the HTTP transport (MCP_TRANSPORT=http), @sylphx/pdf-reader-mcp read MCP_API_KEY and logged «API key authentication enabled», but never validated X-API-Key. Because it also binds to 0.0.0.0 by default, anyone who could reach the port could invoke every tool and read any PDF the process could open, with limited SSRF through URL sources. The misleading log is the worst part: operators believed they were protected. Versions 2.2.0 through 3.0.0 are affected; fixed in 3.0.1. The default stdio transport is unaffected.
volto-chatbot (CVSS 8.2): an unauthenticated proxy forwards any call to Danswer with the server's credentials
@eeacms/volto-chatbot registers middleware.all('**/_v1_da/**', proxyMiddleware): every method, every sub-path, no authentication, and it attaches the server's DANSWER_API_KEY or session cookie to the upstream request. An anonymous attacker can invoke any Danswer API operation, admin endpoints included, as the service account: a textbook confused deputy in front of your RAG backend. Versions up to 2.0.3 are affected; fixed in 2.0.4. No CVE assigned yet.
CVE-2026-116177 (CVSS 7.5): vLLM's Nemotron-VL processors globally disable Pillow's decompression-bomb guard
The Nemotron-VL processors set Image.MAX_IMAGE_PIXELS = None globally, switching off Pillow's defence for the whole process. An unauthenticated attacker sends a decompression-bomb image to /v1/chat/completions, exhausts memory and gets the worker OOM-killed, taking down service for every tenant on the deployment (CVSS v4 8.7). Versions 0.10.2 up to 0.25.0 are affected; fixed in vLLM 0.25.0. If you have not upgraded, cap request size and pixel count before images reach the model.
Forever Security finds bugs in the embedded browsers of Cursor, Copilot, Claude Desktop, Codex and VS Code; OpenAI's and Microsoft's remain unpatched
Researcher Gal Weizman calls the bug class «Embrace»: each tool's embedded browser has more capabilities than a normal browser. In Cursor, prompt injection through that browser reached code execution on the host (silently patched on 1 October, no advisory). GitHub Copilot allowed address-bar spoofing (fixed in 1.1.29). Claude Desktop and VS Code had arbitrary file reads through a web-worker sandbox bypass; Anthropic first rejected the report, and Microsoft labelled it an invalid workspace-trust issue. Codex also allows file reads and is still unpatched after a 27 July report; OpenAI says it is working on a fix. No CVEs have been assigned. Your agent's browser pane is attack surface, not a harmless iframe.
Notable Trends
Misplaced trust is the thread of the day: trust_remote_code runs whatever the model ships, an AST sandbox lets os through, an MCP server logs that it authenticates without doing so, and a chatbot proxy lends its credentials to anyone. No hub scanner or log line replaces checking what code runs and who can call it.
AI developer tools are the new browser: embedded web panes, READMEs agents execute literally, and repos that rank for agent searches. The attack surface is whatever the agent reads and opens, not just what you type.
La campagne de malware sur Hugging Face revient : 31 dépôts abusent de trust_remote_code pour miner sur vos GPU
Pluto Security a trouvé 31 dépôts malveillants répartis sur sept comptes Hugging Face, menés par MENXIANGYU/qwen2-tiny et une copie quasi identique, htt0118/qwen2-tiny. Ni pickle ni poids empoisonnés : le code Python livré avec le modèle s'exécute au chargement avec trust_remote_code=True. Le payload est un cryptominer déguisé en processus système qui redémarre si on le tue et supprime les mineurs concurrents ; certaines versions ouvrent un reverse shell, et un modèle plus récent embarque un script d'évasion de conteneur. Les dépôts cumulent plus de 32 000 téléchargements (des téléchargements, pas des infections confirmées). Hugging Face a supprimé la première vague, mais une seconde de 19 dépôts est restée en ligne huit jours, et les scanners de la plateforme (antivirus, Protect AI, JFrog) n'ont rien vu. Le même article décrit le faux solana-starter-kit repéré par Air Security sur GitHub : les agents de code le trouvent en premier et sa seule étape d'installation est un one-liner PowerShell qui déploie NetSupport Manager. N'activez jamais trust_remote_code sur un modèle non audité et épinglez les révisions par hash.
CVE-2026-61438 (CVSS 7.3) : le sandbox AST de PraisonAI autorise import os et exécute des commandes depuis un workflow YAML
JobWorkflowExecutor._exec_inline_python() valide les étapes script: des workflows YAML avec une liste blanche de nœuds AST et des __builtins__ réduits. Le hic : la liste des modules autorisés inclut os, et les nœuds Import, Call et Attribute sont permis, donc import os; os.system(...) passe la validation. Quiconque fournit un workflow type: job obtient une RCE avec les privilèges du processus dès qu'un utilisateur ou une CI avec PRAISONAI_ALLOW_JOB_WORKFLOWS=true l'exécute. Corrigé dans praisonai 4.6.78. Prudence en CI multi-tenant : un sandbox à base de liste blanche AST n'en est presque jamais un.
CVE-2026-62264 (CVSS 7.5) : pdf-reader-mcp annonçait l'authentification par clé d'API mais ne vérifiait jamais l'en-tête
Avec le transport HTTP (MCP_TRANSPORT=http), @sylphx/pdf-reader-mcp lisait MCP_API_KEY et journalisait «API key authentication enabled», mais ne validait jamais X-API-Key. Comme il écoute par défaut sur 0.0.0.0, toute personne atteignant le port pouvait appeler tous les outils et lire n'importe quel PDF accessible au processus, avec un SSRF limité via les sources URL. Le log trompeur est le pire : l'opérateur se croyait protégé. Versions 2.2.0 à 3.0.0 touchées ; corrigé en 3.0.1. Le transport stdio par défaut n'est pas concerné.
volto-chatbot (CVSS 8.2) : un proxy sans authentification relaie tout appel vers Danswer avec les identifiants du serveur
@eeacms/volto-chatbot enregistre middleware.all('**/_v1_da/**', proxyMiddleware) : toutes les méthodes, tous les sous-chemins, sans authentification, en ajoutant à la requête amont le DANSWER_API_KEY ou le cookie de session du serveur. Un attaquant anonyme peut appeler n'importe quelle opération de l'API Danswer, endpoints d'administration compris, en tant que compte de service : un confused deputy d'école devant votre backend RAG. Versions jusqu'à 2.0.3 touchées ; corrigé en 2.0.4. Pas encore de CVE.
CVE-2026-116177 (CVSS 7.5) : les processeurs Nemotron-VL de vLLM désactivent globalement la protection de Pillow contre les decompression bombs
Les processeurs Nemotron-VL fixent Image.MAX_IMAGE_PIXELS = None globalement, ce qui désactive la défense de Pillow pour tout le processus. Un attaquant non authentifié envoie une image piégée à /v1/chat/completions, épuise la mémoire et fait tuer le worker par l'OOM killer, ce qui coupe le service pour tous les tenants du déploiement (CVSS v4 8.7). Versions 0.10.2 à 0.25.0 exclue touchées ; corrigé dans vLLM 0.25.0. Sans mise à jour, limitez la taille des requêtes et le nombre de pixels avant le modèle.
Forever Security trouve des failles dans les navigateurs intégrés de Cursor, Copilot, Claude Desktop, Codex et VS Code ; celles d'OpenAI et Microsoft restent non corrigées
Le chercheur Gal Weizman appelle cette classe de bug «Embrace» : le navigateur intégré de chaque outil a plus de capacités qu'un navigateur normal. Dans Cursor, une prompt injection via ce navigateur menait à l'exécution de code sur l'hôte (corrigé discrètement le 1er octobre, sans avis). GitHub Copilot permettait d'usurper la barre d'adresse (corrigé en 1.1.29). Claude Desktop et VS Code permettaient la lecture arbitraire de fichiers en contournant le sandbox des web workers ; Anthropic a d'abord rejeté le rapport et Microsoft l'a jugé hors périmètre (workspace trust). Codex permet aussi la lecture de fichiers et reste non corrigé depuis un signalement du 27 juillet ; OpenAI dit travailler à un correctif. Aucun CVE attribué. Le panneau navigateur de votre agent est une surface d'attaque, pas un iframe anodin.
Tendances Notables
La confiance mal placée relie tout : trust_remote_code exécute ce que livre le modèle, un sandbox AST laisse passer os, un serveur MCP annonce une authentification inexistante et un proxy de chatbot prête ses identifiants à n'importe qui. Aucun scanner de hub ni ligne de log ne remplace la vérification du code exécuté et de qui peut l'appeler.
Les outils de développement IA deviennent le nouveau navigateur : panneaux web intégrés, README exécutés à la lettre par les agents et dépôts optimisés pour leurs recherches. La surface d'attaque, c'est tout ce que l'agent lit et ouvre, pas seulement ce que vous tapez.