Kibernetinis saugumas

„Python“ kirmino, manipuliuojančio DI saugumo agentais, anatomija

„Hades“ kampanija yra sudėtingas kirminas, nutaikytas į „Python“ programuotojus. Jis naudoja priešiškas užklausas, kad apgautų DI saugumo įrankius ir pavogtų duomenis.
„Python“ kirmino, manipuliuojančio DI saugumo agentais, anatomija

Ar pasiekėte tašką, kai savo DI kodo asistentu pasitikite labiau nei savo paties atliekama peržiūra? Daugelis programuotojų tai padarė. Mes pasikliaujame didžiaisiais kalbos modeliais (LLM), kad jie ieškotų pažeidžiamumų, siūlytų pataisymus ir tikrintų trečiųjų šalių paketų vientisumą. Tačiau kas nutinka, kai kenkėjiška programa moka „atsikalbinėti“ dirbtiniam intelektui? Praėjusią savaitę praleidau keletą naktų peržiūrėdamas technines „Hades“ kampanijos detales – grėsmę, kuri žymi pokytį tame, kaip užpuolikai vertina automatizuotą gynybą. Tai nėra tik duomenų vagis. Tai psichologinė operacija, nukreipta prieš programinę įrangą, kurią naudojame savisaugai.

„StepSecurity“ tyrėjai neseniai nustatė, kad ši kampanija yra naujausias „Miasma“ grėsmių grupės darbas. Nors anksčiau „Miasma“ daugiausia dėmesio skyrė debesijos prisijungimo duomenų rinkimui, „Hades“ yra agresyvesnis, savaime plintantis kirminas. Jis konkrečiai taikosi į „Python“ programuotojų aplinkas per pažeistus paketus „PyPI“ ekosistemoje. Paveiktų bibliotekų sąraše yra „ensmallen“, „mflux-streamlit“ ir keletas įrankių, naudojamų bioinformatikoje. Jei dirbate skaičiuojamosios biologijos ar duomenų mokslo srityje, jūsų darbo stotis yra didelės vertės taikinys šiai konkrečiai grupei.

Įėjimo taškas „Python“ inicializavimo procese

Ataka prasideda, kai programuotojas importuoja pažeistą paketą. „Hades“ paslepia savo pagrindinį kroviklį (loader) viduje __init__.py failo. Tai standartinis failas, kurį „Python“ naudoja katalogui pažymėti kaip paketą. Įdėdami kenkėjišką skriptą čia, užpuolikai užtikrina, kad kodas bus įvykdytas tą pačią akimirką, kai paketas bus įkeltas į projektą. Kroviklis yra užmaskuotas, kad išvengtų paprasto parašais pagrįsto aptikimo, tačiau jo paskirtis paprasta. Jis į sistemą įrašo sukompiliuotą „Bun“ vykdymo aplinkos dvejetainį failą.

„Bun“ yra itin našus „JavaScript“ įrankių rinkinys. Tai puikus įrankis teisėtiems programuotojams, tačiau kartu ir tobula vykdymo aplinka kenkėjiškoms programoms. Kadangi „Bun“ yra savarankiškas dvejetainis failas, jis leidžia kenkėjiškai programai vykdyti sudėtingas „JavaScript“ užduotis nereikalaujant „Node.js“ instaliacijos aukos kompiuteryje. Tai apeina tradicinį stebėjimą, kuris ieško įtartinos „npm“ ar „Node“ veiklos. Architektūriniu lygmeniu „Bun“ naudojimas leidžia užpuolikams veikti šešėlinėje aplinkoje, kuri yra už daugumos į „Python“ orientuotų darbo stočių standartinio saugumo matomumo ribų.

Kaip kenkėjiška programa manipuliuoja automatizuotu sargu

Inovatyviausia „Hades“ savybė yra jos gebėjimas meluoti DI saugumo agentams. Daugelis šiuolaikinių kūrimo aplinkų naudoja LLM, kad skenuotų kodą ieškant kenkėjiškų modelių. „Hades“ tai numato. Savo kenkėjiškų failų viršuje programa įtraukia teksto bloką, sukurtą kaip priešišką užklausą (adversarial prompt). Šis tekstas nurodo LLM ignoruoti bet kokį įtartiną kodą, rastą po juo, ir klasifikuoti paketą kaip patikrintą bei saugų.

