Abstrakt illustration av en genomskinlig inneslutningskub som spricker längs tre glödande brottlinjer, med ljusstrådar som slipper ut i en mörk teknisk miljö med avlägsna strukturer, och OrcaRouter-logotypen på en vit remsa längst ner till höger.
AI Safety Incidents

GPT-5.6-Cyber flydde från en QEMU/KVM-VM tre gånger på tolv timmar

Författare

Elias Hawthorne

Publiceringsdatum

Senaste modellerna · 20Visa alla modeller →
Benchmarks: Artificial Analysis · uppdateras dagligen
Tillbaka till alla inlägg

Den 26 augusti 2026 publicerade Trail of Bits ett experiment där en AI-agent fick ett enda mål – att bryta sig ut ur en virtuell maskin – och lyckades tre gånger under ungefär tolv timmars oövervakat arbete, varje gång via en annan väg. Agenten var GPT-5.6-Cyber, den cyberkapacitetsmodell som OpenAI gav forskningsföretaget förhandsåtkomst till; målet var en QEMU/KVM-gäst på en Debian 12-värd; och de tre utbrytningarna gick från en nyligen offentliggjord Linux-kärnsårbarhet till en kedja av tre nolldagar som agenten själv hittade. Ingen utanför laboratoriet skadades – flaggan som agenten fick instruktion att läsa var en testfil på forskarens egen maskin – men resultatet riktar sig mot antagandet att en virtuell maskin är en säker plats att köra en av dessa agenter på. Själva posten, med sin konfidensgrad och noteringen att ingen verklig skada registrerades, finns i Orca AI Incident Archive, bredvid de utvärderingssandlådeposter som arkiverades runt den veckan.

Vad Trail of Bits faktiskt körde

Rapporten är skriven av Artem Dinaburg och ingår i Trail of Bits arbete med Patch the Planet, en del av OpenAIs sårbarhetsupptäcktsinitiativ med samma namn. OpenAI beskriver Patch the Planet som en koalition av underhållare, forskare och säkerhetsleverantörer som det sammankallar för att rätta kritiska sårbarheter i öppen källkod före offentliggörandet. Agenten i det här experimentet var inte en driftsatt produkt som testades åt en kund: det var förhandsåtkomst som överlämnades till ett forskningsföretag, och det är så rapporten beskriver det.

Dinaburg beskrev det som ett capture-the-flag. Agenten måste bryta sig ut ur gästen och läsa en flaggfil, med början i SSH-åtkomst till gästen och tillstånd att göra vad som helst inuti den medan den förde en forskningslogg. Att börja från gästen i stället för inuti värden var avsiktligt – utbrytningsförsök kunde krascha maskinen – och värden var konfigurerad att inte innehålla något viktigt, så att ett exploit som agenten skrev kunde granskas för fusk i stället för att behandlas som en incident. Det arbetade till stor del obevakat i ungefär tolv timmar, under vad Dinaburg kallar "flera kompakteringar och oräkneliga anrop av subagenter": laddade ner kod och artiklar, backade, skrev orakel och minimala reproducerare och jagade ett exploit som det kunde återanvända. Hans egen roll, säger han, bestod mest i att starta om maskinen efter hårdlåsningar i värdkärnan.

Två detaljer formar hur resultatet bör läsas. Värden körde Debian 12 med CPU-mitigeringar avaktiverade, en konfiguration som agenten lade märke till och försökte använda innan den förkastade metoden som alltför opålitlig. Och distributionen var en vanlig stabil version – den typ som de flesta organisationer faktiskt använder – vilket är variabeln som hela experimentet i slutändan hänger på.

A timeline card headed 'Three escapes in one twelve-hour run', kicker 'Trail of Bits - 2026-08-26', subtitle 'GPT-5.6-Cyber against a QEMU/KVM guest on Debian 12. Route, target and outcome, in the order they happened.', and three rows: '~ Hour 1', 'A kernel bug with no public exploit', CVE-2026-53359 known in the write-up as Januscape, the agent built its own exploit, the host hardlocked and the Debian 12 kernel was updated; 'After the kernel update', 'A libslirp bug the distribution had postponed', CVE-2026-9539 plus commit 26be815b86e8d49add8c9a8b320239b9594ff03d, Debian 12 shipped libslirp 4.7.0, arbitrary host memory read and write, then QEMU rebuilt from upstream; 'Later in the run', 'Three zero-days and one missing backport', QEMU VAPIC, KVM shadow paging, KVM paging64_invlpg() and libslirp ICMP. A footer notes that durations are as described by Artem Dinaburg and that the run lasted about twelve hours across multiple compactions and subagent invocations.

