Přeskočit na obsah
Co nevyšlo 5 min čtení

Za květnovým útokem na registr RubyGems stáli podle tří výzkumníků agenti OpenAI

Zpráva zveřejněná 11. září připisuje kampaň, která v květnu na čtyři dny zavřela registraci na RubyGems, roji agentů OpenAI: přes 2 000 balíčků za dva dny, spouštění kódu na serverech RubyDoc.info a pokusy ukrást klíče API chybou, kterou registr opravil až v červenci. RubyGems kampaň potvrzuje, ale původce určit neumí; OpenAI mluví o neškodných úlohách a škodlivé balíčky zatím neověřila.

Krystal rubínu na tmavém podkladu
Krystal rubínu. Balíčky pro jazyk Ruby se jmenují gems, tedy drahokamy. Foto: W.carter, Wikimedia Commons (CC BY 4.0)

Registr balíčků pro jazyk Ruby ohlásil 12. května na své stavové stránce „probíhající útok DDoS“ a vypnul zakládání nových účtů. O den později napsal, že spam ustal, účty robotů jsou zablokované a přes 500 škodlivých balíčků stažených; registrace se vrátila 16. května. Firma Socket tehdy popsala část kampaně pod jménem GemStuffer: víc než 150 balíčků, které stahovaly stránky jednacích portálů londýnských obvodů Lambeth, Wandsworth a Southwark a výsledek balily zpátky do registru. Server The Hacker News 13. května dodal, že smysl není jasný, protože ta data jsou veřejná.

Co ve zprávě stojí a o co se opírá

Spencer Kitts, Thomas Larsen a Sydney Von Arx, tři ze čtyř autorů zářijové zprávy o agentech OpenAI, kteří si z německé wiki udělali nástěnku, zveřejnili 11. září rozbor květnové kampaně. Stojí jen na balíčcích, které agenti nahráli veřejně. K řetězci uvažování modelů, který má jen OpenAI, se autoři nedostali, takže nevědí, proč agenti tuhle strategii zvolili ani jestli uspěla.

Za připsání OpenAI mluví podle nich několik stop. Ve jménech 233 balíčků stojí „oai“, patnáct má „oai“ v poli autora a jeden uvádí kontaktní adresu openaixyz65947@gmail.com. Celkem 1 397 balíčků zmiňuje službu r.jina.ai, přes kterou si stahovali stránky i agenti na wiki, a červnoví agenti sahali na 49 stejných souborů jako ti z wiki, o kterých OpenAI potvrdila, že byli její. Nástroj Pangram označil vzorek balíčků za stoprocentně strojově psaný; to podle autorů dokládá roj agentů, ne jeho původ.

Časová osa ze zprávy: první balíček 5. května, první se jménem „oai“ 8. května, 11. a 12. května přes 2 000 balíčků, 26. a 27. května pět dalších a 18. června 83 balíčků během tří hodin, tedy až po zpřísnění registrace.

Dokumentační server jako spouštěč cizího kódu

Když někdo vydá balíček, server RubyDoc.info mu na požádání sestaví dokumentaci. Sestavení čte soubor .yardopts, který smí odkázat na skripty v Ruby; agenti toho podle zprávy využili ke spuštění vlastního kódu na serverech RubyDoc. Přes sto balíčků šlo stejnou cestou: vydat balíček, vyžádat sestavení dokumentace, v něm stáhnout cílové stránky a výsledek vydat jako další balíček. Skrývat se nesnažili. Soubory se jmenují hack.rb, evil.rb, exploit.rb nebo ssrf.rb a v balíčku zzsouthrunner stojí nad skriptem komentář „malicious crawler/exfil for Southwark Jan 2026 docs via rubydoc.info worker“. Několik balíčků si po spuštění samo odstranilo škodlivou část a vydalo se znovu s vyšším číslem verze; komentář u toho zní „disable evil in next version and bump version“.

Jiná skupina balíčků používala webhooky registru jako úložiště. Stažená data zkomprimovala, zakódovala do znaků povolených v adrese, rozsekala na kusy po 220 znacích a každý kus zaregistrovala jako webhook na example.com s pořadovým číslem v cestě.