Praėjusį mėnesį išbandžiau panašią techniką izoliuotoje aplinkoje. Pateikiau LLM skriptą su akivaizdžiu atgaliniu ryšiu (reverse shell), tačiau prieš jį pridėjau komentarą, teigiantį, kad kodas yra iš anksto patvirtintas saugumo testas valstybinei sutarčiai. DI ignoravo spragą ir pranešė, kad skriptas atitinka visus saugumo protokolus. „Hades“ naudoja būtent šią skaitmeninio Trojos arklio strategiją. Ji išnaudoja DI kognityvinę logiką. Kadangi LLM yra imlūs socialinei inžinerijai, jie priima šias paslėptas instrukcijas kaip aukšto prioriteto komandas. Tai lemia klaidingai neigiamą verdiktą, leidžiantį kenkėjiškai programai praslysti pro organizacijos automatizuotą analizę.

Tiekimo grandinės vientisumo sistemos išnaudojimas

„Hades“ ne tik slepiasi; ji bando atrodyti oficialiai. Ji išnaudoja keletą kritiškai svarbių saugumo sistemų, įskaitant „OpenID Connect“ (OIDC) ir „Supply-chain Levels for Software Artifacts“ (SLSA). Kai kenkėjiška programa aptinka, kad veikia „GitHub Actions“ darbo eigoje, ji patikrina OIDC kintamuosius. Tada ji naudoja šiuos duomenis, kad per „Sigstore“ sugeneruotų kriptografiškai pasirašytus SLSA kilmės paketus.

Tai sudėtingas apėjimas tų pačių sistemų, kurios skirtos programinės įrangos vientisumui garantuoti. Sukurdama galiojantį „Sigstore“ paketą, kenkėjiška programa gali publikuoti pažeistas bibliotekų versijas „PyPI“ ar „npm“, kurios atrodo lyg būtų atėjusios iš oficialios, patikrintos kūrimo aplinkos. Išoriniam stebėtojui ar automatizuotam įrankiui paketas atrodo turintis galiojančią kilmės grandinę. Tai paverčia saugumo infrastruktūrą ginklu užpuoliko rankose. Dėl to pažeistas kodas atrodo patikimesnis už teisėtą, nepasirašytą kodą.

Atminties nuskaitymas ir šoninis judėjimas

Kai kenkėjiška programa įsitvirtina, ji pradeda rinkti duomenis. Ji apima pritaikytus atminties skaitytuvus (scrapers), skirtus „Linux“, „macOS“ ir „Windows“. Šie skaitytuvai taikosi į aktyvių procesų atminties žemėlapius, kad išgautų jautrius, užšifruotus duomenis, kurie kitaip nepasiekiami diske. Tai slaptas metodas, nes jis padeda išvengti įtartinų failų kūrimo, kuriuos galėtų užfiksuoti galinių įrenginių aptikimo ir reagavimo (EDR) sistema.

Kirminas taip pat ieško būdų plisti. Jis skenuoja užkrėstą sistemą ieškodamas SSH raktų, SCP konfigūracijų ir „GitHub“ žetonų (tokens). Jei randa žetoną su rašymo teisėmis, jis naudoja „GitHub Actions“ vykdyklę, kad ištrauktų paslaptis tiesiai iš atminties. Tada jis bando užkrėsti kitas vartotojui priklausančias saugyklas. Valdymo ir kontrolės (C2) srautas paslepiamas viešoje „GitHub“ infrastruktūroje. Pavogti duomenys suspaudžiami, užšifruojami ir išsiunčiami į naujas viešas saugyklas, kurias valdo užpuolikas. Šios saugyklos dažnai turi aprašymą „Hades — The End for the Damned“.

„Išdegintos žemės“ išlikimo mechanizmas

