Open-source Open-source

Open-source napadi: developeri su meta hakera

Kad povjerenje u kod postane oružje

Možete li zamisliti da instalirate NPM paket koji ste koristili stotine puta, pokrenete npm install, i u tom trenutku, bez ikakve greške, upozorenja ili sumnjivog ponašanja, stiže maliciozni kod.

Kod tiho krade vaše environment varijable, SSH ključeve i pristupne tokene. Zvuči dramatično? Upravo to se događa tisućama developera diljem svijeta, uključujući Hrvatsku, i to sve češće.

Prema izvještaju tvrtke Sonatype za 2024. godinu, broj napada na open-source ekosustav porastao je za nevjerojatnih 156% u usporedbi s prethodnom godinom.

Više od 245.000 malicioznih paketa otkriveno je samo u jednoj godini, što je više nego ukupan broj svih malicioznih paketa detektiranih u svim prethodnim godinama zajedno.

Navedene brojke predstavljaju realne pakete koje su developeri preuzeli u projekte, a svaki od njih predstavlja ozbiljnu kibernetičku prijetnju.

Zašto su baš developeri postali toliko privlačna meta? Naime, developer koji kompromitira svoju radnu stanicu ne ugrožava samo sebe, već potencijalno tisuće ili milijune korisnika softvera koji razvija.

Hakeri su zbrojili dva i dva i shvatili, i umjesto da napadaju tvrđave, sada ciljaju graditelje tvrđava.

U ovom članku analizirat ćemo trenutno stanje open-source sigurnosti, raščlaniti najčešće metode napada, objasniti zašto su developeri toliko ranjivi i, što je najvažnije, pružiti konkretne korake koje možete poduzeti već danas da zaštitite sebe i svoje projekte.

Zato, ako vas zanima karijera u cyber security području ili jednostavno želite unaprijediti svoju digitalnu sigurnost, na pravom ste mjestu!

Trenutna situacija u open-source-u

Open-source, developer, haker, Pexels
Open-source, developer, haker, Pexels

Open-source softver čini temelj modernog digitalnog svijeta.

Linux Foundation

Nadalje, između 70% i 90% svakog modernog softverskog proizvoda čine open-source komponente.

NPM registar, kao središnje mjesto za JavaScript i Node.js pakete, danas broji više od dva milijuna paketa i bilježi milijarde preuzimanja tjedno. Gotovo svaka aplikacija koju koristite (od mobilnog bankarstva do društvenih mreža) oslanja se na stotine, ponekad i tisuće open-source biblioteka.

Sveprisutnost čini kibernetičku sigurnost open-source ekosustava kritičnim pitanjem za cijelu industriju.

Posljednjih godina svjedočili smo nizu incidenata koji su pokazali koliko je ovaj ekosustav osjetljiv. Svaki od njih pruža važne lekcije za edukaciju o kibernetičkoj sigurnosti.

Log4Shell (CVE-2021-44228) je najpoznatiji primjer. Kritična zero-day ranjivost u Apache Log4j biblioteci, koju koriste milijuni Java aplikacija, omogućila je napadačima udaljeno izvršavanje koda.

Ranjivost je postojala godinama prije nego što je otkrivena, a njen utjecaj bio je toliko velik da je američka agencija CISA, kao i CERT Hrvatska, izdala hitna upozorenja opisavši je kao jednu od najozbiljnijih ranjivosti u posljednjem desetljeću.

Incident Event-stream iz 2018. godine otkrio je podmuklu strategiju. Haker je preuzeo održavanje popularnog NPM paketa od izvornog autora koji je izgubio interes za projekt, a zatim podmetnuo maliciozni kod koji je specifično ciljao korisnike novčanika Copay Bitcoin-a.

Ovaj slučaj savršeno ilustrira kako funkcionira ekosustav NPM paketa i zašto je razumijevanje lanca ovisnosti ključno za digitalnu sigurnost.

