Küberturvalisus

Strapi pettus: kuidas 36 pahatahtlikku npm-paketti ründasid andmebaasi infrastruktuuri

Leiti 36 pahatahtlikku npm-paketti, mis maskeerusid Strapi pistikprogrammideks ning ründasid Redis- ja PostgreSQL-andmebaase. Loe, kuidas kaitsta oma CI/CD-d ja andmebaase.
Strapi pettus: kuidas 36 pahatahtlikku npm-paketti ründasid andmebaasi infrastruktuuri

Vaid 13-tunnise akna jooksul ujutasid npm-registri üle 36 pahatahtlikku paketti, mis esinesid populaarse Strapi CMS-i legitiimsete tööriistadena. See ei olnud juhuslik digitaalne vandalism, vaid kaalutletud süsteemne katse tungida kriitilise tähtsusega andmebaasikeskkondadesse. Selleks ajaks, kui SafeDepi turvauurijad kampaania tuvastasid, olid ründajad juba loonud arenenud tugipunkti, kasutades ära arendajate usaldust avatud lähtekoodiga ökosüsteemide vastu.

Riski vaatenurgast rõhutab see vahejuhtum tänapäevase tarkvaraarenduse ebakindlat tegelikkust: meie tarneahelad on täpselt nii tugevad kui nende kõige nõrgem lüli. Ründajad kasutasid nelja libakontot — umarbek1233, kekylf12, tikeqemif26 ja umar_bektembiev1 —, et levitada pakette, mis tundusid esmapilgul küpsete kogukonna pistikprogrammidena. Kulisside taga olid need paketid aga loodud toimima digitaalse Trooja hobusena, kandes endas ründevara, mis on võimeline kompromiteerima Redise ja PostgreSQL-i instantsid.

Pettuse anatoomia

Ründajad kasutasid kavalat nimekonventsiooni, et mööda hiilida hõivatud arendajate mentaalsetest filtritest. Lisades pakettidele eesliite strapi-plugin- ja lisades tavalisi funktsionaalseid termineid nagu cron, database või health, matkisid nad ametliku Strapi ökosüsteemi nimestruktuuri. Huvitaval kombel määrasid nad kõigi 36 paketi versiooninumbriks 3.6.8. See oli teadlik valik, et tarkvara näiks küpse ja stabiilse väljalaskena, mitte kahtlase uue üleslaadimisena.

Minu kogemus ohuluure aruannete analüüsimisel näitab, et selline "tüposkvottimise-laadne" käitumine on üha tavalisem. Ründajad teavad, et arendajad otsivad sageli esmalt funktsionaalsust ja kontrollivad avaldajat alles teises järjekorras. Kuigi ametlikud Strapi pistikprogrammid on rangelt piiratud @strapi/ nimeruumiga, tekitab kogukonna pistikprogrammide kohustusliku nimeruumi puudumine lünga, mida pahatahtlikud osapooled on enam kui valmis täitma.

Postinstall Hook: vaikne timukas

Arhitektuurilisel tasandil ei ole siin ära kasutatud peamine haavatavus viga Strapis või npm-is endas, vaid pigem npm-i elutsükli funktsioon. Igaüks 36-st paketist sisaldas postinstall.js skripti. Npm-i ökosüsteemis käivitub installijärgne skript automaatselt kohe pärast paketi allalaadimist, nõudmata selle käivitamiseks kasutajalt mingit interaktsiooni.

Sellest tulenevalt käivitub pahatahtlik kood samade õigustega kui installimist teostav kasutaja. Kohalikus arenduskeskkonnas võib see tähendada juurdepääsu isiklikele failidele ja keskkonnamuutujatele. Kuid regulatiivses kontekstis, kus andmete terviklikkus on ülioluline, peitub tegelik oht CI/CD torujuhtmetes ja Dockeri konteinerites. Kui automatiseeritud ehitusprotsess tõmbab ühe neist pakettidest, saab skript selles konteinerkeskkonnas tõhusalt juurõigused, võimaldades tal liikuda edasi ja rünnata sisemist infrastruktuuri.

Andmekihi ekspluateerimine