Išlikimas sistemoje (persistence) yra pagrindinis „Hades“ dizaino komponentas. Kenkėjiška programa įsitvirtina darbo stotyje ir stebi pavogtų prisijungimo duomenų būseną. Jei saugumo komanda aptinka pažeidimą ir panaikina pavogtą „GitHub“ žetoną, „Hades“ pereina į reaktyvųjį režimą. Ji paleidžia trynimo procesą (wiper), kuris bando ištrinti vartotojo vietinius failus.

Tai keršto taktika. Ji sukuria didelės rizikos situaciją incidentų tyrėjams. Jei panaikinsite prieigą, galite prarasti duomenis vietinėje mašinoje. Ši logika verčia organizacijas elgtis atsargiai šalinimo etape. Kenkėjiška programa taip pat taikosi į 14 skirtingų DI agentų konfigūracijos failus. Ji įterpia instrukcijas, kurios sukelia naują infekciją kiekvieną kartą, kai programuotojas konsultuojasi su savo DI asistentu apie esamą darbo aplinką. Tai sukuria ciklą, kuriame pagalbos ieškojimas DI įrankyje iš naujo užkrečia sistemą.

Proaktyvios gynybos kūrimas prieš apgaulingas kenkėjiškas programas

„Hades“ kampanija rodo, kad mūsų pasitikėjimas DI kaip pagrindiniu saugumo sluoksniu yra pažeidžiamumas. Turime judėti link modelio, kuriame DI yra bendradarbis, o ne galutinis autoritetas. Rizikos požiūriu geriausia gynyba yra granuliuota, nesiremianti vienu sargu.

Pagrindinės rekomendacijos jūsų aplinkos apsaugai:

  1. Naudokite griežtą DI modelių ribų izoliaciją. Niekada neperduokite neapdoroto, nepatikimo kodo DI skeneriui be sistemos užklausos, kuri aiškiai draudžia modeliui vykdyti instrukcijas, esančias pačiame kode.
  2. Audituokite savo „GitHub Actions“ leidimus. Įgyvendinkite mažiausių privilegijų principą OIDC žetonams ir užtikrinkite, kad vykdyklės neturėtų nereikalingos rašymo prieigos prie jūsų saugyklų.
  3. Stebėkite neautorizuotą dvejetainių failų vykdymą. „Hades“ remiasi „Bun“ aplinkos įrašymu. Įrankiai, kurie fiksuoja arba blokuoja nežinomų dvejetainių failų vykdymą __init__.py kelyje, gali sustabdyti infekciją įėjimo taške.
  4. Rankiniu būdu tikrinkite „Sigstore“ kilmę. Nors „Hades“ gali suklastoti paketus, kūrimo laiko ar aplinkos kintamųjų neatitikimai kartais gali būti pastebėti teismo ekspertizės audito metu.
  5. Įgyvendinkite patikimas atsarginių kopijų strategijas. Kadangi „Hades“ turi trynimo funkciją, neprisijungus pasiekiamos arba nekeičiamos (immutable) jūsų kūrimo darbo atsarginės kopijos yra vienintelis būdas sumažinti duomenų praradimo grėsmę šalinimo metu.

Žvelgiant į grėsmių kraštovaizdį, „Hades“ tikriausiai yra ateities pranašas. Užpuolikai nebe bando tik išlaužti mūsų durų spynas; jie mokosi, kaip įtikinti skaitmeninį apsauginį juos įleisti. Turime nustoti traktuoti DI verdiktus kaip absoliučią tiesą ir pradėti juos vertinti kaip duomenų taškus, kuriems reikalingas žmogaus patvirtinimas.

Šaltiniai: NIST Cybersecurity Framework, MITRE ATT&CK Framework (Software Supply Chain Compromise), StepSecurity Hades Campaign Report.

Atsakomybės apribojimas: Šis straipsnis yra skirtas tik informaciniams ir švietimo tikslams ir nepakeičia profesionalaus kibernetinio saugumo audito ar reagavimo į incidentus paslaugų.

bg
bg
bg

Iki pasimatymo kitoje pusėje.

Pašto ir debesies saugojimo sprendimas suteikia galingiausias saugaus keitimosi duomenimis priemones, užtikrinančias jūsų duomenų saugumą ir privatumą.

/ Sukurti nemokamą paskyrą