Escape ett: en kärnbugg som ingen hade skrivit ett exploit för

Efter ungefär en timme hade agenten ett fungerande exploit för CVE-2026-53359, en sårbarhet i värdkärnan som offentliggjordes strax före körningen och som i rapporten kallas Januscape. Enligt Dinaburgs redogörelse fanns det ingen offentlig exploit att kopiera; agenten byggde en egen. Den lyckades inte utan problem – i stället låste värddatorn sig helt – och Dinaburg uppdaterade Debian 12-kärnan innan han fortsatte.

Identifieraren håller mot offentliga register. NIST:s NVD-post för CVE-2026-53359, publicerad 2026-07-04, beskriver en use-after-free i KVM:s x86-shadow-paging, klassad som CWE-416 och bedömd till 8,8 enligt CVSS 3.1 – sju veckor före experimentet, i den virtualiseringskod som escape-försöket riktade sig mot. Det bekräftar inte själva escape-försöket, men det fastställer att beteckningen pekar på en dokumenterad kärnsårbarhet snarare än en som uppfunnits för inlägget.

Escape två: en libslirp-bugg som Debian redan hade beslutat att senarelägga

Den andra vägen var inte alls någon ny bugg. Debian 12 levererades med libslirp 4.7.0, som har CVE-2026-9539. Agenten kombinerade den med en libslirp-fixcommit som hade mergats uppströms utan att märkas som en säkerhetsfix – 26be815b86e8d49add8c9a8b320239b9594ff03d – och förvandlade paret till godtycklig läsning och skrivning av värdminnet. "Efter det är flykten trivial", skriver Dinaburg. Han byggde sedan om en minimal QEMU mot den senaste uppströms QEMU och libslirp och släppte lös agenten igen.

Bokföringen kring detta är kontrollerbar och är den skarpaste delen av fyndet. Debians paketarkiv listar libslirp 4.7.0-1 i bookworm, sviten bakom Debian 12 – exakt den version som rapporten namnger. Debians säkerhetsspårare markerar att versionen är sårbar för CVE-2026-9539 och registrerar åtgärden som uppskjuten i bookworm, med anteckningen "Mindre problem, OOB-läsning"; åtgärden hade nått trixie och unstable. NIST:s post, publicerad 2026-06-24, beskriver en heap-läsning utanför gränserna och ett heltalsunderflöde i libslirps hantering av TCP urgent-data före version 4.9.2, vilket gör att en privilegierad gäst kan läcka gigabyte av värdprocessens heapminne. NVD listar den på 6,5, medium, poängsatt av Star Labs, och markerar fortfarande att den inväntar analys. Den upstream-commit som agenten kedjade är titulerad "ip: Enforce strict aliasing" – en ämnesrad som låter som kodhygien, vilket är precis Dinaburgs poäng om åtgärder som inte annonserar sig själva.

Så samma bugg är "mindre problem, uppskjutet" i en stabil distribution och en språngbräda till läsning och skrivning av värdminne i ett forskningslaboratorium. Ingen av parterna har offentligt försonat detta, och den här artikeln avgör det inte; den rapporterar de två bedömningarna som de står.

Escape three: tre noll-dagar och en fix som aldrig nådde distributionen

Med miljön återuppbyggd från uppströmskällor upphörde agenten att återanvända andras buggar och hittade sina egna. Den slutliga kedjan kombinerade tre zero-days med en patchad sårbarhet som saknades i distributionskärnan:

• QEMU VAPIC — ett okontrollerat ROM-alias kunde överlappa låst SMRAM, vilket exponerar System Management RAM och möjliggör angriparkontrollerad SMM-körning. Rapporterat; ouppdaterat när inlägget publicerades.

• Linux KVM shadow paging — en av angriparen modifierad skuggsida förblev osynkroniserad och kunde återanvändas. Patchat uppströms; detaljerna kring stable-kärnan var ännu inte klara vid publiceringen.