Mis teeb selle konkreetse kampaania eriti detailseks ja ohtlikuks, on selle keskendumine andmekihile. Ründevara ei olnud üldine; see oli spetsiaalselt kohandatud Redise ja PostgreSQL-i ründamiseks. Kui postinstall skript käivitati, üritas see:

  • Varastada mandaate: Otsida keskkonnamuutujatest ja konfiguratsioonifailidest andmebaasi ühendusstringe.
  • Paigaldada reverse shell-e: Luua püsiv tagasiühendus ründaja käsu- ja kontrollserveriga (C2).
  • Jätta püsivaid implante: Tagada, et isegi kui esialgne protsess peatatakse, säilitaks ründaja süsteemis tugipunkti.

Sisuliselt otsisid ründajad kuningriigi võtmeid. Andmebaasid on sageli rakenduse arhitektuuri kõige tundlikum osa, sisaldades kõike alates kasutajate isikuandmetest kuni omandis oleva äriloogikani. Sihtides Redist ja PostgreSQL-i, soovisid ründajad muuta lihtsa paketi paigaldamise täiemahuliseks andmeturbemurdeks.

Inimtulemüür ja tarneahela turvalisus

Vaadates ohumaastikku, peame tõdema, et peale paikamise jääb inimfaktor oluliseks muutujaks. Meenub juhtum andmelekke uurimisest, kus kogenud arendaja lisas kogemata pahatahtliku sõltuvuse, sest töötas hilja ja ei kontrollinud paketi kodulehte. Seda juhtub ka parimatega, kuid automatiseeritud rünnakute maailmas ei saa me selliseid eksimusi enam lubada.

Lõppkasutaja vaatenurgast on sellise rikkumise mõju sageli nähtamatu, kuni on liiga hilja. Teisisõnu, kompromiteeritud sõltuvus on nagu aeglane leke laeva keres; te ei pruugi märgata vee tõusu enne, kui mootorid üles ütlevad. Antud juhul on "mootorid" teie andmebaasid ja "vesi" on volitamata juurdepääs teie kriitilise tähtsusega andmetele.

Ennetav kaitse: kuidas kaitsta oma torujuhet

Lõppkokkuvõttes langeb vastutus tarkvara tarneahela turvamise eest nii platvormidele kui ka arendajatele, kes neid kasutavad. Kuigi npm tegeleb nende pakettide eemaldamisega pärast teavitust, oli 13-tunnine kättesaadavuse aken enam kui piisav aeg, et automatiseeritud süsteemid pahatahtliku koodi endasse neelaksid.

Vastupidavama positsiooni loomiseks kaaluge järgmisi samme:

  1. Kasutage nimeruumiga pakette: Strapi kasutamisel eelistage @strapi/ nimeruumi kuuluvaid pistikprogramme. Olge äärmiselt skeptilised nimeruumita pakettide suhtes, millel puudub kirjeldus, hoidla või koduleht.
  2. Keelake skriptid vaikimisi: Kasutage lippu --ignore-scripts, kui käivitate npm install keskkondades, kus te ei usalda igat sõltuvust täielikult. See takistab postinstall skriptide automaatset käivitumist.
  3. Kasutage lukustusfaile ja auditeid: Käivitage regulaarselt npm audit ja kasutage package-lock.json faili, et tagada sõltuvuspuu prognoositavus ja see, et seda poleks muudetud.
  4. Rakendage võrgu väljundfiltreerimist: Arhitektuurilisel tasandil ei tohiks teie CI/CD jooksutajatel ja tootmiskonteineritel olla piiramatut juurdepääsu internetile. Volitamata väljuvate ühenduste blokeerimine võib takistada reverse shell-ide ühendumist ründajaga.

Vastumeetmena tulevaste rünnakute vastu peame käsitlema iga kolmanda osapoole sõltuvust potentsiaalse riskina. Võttes kasutusele null-usalduse (zero-trust) lähenemisviisi oma paketihaldurite suhtes, saame muuta oma arendustorustikud tugevaks kaitseks, mitte avatud ukseks ründajatele.

Sources:

  • SafeDep Threat Research Team Analysis
  • npm Registry Security Advisory Logs
  • Strapi Official Documentation on Plugin Security
bg
bg
bg

Kohtumiseni teisel poolel.

Meie läbivalt krüpteeritud e-posti ja pilvesalvestuse lahendus pakub kõige võimsamaid vahendeid turvaliseks andmevahetuseks, tagades teie andmete turvalisuse ja privaatsuse.

/ Tasuta konto loomin