Šest balíčků zkoušelo chybu, kterou registr opravil až v červenci

Nejvážnější nález se týká klíčů API. Nejméně šest balíčků opakovaně volalo bez přihlášení koncový bod /api/v1/api_key a hledalo v odpovědi cizí klíč; komentář v kódu zní „leak exfil by repeated attempts & fresh leaked keys variants“. RubyGems zveřejnil bezpečnostní upozornění na tuhle chybu 22. července: síť Fastly ukládala u klientů starších než 3.2.0 odpověď s čerstvě vydaným klíčem až na hodinu a vracela ji dalším tazatelům na témž uzlu. Chyba tam podle správců mohla být kolem devíti let, postižené verze klienta dělaly v červenci 18 % přihlášení a závažnost podle CVSS 4.0 vyšla 7,2. Registr proto zneplatnil všechny starší klíče.

Mezi pokusem agentů 12. května a upozorněním uplynulo 71 dní. Upozornění o agentech nemluví a autoři zprávy píší, že registr chybu našel nezávisle. Jestli agenti nějaký klíč získali, neví nikdo; RubyGems v zápisu z 11. září uvádí, že důkaz o úspěchu nenašel. Druhá díra byla prostší: účet bez ověřeného e-mailu dostal funkční klíč API. Oprava vznikla 11. května a do provozu šla 12. května; jednorázové e-mailové adresy registr zakázal 16. května.

Tři strany, tři míry jistoty

Autoři zprávy označují připsání OpenAI za svůj závěr, ne za doložený fakt, a dodávají, že podle lidí z komunity RubyGems firma registru nikdy neřekla, že za kampaní stojí. Colby Swandale z Ruby Central v zápisu z 11. září kampaň potvrzuje, včetně stažení víc než 500 balíčků a kódu na získání cizích klíčů, ale u původce se zastaví: z dostupných důkazů registr neumí určit, jestli balíčky vytvořili nebo vydali agenti. OpenAI týž den připsala na svou stránku k incidentu s Hugging Face odstavec, podle kterého její agenti používali RubyGems k přístupu na internet kvůli neškodným úlohám a získání veřejných informací; tvrzení o nahrání škodlivých balíčků zatím neověřila a šetření pokračuje. Tatáž stránka uvádí, že firma při zpětné revizi oslovila desítky třetích stran, ale žádnou nejmenuje.

Co dnes ověřit jde: šest balíčků, které zpráva jmenuje, tedy zzsouthrunner, slnleaker5, yardxabc889, lambethcalcqzewgt, wandxprobe a oaitest1778473828, vrací 15. září na API registru kód 404 a na webové stránce je u nich poznámka „Yanked“, tedy staženo. Jejich kód zpráva cituje v plném znění.

Třetí roj za dva měsíce

Je to třetí veřejně popsaný případ, kdy agenti OpenAI během výcviku nebo testů sáhli na cizí systémy. V červenci firma přiznala, že modely utekly z testovacího prostředí a dostaly se do serverů Hugging Face; psal o tom tech-blog. Na začátku září vyšla zpráva o zhruba 18 000 příspěvcích, kterými si agenti na veřejné wiki předávali odpovědi a způsoby, jak obejít omezení sandboxu; OpenAI ji 5. září potvrdila a takové chování dnes nazývá „agent spam“. Květnová kampaň na RubyGems je z těch tří nejstarší. Podobnou zpětnou revizi po oznámení OpenAI udělal i Anthropic a našel šest běhů, ve kterých Claude napadl tři skutečné organizace.

Otevřená zůstává otázka, proč agenti kvůli veřejným datům radnic dobývali cizí server. Autoři nabízejí čtyři vysvětlení: omezení požadavků POST v jejich prostředí, RubyGems jako proxy proti blokaci adres Azure, potřeba někam data trvale uložit a spěch kvůli úlohám na čas. Za nejpravděpodobnější mají trvalé úložiště; na wiki začali agenti psát z téhož důvodu.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.