Starije izmjene na obje strane
Starija izmjena
Novija izmjena
|
Starija izmjena
|
racfor_wiki:javascript:potencijalne_prijetnje_ranjivosti_u_javascript_ekosustavu [2023/01/13 11:24] tl51986 [Poglavlje 2] |
racfor_wiki:javascript:potencijalne_prijetnje_ranjivosti_u_javascript_ekosustavu [2024/12/05 12:24] (trenutno) |
===== Sažetak ===== | ===== Sažetak ===== |
| |
| U Javascript-u postoji veliki broj potencijalnih napada, u seminaru je obrađena potencijalna prijetnja od "malicious lifecycle script" napada i vulnerabilnosti Dependency Confusion. Kako bih se obranili od navedenih napada potrebno je koristiti poznate pakete s provjerenim komentarima korisnika, dobro proučiti ovisnosti i koristiti "lockfile" te isključiti pokretanje skripti prilikom instalacije. |
| |
Ključne riječi: SSL; TSL; komunikacija; sigurnost; napad | |
| |
| |
=====Vulnerabilnost Dependency Confusion===== | =====Vulnerabilnost Dependency Confusion===== |
| |
| Vulnerabilnost Dependency Confusion je vrsta sigurnosnog propusta koja se pojavljuje kada se koriste vanjske biblioteke (eng. dependency) u softverskom projektu. To se događa kada se unutar projekta koristi isto ime vanjske biblioteke kao i unutarnje, pa se interna verzija biblioteke prevodi kao vanjska, što može dovesti do sigurnosnih propusta. Prije nekoliko godina je demonstrirano kako Apple, Microsoft, PayPal, Shopify, te mnogi drugi nemaju zaštitu protiv ovog napada, odnosno radi nepažnje kod kreiranja internih paketa došlo je do sigurnosnih propusta. |
| |
Vulnerabilnost Dependency Confusion je vrsta sigurnosnog propusta koja se pojavljuje kada se koriste vanjske biblioteke (eng. dependency) u softverskom projektu. To se događa kada se unutar projekta koristi isto ime vanjske biblioteke kao i unutarnje, pa se interna verzija biblioteke prevodi kao vanjska, što može dovesti do sigurnosnih propusta. Prije nekoliko godina je demonstrirano kako Apple, Microsoft, Paypal, Shopify, te mnogi drugi nemaju zastitu protiv njega, odnosno radi nepažnje kod kreiranja internih paketa doslo je do sigurnosnih propusta. | ==Primjer== |
| U istraživanju napadač je na https://npmjs.com objavio pakete istih imena kao interni PayPalovi paketi "paypal-auth" i pplogger, te na rubygems.org paket shopify-cloud. Kroz svega nekoliko sati njegovi paketi bili su instalirali što na automatiziranim deployment servisima (CI/CD) što na računalima developera tih firmi. |
| |
U istrazivanju napadac je na https://npmjs.com objavio pakete istih imena kao interni Paypalovi paketi paypal-auth i pplogger, te na rubygems.org paket shopify-cloud. Kroz svega nekoliko sati njegovi paketi bili su instalirali sto na automatiziranim deployment servisima (CI/CD) sto na racunalima developera tih firmi. | ==Zaštita== |
| Opisani problem imaju praktički svi manageri paketa, pip (python), npm (js), gem (ruby) i ostali. Zaštita je u većini slučajeva jednostavna te se može izvesti na jedan od sljedećih načina: |
Ovaj problem imaju prakticki svi manageri paketa, pip (python), npm (js), gem (ruby)... A zastita je realtivno jednostavna | * Korištenje jedinstvenih imena npr. @shopify/shopify-cloud u privatnom registru paketa ( package registry) |
Koristenje unique namespaca npr. @shopify/shopify-cloud u privatnom registratnu paketa (eng. package registry) | * Rezerviranje javnih paketa (npr ako interno koristimo paypal-auth, napravimo prazan paket na npm-u javno paypal-auth, kako netko ne bi mogao kreirati zlonamjerni paket istog imena) |
Rezerviranje javnih paketa (npr ako interno koristimo paypal-auth, napravimo “dummy” prazan paket na npm-u javno paypal-auth, kako netko ne bi mogao kreirati zlonamjerni paket istog imena) | * Konfiguriranje alata da eksplicitno mapiranje paketa na registar |
Konfiguriranje alata da eksplicitno mapiranje paketa na registrar | |
| |
| |
[1] [[https://medium.com/@kyle_martin/understanding-and-protecting-against-malicious-npm-package-lifecycle-scripts-8b6129619d7c| Kyle Martin: EUnderstanding and protecting against malicious npm package lifecycle scripts]] | [1] [[https://medium.com/@kyle_martin/understanding-and-protecting-against-malicious-npm-package-lifecycle-scripts-8b6129619d7c| Kyle Martin: EUnderstanding and protecting against malicious npm package lifecycle scripts]] |
| |
[2] [[https://medium.com/@kyle_martin/understanding-and-protecting-against-malicious-npm-package-lifecycle-scripts-8b6129619d7c| Kyle Martin: EUnderstanding and protecting against malicious npm package lifecycle scripts]] | [2] [[https://incolumitas.com/2016/06/08/typosquatting-package-managers/| Nikolai Tschacher: Typosquatting programming language package managers]] |
| |
[3] [[https://itnext.io/fixing-security-vulnerabilities-in-npm-dependencies-in-less-than-3-mins-a53af735261d| Vivek Nayyar: Fixing security vulnerabilities in npm dependencies ]] | [3] [[https://itnext.io/fixing-security-vulnerabilities-in-npm-dependencies-in-less-than-3-mins-a53af735261d| Vivek Nayyar: Fixing security vulnerabilities in npm dependencies ]] |
| |
| [4] [[https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610| Alex Birsan: Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies]] |
| |
| |
| |