Snelle injectiefout in Vanna AI stelt databases bloot aan RCE-aanvallen

Cybersecurity-onderzoekers hebben een zeer ernstig beveiligingslek in de Vanna.AI-bibliotheek onthuld dat kan worden uitgebuit om via snelle injectietechnieken een kwetsbaarheid voor het uitvoeren van externe code te bereiken.

De kwetsbaarheid, bijgehouden als CVE-2024-5565 (CVSS-score: 8,1), heeft betrekking op een geval van snelle injectie in de “ask”-functie die kan worden misbruikt om de bibliotheek te misleiden tot het uitvoeren van willekeurige opdrachten, aldus supply chain-beveiligingsbedrijf JFrog.

Vanna is een op Python gebaseerde machine learning-bibliotheek waarmee gebruikers kunnen chatten met hun SQL-database om inzichten te verkrijgen door ‘gewoon vragen te stellen’ (ook wel prompts genoemd) die worden vertaald naar een equivalente SQL-query met behulp van een groot taalmodel (LLM).

De snelle uitrol van modellen voor generatieve kunstmatige intelligentie (AI) in de afgelopen jaren heeft de risico’s van uitbuiting door kwaadwillende actoren naar voren gebracht, die de tools kunnen bewapenen door vijandige input te leveren die de ingebouwde veiligheidsmechanismen omzeilt.

Een van die prominente aanvallen is de prompt injection, wat verwijst naar een soort AI-jailbreak die kan worden gebruikt om vangrails te negeren die door LLM-aanbieders zijn opgericht om de productie van aanstootgevende, schadelijke of illegale inhoud te voorkomen, of om instructies uit te voeren die in strijd zijn met de beoogde doeleinden. doel van de applicatie.

Zulke aanvallen kunnen indirect zijn, waarbij een systeem gegevens verwerkt die door een derde partij worden beheerd (bijvoorbeeld inkomende e-mails of bewerkbare documenten) om een ​​schadelijke payload te lanceren die leidt tot een AI-jailbreak.

Ze kunnen ook de vorm aannemen van een zogenaamde ‘many-shot jailbreak’ of ‘multi-turn jailbreak’ (ook wel Crescendo genoemd), waarbij de telefoniste “begint met een onschuldige dialoog en het gesprek geleidelijk in de richting van het beoogde, verboden doel stuurt.”

Deze aanpak kan verder worden uitgebreid om een ​​andere nieuwe jailbreak-aanval uit te voeren, namelijk Skeleton Key.

“Deze AI-jailbreaktechniek werkt door een multi-turn (of multiple step) strategie te gebruiken om een ​​model zijn guardrails te laten negeren”, aldus Mark Russinovich, Chief Technology Officer van Microsoft Azure. “Zodra guardrails worden genegeerd, kan een model geen kwaadaardige of niet-gesanctioneerde verzoeken van een ander model bepalen.”

Skeleton Key verschilt ook van Crescendo doordat het model, zodra de jailbreak succesvol is en de systeemregels zijn gewijzigd, antwoorden kan creëren op vragen die anders verboden zouden zijn, ongeacht de ethische en veiligheidsrisico’s die hiermee gepaard gaan.

“Wanneer de Skeleton Key-jailbreak succesvol is, erkent een model dat het zijn richtlijnen heeft bijgewerkt en dat het vervolgens zal voldoen aan de instructies om inhoud te produceren, ongeacht hoezeer deze de oorspronkelijke richtlijnen voor verantwoorde AI schendt”, aldus Russinovich.

Snelle injectiefout

“In tegenstelling tot andere jailbreaks zoals Crescendo, waarbij modellen indirect of met coderingen om taken moeten worden gevraagd, plaatst Skeleton Key de modellen in een modus waarin een gebruiker direct taken kan aanvragen. Verder lijkt de output van het model volledig ongefilterd en onthult de mate van kennis of het vermogen van een model om de gevraagde content te produceren.”

De laatste bevindingen van JFrog – ook onafhankelijk bekendgemaakt door Tong Liu – laten zien hoe snelle injecties ernstige gevolgen kunnen hebben, vooral als ze verband houden met de uitvoering van commando’s.

CVE-2024-5565 maakt gebruik van het feit dat Vanna het genereren van tekst naar SQL mogelijk maakt om SQL-query’s te maken, die vervolgens worden uitgevoerd en grafisch aan de gebruikers worden gepresenteerd met behulp van de Plotly-grafiekbibliotheek.

Dit wordt bereikt door middel van een ‘ask’-functie, bijvoorbeeld vn.ask(‘Wat zijn de 10 beste klanten qua omzet?’). Dit is een van de belangrijkste API-eindpunten waarmee SQL-query’s op de database kunnen worden gegenereerd.

Het bovengenoemde gedrag, gekoppeld aan de dynamische generatie van de Plotly-code, creëert een beveiligingslek waardoor een bedreigingsacteur een speciaal vervaardigde prompt kan indienen waarin een opdracht is ingesloten die op het onderliggende systeem moet worden uitgevoerd.

“De Vanna-bibliotheek gebruikt een promptfunctie om de gebruiker gevisualiseerde resultaten te presenteren. Het is mogelijk om de prompt te wijzigen met behulp van promptinjectie en willekeurige Python-code uit te voeren in plaats van de beoogde visualisatiecode”, aldus JFrog.

“Concreet leidt het toestaan ​​van externe invoer naar de ‘ask’-methode van de bibliotheek met ‘visualize’ ingesteld op True (standaardgedrag) tot uitvoering van externe code.”

Na verantwoorde openbaarmaking heeft Vanna een verhardingsgids uitgegeven waarin gebruikers worden gewaarschuwd dat de Plotly-integratie kan worden gebruikt om willekeurige Python-code te genereren en dat gebruikers die deze functie beschikbaar stellen dit moeten doen in een sandbox-omgeving.

“Deze ontdekking toont aan dat de risico’s van wijdverbreid gebruik van GenAI/LLM’s zonder goed bestuur en beveiliging drastische gevolgen kunnen hebben voor organisaties”, aldus Shachar Menashe, senior director of security research bij JFrog, in een verklaring.

“De gevaren van prompt injection zijn nog niet algemeen bekend, maar ze zijn eenvoudig uit te voeren. Bedrijven moeten niet vertrouwen op pre-prompting als een onfeilbaar verdedigingsmechanisme en moeten robuustere mechanismen gebruiken bij het koppelen van LLM’s aan kritieke bronnen zoals databases of dynamische codegeneratie.”

Thijs Van der Does