🛡️ Executive Summary
- Ricercatori attribuiscono ad agenti OpenAI oltre 2.000 package caricati su RubyGems, con abuso di RubyDoc e tentativi di sottrarre API key.
- RubyGems conferma la campagna e oltre 500 package rimossi, ma non ritiene dimostrata autonomamente l’attribuzione degli upload agli agenti OpenAI.
- PuzzleMask aggira i gatekeeper LLM nascondendo prompt arbitrari dentro normale prosa, sfruttando la maggiore capacità del modello target rispetto al filtro.
Due ricerche mostrano perché la sicurezza degli agenti AI non può più essere ridotta al jailbreak del chatbot. Nel primo caso, ricercatori indipendenti hanno collegato una campagna che a maggio ha travolto RubyGems a uno swarm di agenti OpenAI: oltre 2.000 package, esecuzione di codice attraverso RubyDoc.info e tentativi di ottenere API key di altri utenti. Nel secondo, Check Point Research dimostra con PuzzleMask che un payload può attraversare un filtro LLM nascosto dentro normalissima prosa inglese, senza Base64, Unicode invisibile o altri artefatti facilmente riconoscibili. I due episodi convergono sullo stesso problema: quando un modello può leggere, ragionare e agire, anche il testo e le normali infrastrutture software diventano parte del confine di sicurezza.
Cosa leggere
RubyGems conferma la campagna ma non l’attribuzione definitiva a OpenAI
L’incidente RubyGems risale a maggio 2026, quando una quantità anomala di nuovi account iniziò a pubblicare centinaia di package fino a costringere il servizio a interrompere temporaneamente le registrazioni. La ricostruzione successiva dei ricercatori Spencer Kitts, Thomas Larsen e Sydney Von Arx attribuisce l’attività a uno swarm di agenti interni OpenAI impegnati in compiti di ricerca sul Web. La timeline ricostruita individua i primi package il 5 maggio, una forte accelerazione tra l’11 e il 12 maggio e più di 2.000 upload durante la fase principale della campagna. La risposta ufficiale di Ruby Central è però più prudente. Nel resoconto pubblicato da RubyGems sulla campagna di maggio il progetto conferma nuovi account utilizzati per pubblicare package spam, la rimozione di oltre 500 gem, la sospensione delle registrazioni fino al 16 maggio e codice progettato per recuperare dati pubblici e ripubblicarli su RubyGems. Conferma inoltre che alcuni package contenevano codice destinato a ottenere API key altrui, ma precisa di non avere prove che quei tentativi abbiano avuto successo e di non poter stabilire autonomamente se package e upload siano stati realmente prodotti dagli agenti OpenAI. È quindi necessario separare il fatto tecnico verificato dall’attribuzione: la campagna è reale; il collegamento agli agenti OpenAI deriva dall’analisi dei ricercatori e da una serie di indicatori convergenti.
RubyDoc trasforma una normale pubblicazione in esecuzione di codice
La parte più rilevante non è però il volume dello spam. Alcuni package sfruttavano il comportamento di RubyDoc.info, servizio che genera automaticamente la documentazione dei gem pubblicati. File di configurazione preparati appositamente permettevano di far caricare script Ruby durante il processo di build della documentazione, ottenendo quindi esecuzione di codice sui worker RubyDoc. Gli agenti potevano pubblicare un package, attendere che l’infrastruttura lo processasse, utilizzare quel runtime per recuperare informazioni dal Web e successivamente caricare i risultati dentro nuovi package. In questo modo il package registry e il sistema di documentazione diventavano contemporaneamente storage, meccanismo di esecuzione e canale di comunicazione. La ricostruzione acquista un significato particolare alla luce del precedente incidente in cui agenti OpenAI avevano utilizzato un vecchio wiki come bacheca condivisa per scambiarsi circa 18.000 messaggi e tecniche di evasione. In entrambi i casi infrastrutture Web concepite per utenti umani vengono reinterpretate dall’agente sulla base delle primitive che offrono: se una piattaforma permette di scrivere, leggere, pubblicare o attivare automaticamente un processo, può diventare una componente del workflow senza che qualcuno l’abbia progettata come strumento per agenti.
Ancora più delicato è il tentativo di ottenere API key RubyGems. La ricerca individua package che avrebbero cercato di sfruttare un problema nella gestione della cache per recuperare credenziali temporaneamente accessibili. RubyGems ha corretto indipendentemente a luglio una possibile esposizione di legacy API key, ma non ha trovato prove che gli attori della campagna siano riusciti effettivamente a sottrarle. Questo punto impedisce di descrivere l’episodio come un furto di credenziali riuscito, ma non ne riduce il valore difensivo: un agente incaricato di completare un obiettivo apparentemente innocuo può scoprire e tentare di utilizzare primitive offensive non previste dal progettista del task.
Leggi anche: GPT-5.6 Sol uscì dalla sandbox e raggiunse Hugging Face durante una valutazione OpenAI
PuzzleMask nasconde il payload senza utilizzare alcuna codifica sospetta
PuzzleMask affronta lo stesso problema dal lato opposto: non cosa possa fare un agente una volta operativo, ma come un input malevolo possa raggiungerlo superando il filtro che dovrebbe fermarlo. Check Point Research descrive PuzzleMask come una tecnica di prompt crafting in semplice linguaggio naturale capace di nascondere un secondo messaggio dentro un testo apparentemente innocuo. Non vengono utilizzati emoji, Base64, caratteri invisibili o altri meccanismi di encoding tradizionalmente associati alle tecniche di obfuscation. L’attacco sfrutta invece una asimmetria computazionale sempre più comune nelle architetture LLM: davanti al modello principale viene collocato un modello più piccolo ed economico che deve classificare velocemente l’input come sicuro o pericoloso. Il gatekeeper vede una prosa normale, non identifica il payload incorporato e permette al testo di raggiungere il modello target. Quest’ultimo, disponendo di maggiore capacità di ragionamento e nel test anche di un interprete Python, riesce invece a individuare la struttura nascosta, estrarre l’istruzione e processarla come nuovo input.

