Kiberdrošība

Strapi maldināšana: kā 36 ļaunprātīgas npm pakotnes vērsās pret datubāzu infrastruktūru

Tika atklātas 36 ļaunprātīgas npm pakotnes, kas maskētas par Strapi spraudņiem un izmantoja Redis un PostgreSQL ievainojamības. Uzziniet, kā šodien aizsargāt savu CI/CD un datubāzes.
Strapi maldināšana: kā 36 ļaunprātīgas npm pakotnes vērsās pret datubāzu infrastruktūru

Tikai 13 stundu laikā npm reģistru pārpludināja 36 ļaunprātīgas pakotnes, uzdodoties par populārās Strapi CMS leģitīmiem rīkiem. Tas nebija nejaušs digitālā vandālisma akts; tas bija aprēķināts, sistēmisks mēģinājums infiltrēties kritiski svarīgās datubāzu vidēs. Līdz brīdim, kad SafeDep drošības pētnieki identificēja kampaņu, draudu izpildītāji jau bija izveidojuši sarežģītu atbalsta punktu, izmantojot dabisko uzticību, ko izstrādātāji velta atvērtā pirmkoda ekosistēmām.

No riska perspektīvas šis incidents izgaismo bīstamu realitāti mūsdienu programmatūras izstrādē: mūsu piegādes ķēdes ir tikai tik stipras, cik to vājākā atkarība. Uzbrucēji izmantoja četrus viltus kontus — umarbek1233, kekylf12, tikeqemif26 un umar_bektembiev1 —, lai izplatītu pakotnes, kas no pirmā acu uzmetiena šķita nobrieduši kopienas spraudņi. Tomēr aizkulisēs šīs pakotnes bija izstrādātas kā digitālais Trojas zirgs, kas saturēja lietderīgās slodzes (payloads), kas spēj kompromitēt Redis un PostgreSQL instances.

Maldināšanas anatomija

Uzbrucēji izmantoja gudru nosaukumu piešķiršanas konvenciju, lai apietu aizņemtu izstrādātāju mentālos filtrus. Pievienojot savām pakotnēm prefiksu strapi-plugin- un tādus izplatītus funkcionālos terminus kā cron, database vai health, tie atdarināja oficiālās Strapi ekosistēmas nosaukumu struktūru. Interesanti, ka visām 36 pakotnēm viņi arī fiksēja versijas numuru 3.6.8. Tā bija apzināta izvēle, lai programmatūra izskatītos pēc nobrieduša, stabila laidiena, nevis aizdomīga jauna augšupielāde.

Mana pieredze, analizējot draudu izlūkošanas ziņojumus, rāda, ka šāda veida "typosquatting-līdzīga" uzvedība kļūst arvien izplatītāka. Uzbrucēji zina, ka izstrādātāji bieži vispirms meklē funkcionalitāti un tikai pēc tam pārbauda izdevēju. Lai gan oficiālie Strapi spraudņi ir stingri ierobežoti @strapi/ vārdtelpā, obligātas vārdtelpas trūkums kopienas spraudņiem rada plaisu, kuru ļaunprātīgi dalībnieki labprāt aizpilda.

Postinstall āķis: klusais bende

Arhitektūras līmenī galvenā šeit izmantotā ievainojamība nav kļūda pašā Strapi vai npm, bet gan npm dzīves cikla funkcija. Katra no 36 pakotnēm saturēja postinstall.js skriptu. Npm ekosistēmā pēcinstalācijas skripts tiek izpildīts automātiski, tiklīdz pakotne ir lejupielādēta, un tā lietderīgās slodzes aktivizēšanai nav nepieciešama nekāda lietotāja mijiedarbība.

Līdz ar to ļaunprātīgais kods darbojas ar tādām pašām privilēģijām kā lietotājam, kurš veic instalēšanu. Lokālajā izstrādes vidē tas varētu nozīmēt piekļuvi personīgajiem failiem un vides mainīgajiem. Tomēr regulatīvajā kontekstā, kur datu integritāte ir vissvarīgākā, reālās briesmas slēpjas CI/CD konveijeros un Docker konteineros. Ja automatizēts būvēšanas process ielādē kādu no šīm pakotnēm, skripts faktiski iegūst root piekļuvi šajā konteinerizētajā vidē, ļaujot tam izvērsties un uzbrukt iekšējai infrastruktūrai.

Datu slāņa izmantošana