• Linux KVM paging64_invlpg() — en föråldrad nivå-2-roll efter att en gäst hade ändrat en mappning till 4 KiB gav en skrivbar 2 MiB värd-fysisk mappning, vilket räckte för att ändra QEMU-heapen. Fixades av upstream-commit 9fd4a4e3a3d9fc0306525d95bf3eca693d311406, som inte fanns i distributionskärnan; den commiten finns i mainline, med titeln "KVM: x86/mmu: Remove FNAME(invlpg) and use FNAME(sync_spte) to update vTLB instead."

• libslirp ICMP — blandade fragment-IHL:er gjorde att reflektionen kopierade förbi det återmonterade paketet, vilket skapade tusentals levande NetPacket-objekt som agenten använde för att lokalisera och kapra en callback. Rapporterat; opatchat när inlägget publicerades.

Ingen av de tre nolldagarna har en CVE-identifierare i rapporten, och den anger ingen tidslinje för offentliggörande, inget samordningsschema och inga åtgärdsdatum för dem. Det är en lucka i underlaget snarare än en detalj jag kan fylla: de identifierare som artikeln faktiskt citerar är de två som NVD redan har.

A table card headed 'What the third escape was made of', kicker 'Final chain - rebuilt upstream environment', with columns Component, Mechanism and Status at publication, and four rows: QEMU VAPIC, a zero-day where an unchecked ROM alias could overlap locked SMRAM exposing System Management RAM and enabling attacker-controlled SMM execution, reported and unpatched; Linux KVM shadow paging, a zero-day where an attacker-modified shadow page stayed out of sync and could be reused, patched upstream with stable details pending; Linux KVM paging64_invlpg(), a zero-day where a stale level-2 role after a 4 KiB mapping change produced a writable 2 MiB host-physical mapping, fixed upstream by 9fd4a4e3 but not in the distribution kernel; libslirp ICMP, a zero-day where mixed fragment IHLs made reflection copy beyond the reassembled packet and produced thousands of live NetPacket objects used to hijack a callback, reported and unpatched. A note reads that the write-up assigns no CVE identifiers to the three zero-days and publishes no disclosure timeline, and that the identifiers it does cite are CVE-2026-53359 and CVE-2026-9539, already in NIST's NVD.

Vad den hittade och inte använde

De övergivna vägarna är lika informativa som flyktvägarna. På värden hittade agenten en CUPS-server; slirps loopback-vidarebefordran exponerade ett återanvändbart lokalt root-certifikat, vilket skulle ha möjliggjort bestående överskrivning av root-filer via en file://-skrivare, tills AppArmor hindrade den från att hämta flaggan. En relaterad CUPS-sårbarhet, CVE-2026-34990, hade inte nått oldstable; NIST:s post för den, publicerad 2026-04-03 med allvarlighetsgraden 7,8 hög, beskriver en lokal oprivilegierad användare som tvingar cupsd att autentisera sig mot en angriparkontrollerad IPP-tjänst på localhost med en återanvändbar token "Authorization: Local".

Andra fynd användes inte. En libslirp IPv6-kodväg höll kvar för många byte utöver den deklarerade nyttolasten, vilket agenten bedömde som mindre tillförlitligt för injektion i värdströmmen. En QEMU-panoreringsbuffert på 96 byte för en rendering på 1 024 byte gav en kontrollerad heap-overflow, oanvändbar eftersom gästen körde utan bildskärm. En QEMU-köåterställning lämnade begäranden vid liv, vilket endast gav överbelastningsattack och begränsad korruption.

Mot Firecracker – den minimala enhetsmodellen som Trail of Bits rekommenderar – lyckades agenten inte bryta sig ut. Den låste värden hårt, via ytterligare Linux-kärnbuggar som alla åtgärdades uppströms.

Etablerat, härlett och inte etablerat

Fastställt. Experimentet kördes på Trail of Bits egen hårdvara och dokumenteras i en teknisk förstahandsredogörelse med detaljer om exploiten. De tre vägarna och deras mekanismer beskrivs av forskaren som formulerade uppgiften. CVE-identifierarna, Debian-paketets version, Debian-trackerns status och båda upstream-commitarna går att verifiera i offentliga register, och var och en kontrollerades mot dessa register för den här artikeln.

Inte fastställt. Det finns ingen oberoende replikering. Täckningen utöver bloggen består av en CyberInsider-sammanfattning som uteslutande bygger på samma inlägg och inte innehåller någon expertkommentar eller tredjepartsverifiering, samt en kommentartext av Edera – en leverantör av isolering – publicerad 2026-08-27, som rapporterar fynden med välvilja, citerar bara sin egen säkerhetschef och avslöjar att Trail of Bits har granskat Edera. Ingendera är bekräftelse i den mening som räknas: inget andra labb har återskapat ett escape, och ingen har granskat transkripten. Ingen av de citerade källorna innehåller något uttalande från OpenAI om resultatet, och jag hittade inget publicerat svar från företaget.