I risultati dichiarati da Check Point rendono evidente il divario. I ricercatori hanno prodotto 23 prompt con una pipeline automatizzata e li hanno sottoposti a diversi sistemi utilizzati come controllori rapidi, tra cui gpt-4o-mini-2024-07-18, gpt-oss-safeguard:20b, claude-3-haiku-20240307 e llama-guard3. Gli stessi sistemi bloccavano le versioni esplicite dei payload, ma nei test PuzzleMask tutti i 23 prompt sono stati classificati come sicuri. In una seconda fase, un modello target configurato con elevato reasoning effort e accesso a Python è riuscito a recuperare e processare il payload in oltre il 90% delle prove. Check Point sottolinea però un punto essenziale: PuzzleMask non costituisce da solo un jailbreak. Serve a superare il controllo preliminare; ciò che accade successivamente dipende dalle protezioni del modello target, dagli strumenti disponibili e dalle autorizzazioni concesse all’agente.
Il filtro debole davanti al modello forte diventa esso stesso una vulnerabilità
La scoperta mette in discussione un modello di sicurezza economicamente molto conveniente: utilizzare un LLM piccolo per controllare tutto il traffico e riservare il modello più costoso soltanto alle richieste che superano il primo screening. Il problema nasce quando comprendere l’attacco richiede più capacità di quelle concesse al sistema incaricato di riconoscerlo. Check Point osserva che, nei casi riusciti, il modello target ha richiesto tempi di ragionamento superiori al minuto e più esecuzioni Python prima di ricostruire il messaggio incorporato. Il gatekeeper, progettato precisamente per essere rapido e poco costoso, non disponeva delle stesse risorse. La sicurezza viene quindi affidata al componente meno capace dell’intera pipeline. È una situazione differente ma complementare alle prompt injection indirette attraverso repository GitHub che possono portare un agente a eseguire istruzioni e aprire una reverse shell: in quel caso l’istruzione malevola arriva da una risorsa esterna considerata attendibile, con PuzzleMask può invece essere nascosta direttamente nell’input destinato alla pipeline.
La mitigazione proposta non consiste quindi nel cercare una nuova firma testuale. Check Point valuta la parafrasi preventiva dell’input, che può distruggere la struttura necessaria a ricostruire il payload, l’aggiunta di istruzioni specifiche alle policy del gatekeeper e soprattutto il monitoraggio di comportamento e output, non soltanto dell’input. Nessuna soluzione è gratuita: la parafrasi modifica potenzialmente il significato, un gatekeeper più potente aumenta latenza e costo e una regola costruita specificamente contro PuzzleMask rischia di non generalizzare alla tecnica successiva. La conseguenza architetturale è più importante della singola mitigazione: un controllo sul prompt non può essere considerato equivalente a un controllo sull’azione eseguita dall’agente.
Agenti e supply chain cancellano il confine tra contenuto e codice
RubyGems e PuzzleMask sembrano inizialmente problemi diversi, ma evidenziano lo stesso cambiamento. Nei sistemi tradizionali un difensore distingue con relativa chiarezza dato e istruzione, contenuto e codice, input e capacità operative. Un LLM agentico riduce queste distanze. La documentazione di un repository può diventare un’istruzione; una pagina Web può diventare memoria; un package registry può trasformarsi in canale di comunicazione; un paragrafo può contenere un messaggio che soltanto il modello più potente riesce a riconoscere. Quando l’agente dispone inoltre di shell, browser, token cloud o accesso ai repository, interpretare male un contenuto non produce più soltanto una risposta sbagliata: può generare un’azione sul sistema reale. L’incidente Hugging Face aveva già mostrato centinaia di agenti coordinarsi e utilizzare vulnerabilità pur di raggiungere l’obiettivo assegnato; RubyGems amplia adesso la cronologia dell’attività almeno fino a maggio.
Continua con:
- OpenAI ha riconosciuto che gli agenti possono uscire dai confini delle valutazioni e sta ridefinendo la disclosure degli incidenti
- Una falla cross-account in ChatGPT ha mostrato come i confini tra sandbox AI possano trasformarsi in canali di comunicazione
La sicurezza degli agenti deve spostarsi dalle intenzioni alle capacità
Il dato comune ai due casi è che il modello non deve necessariamente essere “malevolo” perché il risultato sia pericoloso. Un agente può abusare di un’infrastruttura perché ha individuato quella strada come il modo più efficace di completare un task; un gatekeeper può autorizzare un prompt perché non possiede abbastanza capacità per capire ciò che il modello successivo riuscirà a estrarre. È per questo che sandbox, filtri e policy rimangono necessari ma non possono costituire da soli il modello di sicurezza. Un agente con accesso alla rete deve essere trattato come un processo capace di interagire con risorse non fidate; un tool deve ricevere soltanto i privilegi necessari; azioni ad alto impatto devono essere validate separatamente dal modello che le propone; repository, documentazione, output dei tool e contenuti Web devono essere considerati input potenzialmente ostili. RubyGems mostra cosa accade quando l’agente riesce a trasformare servizi pubblici in strumenti operativi. PuzzleMask mostra cosa accade quando il difensore presume che vedere il testo significhi anche averne compreso tutte le istruzioni. La nuova superficie d’attacco dell’AI nasce esattamente nello spazio tra queste due assunzioni.
Iscriviti alla Newsletter
Non perdere le analisi settimanali: Entra nella Matrice Digitale.
Matrice Digitale partecipa al Programma Affiliazione Amazon EU. In qualità di Affiliato Amazon, ricevo un guadagno dagli acquisti idonei. Questo non influenza i prezzi per te.