Još malo napada koji su obilježili prošlost. Codecov breach iz 2021. godine pokazao je kako kompromitiranje jednog CI/CD alata može otvoriti vrata u tisuće organizacija odjednom. Napadači su modificirali Codecov Bash Uploader skriptu i mjesecima prikupljali osjetljive podatke iz CI/CD okruženja korisnika.

Zašto je open-source tako atraktivna meta?

Četiri su ključna faktora.

Prvo, široka upotreba. Jedan kompromitiran paket može pogoditi milijune korisnika.

Drugo, vidljivost koda. Napadači mogu proučavati kod kako bi pronašli zero-day ranjivosti koje nitko drugi nije primijetio.

Treće, povjerenje zajednice. Developeri instinktivno vjeruju popularnim paketima bez detaljne provjere.

I četvrto, lančana ovisnost. Moderni projekti imaju duboka stabla ovisnosti gdje jedna kompromitirana biblioteka na petoj razini dubine može ugroziti cijeli sustav.

Vrste i metode napada

Napadači su razvili sofisticirane tehnike za iskorištavanje open-source ekosustava. Proučite ove metode i biti ćete bliže učinkovitoj zaštiti i temelj svake ozbiljne edukacije o kibernetičkoj sigurnosti.

Napadi na lanac opskrbe softvera

Sigurnost lanca opskrbe softvera danas je jedan od najvećih izazova u IT industriji, a tema koju CERT Hrvatska i slične organizacije sve češće ističu u svojim upozorenjima.

Lanac nabave, lanac opskrbe Pexels
Lanac nabave, lanac opskrbe, Pexels

Princip je relativno jednostavan. Recimo da umjesto da napadaju krajnji cilj izravno, hakeri kompromitiraju jednu od komponenti u lancu koje taj cilj koristi.

Ako uspijete ubaciti maliciozni kod u biblioteku koju koristi vaša meta, vaš kod će se automatski distribuirati pri sljedećem ažuriranju.

Dependency Confusion

Ovu tehniku popularizirao je istraživač Alex Birsan 2021. godine, a princip je iznenađujuće elegantan. Mnoge tvrtke koriste interne, privatne pakete s određenim imenima.

Ako napadač objavi javni paket s istim imenom na NPM, PyPI ili drugom javnom registru, mnogi package manageri automatski će preuzeti javnu, malicioznu verziju umjesto interne.

Birsan je ovom tehnikom uspješno infiltrirao sustave Applea, Microsofta i drugih velikih tehnoloških tvrtki, zaradivši pritom preko 130.000 dolara kroz bug bounty programe.

Ono što je zabrinjavajuće jest to da ova tehnika ne zahtijeva nikakav poseban pristup ciljanoj organizaciji. Dovoljno je pogoditi ime internog paketa, a te informacije često procure kroz javno vidljive konfiguracije, lock datoteke ili greške u dokumentaciji.

Typosquatting

Typosquatting je jedna od najjednostavnijih, ali i najučinkovitijih kibernetičkih prijetnji usmjerenih prema developerima. Napadač objavljuje maliciozni paket čije ime je gotovo identično popularnom paketu, oslanjajući se na tipfelere pri instalaciji.

Primjerice, umjesto lodash, napadač objavljuje lodashs ili lodahs. Umjesto cross-env, pojavljuje se crossenv.

Developeri koji rade brzo, lako naprave takvu grešku. Jednom kad se maliciozni paket instalira, može izvršavati proizvoljni kod, krasti podatke ili uspostavljati perzistentne pristupe sustavu.

Prema istraživanju Snyka, na NPM registru otkriveno je više od 5.000 typosquatting paketa samo u 2023. godini. Podatak je posebno relevantan za sve koji svakodnevno rade s NPM paketima i Node.js ekosustavom.

Kompromitiranje maintainera