Tas, kas padara šo konkrēto kampaņu īpaši detalizētu un bīstamu, ir tās koncentrēšanās uz datu slāni. Lietderīgās slodzes nebija vispārīgas; tās bija īpaši pielāgotas Redis un PostgreSQL izmantošanai. Tiklīdz tika aktivizēts postinstall skripts, tas mēģināja:

  • Ievākt akreditācijas datus: Pārmeklēt vides mainīgos un konfigurācijas failus, meklējot datubāzes savienojuma virknes.
  • Izvietot reversās čaulas (Reverse Shells): Izveidot pastāvīgu atpakaļejošu kanālu uz uzbrucēja komandcentru (C2).
  • Ievietot pastāvīgus implantus: Nodrošināt, ka pat tad, ja sākotnējais process tiek pārtraukts, uzbrucējs saglabā piekļuvi sistēmai.

Būtībā uzbrucēji meklēja "valstības atslēgas". Datubāzes bieži vien ir lietojumprogrammas arhitektūras jutīgākā daļa, kas satur visu, sākot no lietotāju PII (personu identificējošas informācijas) līdz patentētai biznesa loģikai. Mērķējot uz Redis un PostgreSQL, uzbrucēju mērķis bija pārvērst vienkāršu pakotnes instalēšanu pilna mēroga datu aizsardzības pārkāpumā.

Cilvēciskais ugunsmūris un piegādes ķēdes drošība

Raugoties uz draudu ainavu, mums jāatzīst, ka, neskaitot ielāpu uzstādīšanu, cilvēciskais faktors joprojām ir nozīmīgs mainīgais. Es atceros gadījumu datu noplūdes izmeklēšanas laikā, kad vecākais izstrādātājs nejauši ieviesa ļaunprātīgu atkarību, jo strādāja vēlu un nepārbaudīja pakotnes mājaslapu. Tas notiek ar labākajiem no mums, taču automatizētu uzbrukumu pasaulē mēs vairs nevaram atļauties šādas kļūmes.

No galalietotāja viedokļa šāda pārkāpuma ietekme bieži vien ir neredzama, līdz ir par vēlu. Citiem vārdiem sakot, kompromitēta atkarība ir kā lēna sūce kuģa korpusā; jūs varat nepamanīt ūdens celšanos, līdz dzinēji sabojājas. Šajā gadījumā "dzinēji" ir jūsu datubāzes, un "ūdens" ir neautorizēta piekļuve jūsu kritiski svarīgajiem datiem.

Proaktīva aizsardzība: kā aizsargāt savu konveijeru

Galu galā atbildība par programmatūras piegādes ķēdes drošību gulstas gan uz platformām, gan uz izstrādātājiem, kuri tās izmanto. Kamēr npm strādā, lai noņemtu šīs pakotnes pēc ziņojuma saņemšanas, 13 stundu pieejamības logs bija vairāk nekā pietiekams laiks, lai automatizētās sistēmas uzņemtu ļaunprātīgo kodu.

Lai izveidotu noturīgāku aizsardzību, apsveriet šādus praktiskus soļus:

  1. Izmantojiet vārdtelpu pakotnes: Izmantojot Strapi, dodiet priekšroku spraudņiem @strapi/ vārdtelpā. Esiet īpaši skeptiski pret pakotnēm bez vārdtelpas, kurām trūkst apraksta, repozitorija vai mājaslapas.
  2. Pēc noklusējuma atspējojiet skriptus: Izmantojiet karodziņu --ignore-scripts, palaižot npm install vidēs, kurās jūs pilnībā neuzticaties katrai atkarībai. Tas novērš postinstall skriptu automātisku palaišanu.
  3. Izmantojiet fiksācijas failus (Lockfiles) un auditus: Regulāri palaidiet npm audit un izmantojiet package-lock.json, lai nodrošinētu, ka jūsu atkarību koks ir paredzams un nav ticis izmainīts.
  4. Ieviesiet tīkla izejošās plūsmas filtrēšanu: Arhitektūras līmenī jūsu CI/CD izpildītājiem un produkcijas konteineriem nevajadzētu būt neierobežotai piekļuvei internetam. Neautorizētu izejošo savienojumu bloķēšana var novērst reverso čaulu savienošanos ar uzbrucēju.

Kā pretpasākumu nākotnes uzbrukumiem mums katra trešās puses atkarība ir jāuztver kā potenciāls risks. Pieņemot nulles uzticības (zero-trust) pieeju mūsu pakotņu pārvaldniekiem, mēs varam pārvērst savus izstrādes konveijerus par spēcīgu aizsardzību, nevis atvērtām durvīm ekspluatācijai.

Avoti:

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

Uz tikšanos otrā pusē.

Mūsu end-to-end šifrētais e-pasta un mākoņdatu glabāšanas risinājums nodrošina visefektīvākos līdzekļus drošai datu apmaiņai, garantējot jūsu datu drošību un konfidencialitāti.

/ Izveidot bezmaksas kontu