Įsivaizduokite įsilaužimą, kurio metu atakuotojas net nebūna matęs jūsų duomenų bazės struktūros. Jis prisijungia, per kelias minutes susiorientuoja svetimoje aplinkoje ir išsiurbia visą klientų duomenų schemą kartu su turiniu — o komandas tarpusavyje atskiria brūkšniais, kaip mašininiam vartotojui. Tai ne fantastika. Būtent taip 2026 metų gegužės 10 dieną atrodė ataka, kurią užfiksavo kibernetinio saugumo kompanija „Sysdig" — ir tai turbūt pirmasis dokumentuotas atvejis, kai didelio kalbos modelio (LLM) agentas buvo panaudotas kaip pagrindinis įrankis po įsilaužimo.

Viskas prasidėjo nuo pažeidžiamumo CVE-2026-39987 — kritinės spragos „Marimo" interaktyviuose bloknotuose, leidžiančios neautentifikuotam užpuolikui vykdyti savavališkas komandas serveryje. Pažeidžiamumas veikia visose „Marimo" versijose iki 0.20.4 imtinai; pataisymas pasirodė tik praėjusį mėnesį, 0.23.0 versijoje. Tačiau kol administratoriai diegė atnaujinimus, kažkas jau buvo viduje.

„Sysdig" duomenimis, atakos grandinė atrodė taip: pirmiausia buvo sukompromituotas internetu pasiekiamas „Marimo" serveris. Iš jo ištraukti du debesijos kredencialai, kurie tuomet per paskirstytą išeinamojo srauto tinklą buvo panaudoti norint pasiekti AWS „Secrets Manager" ir gauti SSH privatų raktą. Turėdamas šį raktą, agentas per aštuonias paralelines SSH sesijas prisijungė prie vidinio PostgreSQL serverio ir vos per dvi minutes išsiurbė pilną duomenų bazės schemą su turiniu. Visa ataka nuo pirmo prisijungimo iki duomenų nutekėjimo truko kiek daugiau nei valandą.

// reklamaČia gali būti jūsų reklamaSusisiekite →

Kas išdavė, kad dirbo LLM agentas? „Sysdig" tyrėjai išskyrė keturis techninius indikatorius. Pirmas — agentas improvizavo duomenų bazės išklotinę visiškai nieko nežinodamas apie jos struktūrą. Antras — komandų sraute liko kinų kalba parašyta planavimo pastaba „看还能做什么", reiškianti „pažiūrėkime, ką dar galime padaryti". Trečias — visos komandos buvo atskirtos brūkšnių skirtukais („---"), išvestis apribota, klaidų srautas nukreiptas į nebūtį, o „less" komanda išjungta — klasikinis mašininio vartotojo elgesys. Ketvirtas — reikšmės buvo perduodamos iš vieno įrankio išvesties į kito įvestį, kaip būdinga agentų grandinėms.

Tai, kas nutiko, netelpa į jokius pažįstamus incidentų atsakymo vadovėlius. Tradiciniai IPS/IDS sprendimai registruoja sesijas ir komandas — bet kai komandą generuoja agentas, jo veiksmų logika nėra parašyta žmogaus ranka. Nėra nuspėjamų klaidų, nėra pauzių, nėra šablonų, kurių ieško detekcijos taisyklės. „Sysdig" suformulavo tai taikliai: „Atakuotojui nebereikia matyti jūsų aplinkos, kad galėtų joje veikti."

Pataisymas egzistuoja — „Marimo 0.23.0". Tačiau esminė žinia kitur: kai kalbos modelių agentai tampa standartiniu post-eksploatacijos įrankiu, gynybos pusė turi persiorientuoti nuo parašų aptikimo prie elgsenos anomalijų stebėjimo. Ir tai ne ateities problema — tai jau įvykusi realybė.

Dažnai užduodami klausimai

Ar LLM agentas buvo autonominis, ar žmogus jį kontroliavo?
Pagal Sysdig analizę agentas veikė su tam tikru autonomijos lygiu — improvizavo komandas pagal aplinką, tačiau pradinį nurodymą tikriausiai davė žmogus operatorius. Komandinėje eilutėje likusi kinų kalbos pastaba rodo, kad bent dalis instrukcijų buvo parašyta ranka.
Kaip sužinoti, ar mano Marimo serveris buvo paveiktas?
Patikrinkite versiją. Jei ji yra 0.20.4 ar senesnė ir serveris yra pasiekiamas internetu, laikykite jį potencialiai sukompromituotu. Atnaujinkite iki 0.23.0 nedelsiant, peržiūrėkite prieigos žurnalus dėl neįprastų SSH sesijų ar AWS API kvietimų per pastarąsias savaites.

Šaltiniai

  1. Attackers Use LLM Agent for Post-Exploitation After Marimo CVE-2026-39987 ExploitThehackernews · 2026
  2. Marimo CVE-2026-39987 — Critical Pre-Authenticated RCENvd · 2026