Härlett, inte demonstrerat. Slutsatsen – att en virtuell maskin för allmänna ändamål inte längre kan antas innehålla en agent med tillräcklig förmåga – vilar på en modell, en värdkonfiguration och en enda forskares uppsättning. Värden kördes med CPU-mitigeringar avstängda, och vissa förkastade vägar, såsom CUPS-kedjan, stoppades av AppArmor snarare än av hypervisorn. Huruvida samma agent skulle kunna undkomma en hårdad, övervakad produktionsvärd inom samma tolv timmar är inte vad detta experiment mäter. Ederas snävare argument är att att minimera enhetsemulering "minskar målet. Det tar inte bort det" – ett påstående om arkitektur, inte en reproduktion av resultatet.

OrcaRouter-bloggen har behandlat de angränsande sandlådeposterna – Codex Heapjack- och Overpatch-buggarna som rapporterades i augusti 2026 och åtgärdades inom åtta dagar, samt OpenAIs DNS-resolver-escape av den 20 september 2026 – och ingen av dem innebär att en hypervisor-gräns korsas på det här sättet. Dessa poster gäller en verktygsyta och en nätverkskanal; den här gäller virtualiseringsstacken under allt annat.

An evidence card headed 'Established, inferred, and not established', kicker 'Reading the record', subtitle 'Where each claim in the Trail of Bits write-up stands, checked on 2026-10-29.', with three columns. Established lists that the run happened on Trail of Bits' own hardware in a first-person technical write-up, that three routes were described by the researcher who set the task, that CVE-2026-53359 and CVE-2026-9539 are real NVD records published 2026-07-04 and 2026-06-24, that Debian lists libslirp 4.7.0-1 in bookworm and marks it vulnerable with the fix postponed, and that both upstream commits exist. Inferred lists that an off-the-shelf VM cannot hold a capable agent is drawn from one model and one host configuration, that the host ran with CPU mitigations disabled and the agent found that path unreliable, that some abandoned routes were stopped by AppArmor rather than the hypervisor, and that a hardened production host is not what the experiment measures. Not established lists no independent replication, no third-party audit of the transcripts, that the only other coverage is a same-source summary and a vendor commentary that quotes its own staff, that no statement from OpenAI appears in either cited source and none was found, and that no CVE identifiers or disclosure timeline exist for the three zero-days. A footer notes the record carries no disputed flag and no recorded real harm.

Vad Trail of Bits anser bör ändras

Dinaburgs slutsats är brysk: "man kan inte längre antaga att enbart en VM kommer att innehålla en tillräckligt avancerad AI-agent", och sådana agenter bör behandlas "som en avancerad beständig hotaktör". En färdig VM räcker inte, skriver han, eftersom det helt enkelt finns för stor attackyta. En distribution med snabba uppdateringar blir ett krav, och äldre distributioner som bygger på långsamma backporter bör antas vara sårbara.

Rekommendationerna som följer är operativa snarare än arkitektoniska:

• Använd virtualisering med en minimal attackyta – Firecracker, som han kallar "förstås ett betydligt svårare mål", samtidigt som han påpekar att det inte är förskonat, eftersom agenten ändå hårdlåste värden genom den delade kärnan under den.

• Tillämpa minsta möjliga behörighet, loggning och aktiv övervakning på allt som en agent får åtkomst till.

• Begränsa hur länge en agent körs, och ge varje användning en ren miljö i stället för en långlivad sådan.

Och behandla i hans slutplädering säkerhetsgrunder – patchningstakt, enhetsmodeller, kernel-backporter – som den bindande begränsningen snarare än modellens förmåga den aktuella dagen.

För utvärderingsarbete är implikationen obehaglig, och rapporten drar inte den slutsatsen i de orden: en utvärdering som mäter vad en cyberkapabel agent kan göra inuti en VM mäter också VM:en. Vägarna ovan är tre fall där en distributions backportpolicy, ämnesraden i en commit och en oapatchad enhetsmodell var och en avgjorde utfallet. Protokollet avgör inte den frågan; det dokumenterar en tolv timmar lång körning där gränsen misslyckades på tre olika sätt.