Ova metoda cilja izravno ljude koji održavaju popularne open-source projekte. Napadači koriste social engineering, phishing kampanje ili jednostavno krađu pristupnih podataka kako bi preuzeli kontrolu nad računima maintainera.

Posebno su ranjivi projekti koje održava jedna osoba. A takvih je iznenađujuće mnogo, čak i među paketima s milijunima korisnika.

Maliciozni Pull Requests i Commits

Ova tehnika uključuje ubacivanje malicioznog koda kroz naizgled legitimne doprinose projektu. Napadač može podnijeti pull request koji sadrži korisnu funkcionalnost, ali duboko u kodu skriva malicioznu logiku.

Ako pregledavatelji koda nisu dovoljno pažljivi, maliciozni kod može proći review i biti spojen u glavnu granu.

U ožujku 2024. godine otkriveno je da je XZ Utils backdoor (CVE-2024-3094) ubačen upravo na ovaj način, kroz dugotrajnu kampanju u kojoj je napadač godinama gradio povjerenje unutar projekta prije nego što je podmetnuo kompromitiranu verziju. Ovaj incident klasificiran je kao sofisticirana zero-day ranjivost i izazvao je šokove u cijeloj sigurnosnoj zajednici.

Developeri su posebno ranjivi

Zašto hakeri sve više ciljaju upravo developere? Razlozi su višestruki i međusobno se pojačavaju, a razumijevanje ovih faktora ključno je za svakoga tko razmišlja o karijeri u cyber securityju.

Developeri imaju pristup kritičnoj infrastrukturi. Imaju pristup izvornom kodu, produkcijskim sustavima, bazama podataka, API ključevima i deployment pipelineima.

Efekt multiplikatora distribucije čini napade na developere iznimno isplativima. Kada napadač kompromitira developera koji održava popularni paket, maliciozni kod se automatski distribuira na tisuće ili milijune sustava pri sljedećem ažuriranju. To je učinkovitost o kojoj tradicionalni hakeri mogu samo sanjati.

Unatoč tehničkoj vještini, mnogi developeri nemaju formalnu edukaciju o kibernetičkoj sigurnosti. Fokus je tradicionalno na funkcionalnosti i performansama, dok digitalna sigurnost često ostaje u drugom planu.

Brzina razvoja gotovo uvijek dobiva prednost nad sigurnosnim provjerama. Agilne metodologije, kratki sprintevi i pritisak za brzom isporukom stvaraju okruženje u kojem sigurnosne provjere postaju teret koji usporava razvoj.

Koliko puta ste pokrenuli npm install bez provjere svih ovisnosti? Koliko puta ste kopirali Stack Overflow rješenje bez detaljne analize?

Kultura povjerenja u open-source zajednici ujedno je i najveća snaga i najveća ranjivost ekosustava. Developeri instinktivno vjeruju paketima koji imaju mnogo preuzimanja, zvjezdica ili se nalaze u poznatim registrima poput NPM-a.

Hibridni i udaljeni rad dodatno proširuju napadačku površinu. Developeri rade s osobnih uređaja, koriste javne mreže i imaju pristup produkcijskim sustavima izvan kontroliranog korporativnog okruženja.

Savjeti za Android sigurnost i sigurnost mobilnih uređaja općenito postaju sve relevantniji jer developeri često pristupaju repozitorijima i komunikacijskim kanalima upravo s mobilnih uređaja.

Cyber sigurnost dobiva na važnosti

Cyber sigurnost, Pexels
Cyber sigurnost, Pexels

Utjecaj napada na open-source ekosustav seže daleko izvan tehničkih posljedica i ima direktne implikacije za cyber sigurnost u Hrvatskoj i cijeloj regiji.

Financijski gubici mogu biti astronomski.

Prosječni trošak podatkovnog incidenta iznosi 4,88 milijuna dolara.

IBM

Gubitak povjerenja korisnika teško je kvantificirati, ali njegove posljedice su dugoročne.

