Un atac de dependència permet l'execució de codi en PayPal, Microsoft, Apple, Netflix, Uber i altres 30 empreses

Fa pocs dies es va donar a conèixer un mètode sorprenentment simple que permet atacar dependències en aplicacions que es desenvolupen utilitzant repositoris de paquets interns. Els investigadors que van identificar el problema van poder executar el codi als servidors interns de 35 empreses, incloses PayPal, Microsoft, Apple, Netflix, Uber, Tesla i Shopify.

Els hacks es van dur a terme com a part dels programes Bug Bounty, en coordinació amb les empreses atacades i ja se'ls ha aportat als autors 130.000 dòlars en forma de bonificacions per identificar vulnerabilitats.

El mètode es basa en el fet que moltes empreses utilitzen dependències de repositoris estàndard de NPM, PyPI i RubyGems a les seves aplicacions internes, així com dependències internes que no es distribueixen públicament ni es descarreguen dels seus propis repositoris.

El problema és que els administradors de paquets com npm, pip i gem intenten descarregar les dependències internes de les empreses, fins i tot dels repositoris públics. Per a un atac, només cal definir els noms dels paquets amb dependències internes i crear els seus propis paquets amb els mateixos noms als repositoris públics de NPM, PyPI i RubyGems.

El problema no és específic de NPM, PyPI i RubyGems, i també es manifesta en altres sistemes com NuGet, Maven i Yarn.

La idea del mètode proposat va aparèixer després que un investigador va notar accidentalment que al codi disponible públicament publicat a GitHub, moltes empreses no eliminen dels seus fitxers de manifest la menció de dependències addicionals utilitzades en projectes interns o en implementar funcionalitats esteses. S'han trobat rastres similars al codi JavaScript dels serveis web, així com als projectes Node.JS, Python i Ruby de moltes empreses.

Les principals filtracions estaven relacionades amb la incrustació del contingut dels fitxers package.json al codi JavaScript disponible públicament durant el procés de compilació, així com amb l'ús d'elements de ruta reals en trucades require(), que es poden utilitzar per jutjar els noms de dependències.

L'escaneig de diversos milions de dominis corporatius va revelar diversos milers de noms de paquets de JavaScript que no eren al repositori de NPM. Havent recopilat una base de dades de noms de paquets interns, l'investigador va decidir fer un experiment per piratejar la infraestructura de les empreses que participen als programes Bug Bounty. Els resultats van ser sorprenentment efectius i linvestigador va poder executar el seu codi en molts ordinadors de desenvolupament i servidors responsables de construir o provar amb base en sistemes dintegració contínua.

En descarregar dependències, els administradors de paquets npm, pip i gem van instal·lar principalment paquets dels repositoris públics primaris NPM, PyPI i RubyGems, que es van considerar de més prioritat.

La presència de paquets similars amb els mateixos noms als repositoris d'empreses privades es va ignorar sense mostrar cap advertiment ni provocar bloquejos que poguessin cridar latenció dels administradors. A PyPI, la prioritat de descàrrega estava influenciada pel número de versió (independentment del repositori, es va descarregar la versió més recent del paquet). A NPM i RubyGems, la prioritat només depenia del repositori.

L'investigador ha col·locat paquets en repositoris de NPM, PyPI i RubyGems que es creuen amb els noms de les dependències internes trobades, afegint codi a l'script que s'executa abans de la instal·lació (preinstal·lat a NPM) per recopilar informació sobre el sistema i enviar-la informació rebuda al host extern.

Per transmetre informació sobre lèxit de lhackeig, eludir els tallafocs que bloquegen el trànsit extern, el mètode dorganització de les comunicacions de canal encobert sobre el protocol DNS. El codi que s'estava executant va resoldre el host al domini atacant sota el control del domini atacant, cosa que va fer possible recopilar informació sobre operacions reeixides al servidor DNS. Es va passar informació sobre l'amfitrió, el nom d'usuari i la ruta actual.

El 75% de totes les execucions de codi registrades es van associar amb descàrregues de paquets NPM, principalment pel fet que hi havia significativament més noms de mòduls interns de JavaScript que noms de dependències a Python i Ruby.

font: https://medium.com/


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.