Iepriekšējā epizodē Atvērtā pirmkoda ļaunprātīgās pakotnes: problēma, mēs apspriedām, kāpēc draudu izpildītāji bija tik entuziastiski par jaunu ļaunprātīgu komponentu publicēšanu vai ļaunprogrammatūras ievadīšanu esošo komponentu jaunākajās versijās: atvērtā pirmkoda infrastruktūra ļauj ikvienam jebkur izveidot īslaicīgu kontu komponentu reģistrā (piemēram, NPM, PyPI, Docker Hub vai Visual Studio Marketplace) vai sadarbības izstrādes platformā (piemēram, GitHub). Nulle izmaksu un daudzas iespējas izmantot programmatūras komandu pārmērīgo uzticēšanos trešo pušu komponentiem.
Asimetrija starp to, cik viegli uzbrucējiem ir izplatīt ļaunprogrammatūru, izmantojot atvērtā pirmkoda infrastruktūru, un cik grūti organizācijām, kas izstrādā programmatūru (visiem?), ir izvairīties no inficēšanās ar ļaunprogrammatūru (un piegādāt ļaunprogrammatūru programmatūrā, ko tās izplata citiem), noveda pie tā, ka pagājušajā gadā ļaunprātīgo pakotņu skaits gandrīz sasniedza ceturtdaļmiljonu.
Šī ir tik liela mēroga problēma, ka neviena atsevišķa organizācija to nevar atrisināt, un kopiena pašlaik pārveido atvērtā pirmkoda procesu attiecībā uz uzticēšanos, drošības pēc noklusējuma un drošības pēc dizaina principiem, kā arī komponentu dzīves ciklu. Mēs aplūkosim šādas idejas nākamajā epizodē. Aizsardzība pret atvērtā pirmkoda ļaunprātīgām pakotnēm: kas darbojas (nedarbojas).
Atcerieties, ka mēs runājam par programmatūras komponentiem, kas lielākoties atbilst programmatūras pakotnesatkārtoti lietojami komponenti, kas iepakoti tā, lai uz tiem varētu atsaukties kā uz atkarību programmatūras manifestā, un instalēti, izmantojot pakotņu pārvaldnieku vai veidošanas rīku. Lūdzu, ņemiet vērā, ka šo gadījumu varētu paplašināt, iekļaujot publiskus konteineru attēli (izmanto konteineru izpildlaiki un orķestrēšanas platformas, piemēram, Kubernetes), un programmatūras rīku paplašinājumi (ēkai, automatizācijai un izvietošanai).
Šeit mēs analizējam, kā tas notiek uzbrukuma taktika, kuras pamatā ir ļaunprātīgi komponenti darbojas, saskaņā ar iepriekšējiem piemēriem un to, ko esam redzējuši mūsu ļaunprogrammatūras agrīnās brīdināšanas platformā (MEW). Mēs analizēsim ļaunprātīgos komponentus dažādos aspektos:
(1) izvēlētais izplatīšanas veids (izmantotais reģistrs jaunā vai esošā komponentā un publicētās komponentes versijas inficēšanai izmantotā metode), (2) kā ļaunprogrammatūra tiek aktivizēta vai iedarbināta, (3) ļaunprātīgā uzvedība, t. i., kādas kaitīgas darbības tiek novērotas un kāda ir uzbrucēja motivācija, (4) kādas metodes ir izplatītas obfukcijai, slēpšanai, lai paliktu nepamanīts, sāniskai pārvietošanai, saziņai ar vadības un kontroles (C2) saimniekdatoriem utt.; un (5) metodes, kā iegūt pietiekamu popularitāti un uzticību, lai upuri galu galā instalētu komponentu.
Izvēlētais izplatīšanas mehānisms
Mēs novērojam "fona troksnis"vienkāršu ļaunprātīgu pakotņu, kas izmanto drukas kļūdu, lai pikšķerētu neuzmanīgus izstrādātājus ar drukas kļūdu to atkarības pakotnes nosaukumā. Daudzas populāras pakotnes saņem virkni līdzīgi nosauktu pakotņu ar drukas kļūdām, sagaidot, ka tās pikšķerēs dažus neuzmanīgus izstrādātājus.
Viņi izmanto īslaicīgu kontu, publicē typosquat pakotņu grupu, izveido citu un publicē vēl vienu grupu… Izmantojot zināmu automatizāciju un atjautību, viņi var panākt zināmu sarežģītību, taču parasti tie ir diezgan triviāli. Mēs iekšēji tos saucam par “anšoviem". Galvenais mērķis ir akreditācijas datu zagšana, taču reizēm mēs atrodam spiegprogrammatūru, kas izgūst pirmkodu vai sensitīvus datus, piemēram, personu identificējošu informāciju (PII), ieraksta starpliktuvē, un rada citas bažas.
Pēkšņi mēs redzam sarežģītākus ļaunprātīgos komponentus jeb “haizivis”. Neliela daļa ir vērsta pret konkrētām grupām vai organizācijām, parasti izmantojot kriptovalūtu nosūcējus vai tīmekļa skimmerus, kas tiek aktivizēti nosacīti, iespējams, sekojot pieejai, kas redzama… notikumu plūsmas incidents uzbrukuma vērtuma atšifrēšanu tikai tad, ja uz pakotni tiek atsauce no mērķa pakotnes.
Sadales mehānisms tika analizēts izcilā un tagad jau klasiskā rakstā “Backstabber's Knife kolekcija: atvērtā pirmkoda programmatūras piegādes ķēdes uzbrukumu apskats”, kas ir obligāti jāizlasa. Jūs noteikti jau esat redzējuši šo jauko diagrammu:
Tika izpētītas visas iespējas, tostarp jaunas un esošas pakotnes; ietekmējot pirmkodu, būvēšanas sistēmu vai pašu iepakoto komponentu; izmantojot nozagtas akreditācijas datus vai sociālo inženieriju; nolaupot pamestus kontus un repozitorijus vai saindējot uzturētos. Daži uzbrukumi saņēma nosaukumus (Pareizrakstība, Atkarības apjukums, Acīmredzama apjukums, Repo-jackutt.) un jau tika apspriesti citur.
Kā ar izvēlētajiem reģistriem?
NPM joprojām ir līderpozīcijās ļaunprātīgo pakotņu kopējā skaitā, taču šogad mēs novērojām pieaugumu PyPI. Python ir populāra datu zinātnes un mašīnmācīšanās ekosistēma. Faktiski ļaunprogrammatūras blīvums PyPI tagad ir lielāks nekā NPM.
Kā tiek aktivizēta ļaunprogrammatūra
Ļaunprātīgas pakotnes instalēšanas laikā tiek aktivizētas tikai 4 no 10 gadījumiem (pēdējos gados tas bija gandrīz 6 no 10). Pārējie ļaunprātīgu darbību veic izpildes laikā, un 1 no 100 gadījumiem tiek aktivizēti testu izpildes laikā. Šķiet, ka pretinieki zina, ka daudzviet ir atspējota nekontrolēta instalēšanas skriptu izpilde.
Ko ļaundari iegūst?
Mēs uzskaitīsim ļaunprātīgas uzvedības kategorijas, sākot ar populārāko. Lūdzu, ņemiet vērā, ka ietekme var būt diezgan atšķirīga: a tīrītājs ir spītīgi destruktīvs, taču tas nav izplatīts un ir novērots tikai dažos gadījumos, kas saistīti ar mērķtiecīgām kiberkara kampaņām vai brutālu haktīvismu. Šādas kategorijas ir diezgan izplatītas:
- InfoStealer / Credentials DrainerVisbiežāk sastopamie, vairāk nekā 90 %, no vienkāršajiem uzbrukumiem ir vienkārši zagļi, kas galvenokārt meklē tādus akreditācijas datus kā paroles, piekļuves žetoni, API atslēgas un privātās atslēgas (SSH un tamlīdzīgi). Iespējams, to ir visvienkāršāk uzrakstīt (kopā ar tīrītājiem?). Tie uzskaita zināmos failus/direktorijus un citus avotus (piemēram, reģistra atslēgas), iesaiņo saturu un nosūta šos datus uz C2 serveri. Ideja ir vienkārša: “Es publicēju zagli pikšķerēšanas akreditācijas datiem, lai vēlāk varētu izmantot akreditācijas datus tieša uzbrukuma uzsākšanai”.
Novērotais C2 tīkls parasti ir lēts un neprofesionāls, piemēram, Telegram kanāli vai ngrokiem līdzīgi tunelēšanas rīki (bieži vien apgriezto starpniekservera veidā, kas tiek atklāti, izmantojot VPN izejošās IP adreses). Pastāv simtiem (!) iespēju, un daudzi GitHub projekti ir pakļauti paroles zagšanas tēmaSpecializācijas, piemēram, taustiņu nospiedumu reģistrētāji, ir reti sastopamas ļaunprātīgās pakotnēs un konteineru attēlos, bet biežāk sastopamas rīku paplašinājumos, kur tiek sagaidīta lietotāja mijiedarbība.
- Pilinātājs / LejupielādētājsOtrais pēc popularitātes, parasti ieņemot pirmo vietu daudzpakāpju uzbrukumos. Vairāk nekā katram trešajam ļaunprātīgajam komponentam ir nomešanas programmas (ja ļaunprātīgā lietderīgā slodze ir iekļauta pakotnē) vai lejupielādes programmas (lietderīgā slodze tiek lejupielādēta no galapunkta uzbrucēja kontrolē). Lietderīgā slodze bieži vien ir zināms binārā ļaunprogrammatūras variants, un tā tiek palaista un dažreiz saglabāta, lai instalētu aizmugures durvis, spiegprogrammatūru, kriptovalūtu nosūcējus un citus lietošanas gadījumus. Lejupielādētā vai izvietotā lietderīgā slodze sāk otrās fāzes uzbrukumu ar visu jaudu, ko nodrošina esošie ļaunprogrammatūras bināri faili. Bināros failus var izplatīt pakotnē, bieži vien maskējot tos kā attēlus vai it kā nekaitīgus failu tipus, lai izvairītos no atklāšanas, izveidojot savienojumu ar negaidītām vietnēm.
- Kriptovalūtu zagļi/kalnračiFinansiāli motivēti pretinieki ir gatavi izmantot jūsu mākoņa resursus kriptovalūtu ieguves programmu darbināšanai (viņi pat nosaka, vai tās darbojas mākoņa virtuālajā mašīnā). Viņiem nerūp... zema peļņas attiecība 1 ASV dolārs par katriem 53 ASV dolāriem, kas tiek iekasēti no upura par nozagto mākoņinfrastruktūru. Upuri var par to neuzzināt, kamēr nesaņem negaidītu rēķinu. Par laimi, tas notiek bieži. Kriptogrāfija ļaunprātīgās pakotnēs ietvertās kampaņas laiku pa laikam parādās un pēc tam pazūd, pikšķerējot maka lietotājus vai galu galā vēršoties pret maka pakalpojumu sniedzēju, kā tas ir Ledger uzbrukums.
Cita uzvedība, piemēram, izvietošana pakaļdurvis attālinātai koda izpildei, atverot apgriezto čaulu, tagad notiek retāk nekā agrāk. Piemēram, 123rf_līdzstrādnieka_tīmeklis pakotne (tagad noņemta no reģistra) atveras bez jebkādas obfusācijas, izmantojot apgrieztu čaulu, kas kopēta un ielīmēta no reģistra Apgrieztā čaulas apkrāptu lapa:
Papildus likumīgiem un ļaunprātīgiem komponentiem esam novērojuši vairākus ļaunprātīgas izmantošanas gadījumus, tostarp:
Surogātpasta pakas
Ir tūkstošiem mazu pakotņu, galvenokārt NPM, bez ļaunprogrammatūras, bet solot vieglus ienākumus, viltotu eļļošanu, saites uz Viagra piedāvājumiem un visu pārējo. Daži lietotāji publicē šādu surogātpastu un patērē daudz joslas platuma no reģistra. Vēl viens(-i) dalībnieks(-i), iespējams, no Indonēzijas, mēģināja gūt labumu, ļaunprātīgi izmantojot tējuRank paredzēts atvērtā pirmkoda izstrādātāju kompensēšanai, izveidojot desmitiem tūkstošu savstarpēji saistītu NPM pakotņu ar saistītām GitHub fiktīvajām krātuvēm. Tas ir klajš lietošanas noteikumu pārkāpums.
Kļūdu atlīdzība un drošības pētījumu mānīšanās
Kad pakotne sevi raksturo kā datu izvilkšanu labiem mērķiem, piemēram, drošības trūkumu atklāšanai kļūdu meklēšanas programmām vai noteiktu ekosistēmas aspektu izpētei, mēs esam redzējuši tūkstošiem pakotņu šajā kategorijā, kas no PortSwigger (piemēram, resursdatora oastify.com domēnā) uz Burp Collaborator adresi nosūta identifikācijas, bet ne pārāk sensitīvus datus. Mēs bieži novērojām kopiju veidošanu. Atkarības apjukums Aleksa Birsana koncepcijas pierādījums, tāpat kā aurora-webmail-pro pakotne (noņemta no reģistra), kas vienkārši palaiž šo nejauko kodu pirmsinstalēšanas skriptā:
Un tajā bija iekļauts arī “Šis ir vienkāršs atkarības apjukuma uzbrukuma koncepcijas pierādījums"Atrunas apraksts" sadaļā pack.jsonTas ir klajš pakalpojumu sniegšanas noteikumu pārkāpums, pat bez ļaunprātīga nolūka.
Kādas labas ziņas? Mēs vēl neesam redzējuši (vēl) izspiedējvīrusu uzbrukumus, kas veikti, izmantojot ļaunprātīgus komponentus. Nezināmu iemeslu dēļ kibernoziedznieki, šķiet, dod priekšroku tradicionālākiem e-pasta pikšķerēšanas, RDP balstītiem un automātiskas lejupielādes piegādes mehānismiem.
Papildu novērotās metodes
Noturībai, aizsardzības izvairīšanai, informācijas vākšanai, saziņai ar vadības un kontroles resursdatoriem un eksfiltrācijai tika izmantotas daudzas metodes.
Neatlaidība Ļaunprātīgo komponentu atklāšana tiek iegūta, izmantojot otrās pakāpes binārā ļaunprogrammatūras noturības funkcijas, taču dažreiz šī uzvedība ir atrodama pakotnes kodā, visbiežāk novērojot plānotos uzdevumus un izmaiņas Windows reģistrā.
Aplaupīšana ir izplatīta, bet vienkārša. Lielākā daļa pareizrakstības kļūdu pakotņu (atcerieties “anšoviem”?”) vispār neizmanto obfuskāciju; daudzi izmanto vai nu triviālas metodes (base64/hex kodējumu vai aizvietošanas šifrus, piemēram, rot13), vai arī pieejamos koda obfuskatorus un minimizāciju, ko var viegli mainīt ar pareiziem rīkiem. Tikai “haizivis” veic īstu, pamatīgu obfuskāciju, ko ir grūti reversēt.
Apslēpšana var slēpt uzbrukumu, bet kāpēc atvērtā pirmkoda komponentes kods būtu jāslēpj? Vai ir pierādījumi, ka kaut kas ir jāslēpj no visiem redzamiem objektiem? Esam atraduši daudzus gadījumus, kad neļaunprātīgas pakotnes izmanto apslēpšanu, lai aizsargātu intelektuālo īpašumu, kas ir pretrunā ar "atvērtā pirmkoda" jēdzienu. Apslēpšanu var izmantot kā ļaunprogrammatūras pierādījumu, taču tā nav pārliecinoša. To ir arī grūti atcelt.
Izvairīšanās no aizsardzības kontroles izmanto vienkāršas metodes. Ļaunprātīgs kods bieži vien ir aizsargāts mēģināt … noķert bloki, kas ignorē jebkādus izņēmumus, tāpēc žurnālos netiek rādīta anomāla aktivitāte. Vides pārbaude (darbojas virtuālajā mašīnā vai konteinerā) notiek reti, ja vien ļaunprogrammatūra nav vērsta pret konkrētu organizāciju vai vidi.
Bināro failu maskēšana attēlos un PDF failos (savā ziņā steganogrāfija) bija vēl viena metode, kas tika izmantota, lai izvairītos no atklāšanas.
Tā kā visizplatītākie ļaunprātīgie komponenti ir informācijas zagļi, datu vākšana ir būtiska. Noslēpumi (paroles, piekļuves žetoni, API atslēgas, kriptogrāfiskās atslēgas) tiek regulāri skenēti žurnālfailos, vides mainīgajos un pat starpliktuvē (kas novērots banku Trojas zirgos un kriptovalūtu zagļos). Arī pirmkoda eksfiltrācija ir izplatīta, jo pakotņu instalēšana bieži tiek veikta izstrādes mezglā, kur varētu tikt klonētas iekšējās git krātuves. Esam redzējuši pakotnes, kas uzskaita direktorijus, meklējot git krātuves. Diezgan bieži tiek meklētas tādas atrašanās vietas kā .env, private.pem, settings.py, app.js vai application.properties.
Eksfiltrācija ir vēl viena plaši izmantota darbība. Tikai neliela daļa ļaunprātīgo pakotņu pat mēģina slēpt iegūto datu galamērķi. Telegram kanāli un ngrokiem līdzīgi tuneļi bieži tiek izmantoti. Un to ir daudz parasti baltajā sarakstā iekļautie domēni, ko izmanto eksfiltrācijai.
Citas metodes, piemēram, privilēģiju eskalācija vai sānu kustība, bija retāk sastopamas.
Popularitātes un uzticības iegūšana
Iedomājieties tehnoloģiju krāpnieku ar gatavu, ārkārtīgi ļaunprātīgu lietu, kas domā: “Kā lai es padaru šo sūda gabalu uzticamu šiem neko nenojaušošajiem idiotiem?”.
Tas nozīmē, kā izveidot ierakstu ļaunprātīgajam komponentam, lai parādītu daudzas zvaigznes/atzarojumus (popularitātei), kā arī versijas/izdevumus un pull requests (aktivitātei). Ideja ir iegūt fiktīvu popularitāti (zvaigznes) un apgādājamos, kā arī pārliecinošu izskatu par atbilstību un uzturēšanu.
Reģistrs nepārbauda, vai GitHub projekta saturs un pakotnes saturs sakrīt.Šī ir labi zināma problēma programmatūras piegādes ķēdē. Publiskie reģistri ir kā milzu bedres, kas aprij visu, kas tiem tiek uzmests. Jūs varat saistīt jebkuru repozitoriju.
Ja ļaunprātīgā pakotne pieļauj kļūdu, kas ietekmē populāru pakotni, tas ir vienkārši: vienkārši atsaucieties uz esošo GitHub repozitoriju atkarību manifestā, kas izmantots pakotnes izveidei un publicēšanai reģistrā. Jaunām pakotnēm viltotā GitHub repozitorijā, iespējams, būs nepieciešama lielāka atjautība, iespējams, izveidojot viltotu zvaigžņu vērošana/sazarošanās GitHub konti, izmantojot skriptēšanu.
Un, ja jūsu pakotnes saturs ir samērā līdzīgs repozitorija saturam, veiciet dažas labi izstrādātas izmaiņas šeit un tur… Jūs varat ievietot savu ļaunprogrammatūru jaunā pakotnē, kas atgādina populāru pakotni, atsaucoties uz esošās repozitorija pakotni, un gaidīt drukas kļūdas. Ja kāds uzdrošināsies salīdzināt pakotnes tarball saturu ar GitHub repozitorija saturu, atšķirības ļaunprogrammatūras ievietošanas punktos varētu viegli nepamanīt. Mēs esam redzējuši šo pieeju daudzas reizes iepriekš.
Mehānisms, kas komponentam ļautu sniegt pret viltojumiem drošu norādi par izcelsmi, iepakojuma izgatavošanas veidu, avotiem un to ražotāju, būtu apsveicams. Bet tas ir cits stāsts.
Vai X komponents ir ļaunprogrammatūra?
Vai pastāv (visaptveroša) ļaunprātīgo pakotņu datubāze? Nē. Atvērtā pirmkoda ievainojamībām ir piešķirts CVE ID, bet tikai dažām ļaunprātīgajām pakotnēm (īpaši tām, kas nonāk ziņu virsrakstos) tāds tiek piešķirts. Ļaunprātīgo pakotņu CVE ir CWE-506 (iegults ļaunprātīgs kods).
Parastajiem ļaunprogrammatūras rīkiem (VirusTotal, MalwareBazaar, SOREL-20M…) nav īpašu aizsardzības līdzekļu pret ļaunprātīgām komponentēm. Tas būtu apsveicami!
Ir pētījumu paraugu datubāzes un datu kopas analīzei (mēs izmantojam dažas no tām), taču ieraksti tiek atjaunināti tikai tad, kad ļaunprātīgā pakotne ir zināma, kas bieži vien ir par vēlu. Ja jūs tas interesē, OpenSSF Ļaunprātīgas pakotnes ir jauks sākums.
Nākamajā ierakstā mēs apspriedīsim, kā noteikt, vai konkrētā pakotne ir ļaunprātīga. Spoileris: jā, ir veidi, kā pārbaudīt ļaunprātīgas komponentes jau iedarbības loga sākumā, pirms reģistrs noņem zināmu ļaunprātīgu komponentu.
Papildu informācija
Nākamajā epizodē "Aizsardzība pret atvērtā pirmkoda ļaunprātīgām pakotnēm: kas darbojas (nedarbojas)" Mēs apspriedīsim, ko darīt un ko nedarīt atvērtā pirmkoda drošības jomā. Lielākajai daļai drošību apzinošu profesionāļu ir intuīcija par to, kā rīkoties ar šo apdraudējumu, taču pastāv daudz nepareizu priekšstatu.
Mēs pārskatīsim, kāpēc šīs idejas ir nepareizas un kā šādi maldīgi priekšstati veicina šī uzbrukuma mehānisma popularitāti un milzīgo risku, ar ko saskaras organizācijas. Pēc tam mēs pievērsīsimies tam, kas darbojas un kādas pūles un resursi ir nepieciešami.
Tāpat mēs publicēsim informāciju par ļaunprātīgo pakotņu evolūciju, ņemot vērā to nolūku, injekcijas mehānismu un uzbrukuma metodes.
Sekojiet līdzi!