Dugoročni utjecaj na open-source zajednicu možda je najsuptilniji, ali i najznačajniji.

Svaki uspješan napad erodira povjerenje u ekosustav koji funkcionira upravo na temelju povjerenja. Ako developeri počnu izbjegavati open-source komponente zbog straha od napada, cijela industrija gubi pristup jednom od svojih najvrjednijih resursa.

Zaštita za developere i tvrtke

Dobra vijest je da postoje konkretne mjere koje developeri i organizacije mogu poduzeti za značajno smanjenje rizika.

Ovi savjeti primjenjivi su bez obzira radite li na malom osobnom projektu ili u velikoj korporaciji, i jednako su relevantni za cyber sigurnost u Hrvatskoj kao i bilo gdje drugdje u svijetu.

Savjeti za developere

Provjeravajte integritet paketa prije svake instalacije.

Provjerite autora paketa, datum objave, broj preuzimanja i povezani repozitorij.

Koristite hash provjere i lock datoteke poput package-lock.json, yarn.lock ili Pipfile.lock kako biste osigurali konzistentnost instaliranih paketa.

Nikada ne ignorirajte upozorenja package managera o promjenama integriteta.

Koristite alate za skeniranje ovisnosti. Integrirajte alate poput Snyk, Dependabot ili OWASP Dependency-Check u svoj radni tok.

Ovi alati automatski skeniraju vaše ovisnosti za poznate ranjivosti, uključujući zero-day ranjivosti, i obavještavaju vas o potrebnim ažuriranjima. Pokrenite npm audit ili yarn audit prije svakog deploya — neka to postane navika, a ne iznimka.

Primjenjujte princip najmanje privilegije. Vaši tokeni, API ključevi i pristupni podaci trebaju imati samo one dozvole koje su apsolutno nužne za njihovu funkciju.

Ne koristite root pristup za svakodnevni rad. Ograničite scope tokena na minimum potreban za obavljanje zadatka.

Zastarjele biblioteke sadrže poznate ranjivosti koje napadači aktivno iskorištavaju. Uspostavite rutinu redovitog ažuriranja i praćenja sigurnosnih obavijesti, uključujući obavijesti CERT Hrvatska, za pakete koje koristite.

Pritom testirajte ažuriranja u izoliranom okruženju prije primjene na produkciju.

Provodite temeljit code review. Pregledavajte ne samo kod kolega, već i promjene u ovisnostima. Kada se ovisnost ažurira, pogledajte changelog i diff kako biste razumjeli što se promijenilo.

Posebnu pažnju obratite na postinstall skripte koje se automatski izvršavaju nakon instalacije paketa.

Omogućite dvofaktorsku autentifikaciju svugdje. Aktivirajte 2FA na GitHubu, GitLabu, NPM-u, PyPI-ju i svim ostalim platformama koje koristite. Koristite hardverske ključeve ili autentifikacijske aplikacije umjesto SMS verifikacije. Ovo je jedan od najvažnijih savjeta za digitalnu sigurnost, jednako primjenjiv na Android sigurnost kao i na desktop okruženja.

Preporuke za organizacije

Implementirajte SBOM (popis svih komponenti u vašem softveru).

SBOM je poput popisa sastojaka na deklaraciji prehrambenog proizvoda. Alati poput Syft ili CycloneDX mogu automatski generirati SBOM za vaše projekte. Kada se otkrije nova ranjivost, SBOM vam omogućuje brzu identifikaciju pogođenih sustava.

Automatizirajte sigurnosno skeniranje u CI/CD pipelineu. Svaki build treba prolaziti kroz automatske sigurnosne provjere. Konfigurirajte pipeline tako da blokira deployment ako se detektiraju kritične ranjivosti. Integrirajte SAST i SCA alate direktno u svoj CI/CD proces.

