CVE-2026-60090: Kritisk SQL-injektion i PraisonAI
PraisonAI før version 4.6.78 har en kritisk SQL-injektion i vektordatabase-opsætning. Opdatér til 4.6.78 eller nyere.
Hvad er det?
CVE-2026-60090 er en SQL-injektion i PraisonAI, et Python-framework til at bygge AI-agenter med tilknyttede videnslagre baseret på vektordatabaser. Når en ny samling (collection) opsættes i PGVector eller Cassandra, angiver kaldet en dimensionsværdi for vektorkolonnen. Denne værdi valideres ikke reelt ved kørsel, selv om den skal være et tal. En angriber kan i stedet indsætte tekst som kommandoer, der bliver limet direkte ind i den SQL- eller CQL-kommando, der opretter tabellen. Resultatet er, at angriberens tekst udføres som databasekommandoer, i stedet for bare at blive gemt som data.
Hvem rammer det?
Det rammer virksomheder, der bruger PraisonAI i version før 4.6.78 til at bygge AI-løsninger med videnslagre i PGVector eller Cassandra. Særligt udsatte er systemer, hvor brugere, kunder eller eksterne API-kald kan påvirke, hvordan en ny samling oprettes, for eksempel gennem en selvbetjeningsportal, en chatbot eller et internt værktøj, hvor nogen kan sætte parametre for en ny videnssamling.
Hvad kan ske?
En angriber, der kan styre dimensionsparameteren, kan indsætte og udføre egne databasekommandoer. I praksis kan det betyde, at tabeller med følsomme data slettes, at data i andre tabeller læses eller ændres, eller at hele databasen sættes ud af drift. For en dansk virksomhed kan det betyde tab af kundedata, driftsstop for en AI-tjeneste, og i værste fald et brud på persondataforordningen, hvis personoplysninger ligger i den samme database.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, hvilket er kritisk. Angrebet kræver ingen login, ingen adgang til systemet i forvejen og ingen handling fra en bruger. Det kan udføres over netværket med lav teknisk kompleksitet. Konsekvensen er fuld påvirkning af fortrolighed, integritet og tilgængelighed, altså at data kan læses, ændres og slettes, og at systemet kan gå ned. Der er ikke oplysninger om, at sårbarheden aktivt udnyttes i angreb på tidspunktet for offentliggørelsen, men den lave kompleksitet og manglende krav om adgang gør den attraktiv at udnytte.
Hvad gør jeg nu?
Sådan lukker I hullet og begrænser skaden:
- Opdatér PraisonAI til version 4.6.78 eller nyere, hvor dimensionsværdien valideres korrekt ved kørsel.
- Gennemgå, hvor og hvordan jeres system tillader oprettelse af nye videnssamlinger, og fjern eller begræns muligheden for, at eksterne brugere kan sætte dimensionsværdien direkte.
- Tjek databaselogfiler for uventede DDL-kommandoer (kommandoer der opretter eller ændrer tabeller) i perioden før opdateringen.
- Vurdér adgangsrettigheder for den databasebruger, som PraisonAI benytter, så den ikke har mere rettighed end nødvendigt, for eksempel ikke ret til at slette tabeller den ikke selv har brug for.
- Skift adgangskoder og nøgler til databasen, hvis I finder tegn på misbrug i logfilerne.
- Kontakt en it-sikkerhedsrådgiver, hvis I ikke selv kan vurdere, om jeres opsætning har været eksponeret, eller hvis I finder tegn på indbrud.
Opdatér inden for 24 timer
Vi anbefaler, at I opdaterer PraisonAI til version 4.6.78 eller nyere så hurtigt som muligt, da sårbarheden kræver hverken login eller brugerhandling og kan lukke jeres database ned eller lække data. Det er kun forsvarligt at vente, hvis I med sikkerhed kan dokumentere, at ingen ekstern part kan påvirke dimensionsparameteren i jeres opsætning, og selv da bør opdateringen planlægges inden for få dage. Er I i tvivl om jeres eksponering, hjælper vi gerne med en hurtig gennemgang.
Tidslinje
Konkrete eksempler
AI-chatbot med selvbetjent videnssamling
En dansk virksomhed har bygget en kundeservice-chatbot med PraisonAI, hvor kunder gennem en portal kan uploade dokumenter til en ny videnssamling. Portalen sender dimensionsværdien videre til PraisonAI uden selv at kontrollere den. En ekstern part indsætter en skadelig tekststreng i feltet i stedet for et tal, og databasen udfører en kommando, der sletter en tabel med kundedata.
Ofte stillede spørgsmål
Hvordan finder vi ud af, om vi er ramt?
Tjek hvilken version af PraisonAI I kører, og om den er lavere end 4.6.78. Kontrollér derefter, om jeres system tillader, at brugere eller eksterne kald kan påvirke dimensionsparameteren, når en ny videnssamling oprettes i PGVector eller Cassandra.
Kan vi vente til weekenden med at opdatere?
Det kan I gøre, hvis I kan dokumentere, at ingen udenforstående kan styre dimensionsparameteren i jeres opsætning. Kan I ikke det med sikkerhed, bør opdateringen ske inden for det næste døgn, da angrebet ikke kræver login eller brugerhandling.
Skal vi anmelde dette til Datatilsynet?
Det bliver først relevant, hvis I finder tegn på, at sårbarheden faktisk er udnyttet, og at personoplysninger er blevet læst, ændret eller slettet. Gennemgå logfilerne før opdateringen for at afklare dette.
Påvirker opdateringen vores eksisterende data eller integrationer?
Opdateringen retter valideringen af dimensionsparameteren, men ændrer ikke i sig selv jeres eksisterende tabeller eller data. Test dog opdateringen i et testmiljø, hvis I bruger tilpassede integrationer med PGVector eller Cassandra.
Er andre databasetyper end PGVector og Cassandra også ramt?
Beskrivelsen af sårbarheden nævner specifikt PGVector og Cassandra som de to berørte videnslagre. Brug alligevel opdateringen, da den retter fejlen generelt i PraisonAI.
Hvad hvis vi ikke selv har ressourcer til at teste opdateringen?
Så bør I kontakte en it-sikkerhedsrådgiver eller jeres nuværende driftsleverandør for at få hjælp til at opdatere og verificere, at hullet er lukket, uden at det går ud over driften.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
PraisonAI before 4.6.78 fails to validate the caller-controlled dimension argument in the PGVector and Cassandra knowledge-store create_collection() backends. Although schema, keyspace, and collection-name identifiers are validated, the dimension value (declared as int but not enforced at runtime) is interpolated directly into the vector column of the generated CREATE TABLE DDL. A caller able to influence collection-creation dimensions can pass a string such as ‘3); DROP TABLE tenant_secrets; –‘ to inject SQL/CQL tokens into the statement executed by the database driver.
Referencer & kilder
Eksterne kilder
Brug for hjælp med jeres sikkerhed?
Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.