Uspostavite privatne package registrije. Koristite privatne registrije poput Artifactory ili Nexus Repository kao proxy prema javnim registrima poput NPM-a. Na taj načon možete imati kontrolu nad paketima koji ulaze u vašu organizaciju, skeniranje paketa prije korištenja i zaštitu od dependency confusion napada.

Investirajte u sigurnosnu edukaciju developera. Redoviti treninzi i radionice o kibernetičkoj sigurnosti nisu luksuz, već nužnost. Developeri trebaju razumjeti ne samo kako pisati siguran kod, već i kako prepoznati kibernetičke prijetnje u open-source ekosustavu.

IT, edukacija, učenje, obrazovanje, Pexels
IT, edukacija, učenje, obrazovanje, Pexels

Organizirajte interna CTF natjecanja i simulacije napada kako bi edukacija bila praktična i zanimljiva. Za one koji razmišljaju o karijeri u cyber securityju, ovo znanje postaje sve traženije na hrvatskom i globalnom tržištu rada.

Ključni alati za zaštitu uključuju Dependabot za automatsko ažuriranje ovisnosti na GitHubu, Snyk kao sveobuhvatnu platformu za skeniranje ovisnosti i kontejnera, OWASP Dependency-Check kao besplatni alat za identifikaciju poznatih ranjivosti, GitHub Security Advisories za praćenje sigurnosnih upozorenja, npm audit i yarn audit kao ugrađene alate u Node.js ekosustavu, te Socket.dev koji analizira ponašanje paketa i detektira potencijalno maliciozne promjene prije instalacije.

Trendovi koji oblikuju budućnost

EU Cyber Resilience Act, koji stupa na snagu postupno do 2027. godine, uvodi obvezne sigurnosne zahtjeve za proizvode s digitalnim elementima, uključujući open-source komponente korištene u komercijalnim proizvodima.

Ova regulativa će značajno utjecati na cyber sigurnost u Hrvatskoj i način na koji hrvatske tvrtke upravljaju open-source ovisnostima.

OpenSSF (Open Source Security Foundation) okuplja velike tehnološke tvrtke u zajedničkom nastojanju za poboljšanje sigurnosti.

Inicijative poput Sigstore-a, projekta za kriptografsko potpisivanje artefakata i Alpha-Omega, projekta za sigurnosne audite kritičnih projekata pokazuju ozbiljan angažman industrije.

Umjetna inteligencija se sve više koristi u detekciji kibernetičkih prijetnji.

Alati poput Socket.dev-a koriste AI za analizu ponašanja paketa i prepoznavanje anomalija koje bi mogle ukazivati na maliciozni kod.

Istovremeno, napadači također koriste AI za generiranje sofisticiranijeg malicioznog koda i uvjerljivijih social engineering napada. Ova utrka u naoružanju definirat će sljedeće poglavlje open-source sigurnosti.

Sigurnost je odgovornost svih nas

Napadi na open-source ekosustav nisu prolazni trend, već su nova stvarnost softverskog razvoja.

Kao developeri, DevOps inženjeri i IT profesionalci, nalazimo se na prvoj crti obrane.

Svaki npm install, svaki pip install, svaki mvn dependency:resolve potencijalno je vektor napada koji zahtijeva našu pažnju.

Ključne stvari koje treba zapamtiti su jasne. Implementirajte višeslojnu zaštitu, automatizirajte sigurnosne provjere i kontinuirano se educirajte.

Ne postoji jedan alat ili jedna praksa koja će vas potpuno zaštititi. Učinkovita digitalna sigurnost zahtijeva kombinaciju tehničkih mjera, organizacijskih procesa i kulturne promjene.

Započnite danas. Pokrenite npm audit na svom projektu. Omogućite 2FA na svim platformama. Pregledajte svoje ovisnosti. Pratite upozorenja CERT Hrvatska.

Podijelite ovaj članak s kolegom.

Svaki korak, koliko god se činio malenim, doprinosi sigurnijem open-source ekosustavu za sve nas.


Odgovori

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena sa * (obavezno)