Quali rischi ci sono nell'installazione di gemme da rubygems.org? Le alternative sono più sicure?

6

Normalmente, quando installo una gemma Ruby, chiederei al mio amministratore di sistema di fare

sudo gem install gemname

Tuttavia, recentemente c'è stata una violazione della sicurezza con la fonte delle gemme, link , e mi chiedo quanto sia sicuro e se le alternative sono più sicuri.

I principali rischi connessi all'installazione da rubygems.org sono quelli

  1. rubygems.org, o uno dei suoi mirror, è stato violato e mi ha fornito un pacchetto malevolo invece di quello che volevo.
  2. Qualcuno ha impersonato con successo un autore gem e ha caricato un pacchetto dannoso.

Se volessi evitare tali rischi, sarebbe più sicuro clonare il repository git del codice sorgente per la gemma e costruire la gemma da solo?

Un problema con questo approccio è che non sono sicuro della sicurezza di Github, la principale fonte di repository git per i progetti relativi a Ruby. Github utilizza Ruby on Rails e il record di sicurezza di Github non è stato impeccabile: Egor Homakov è stato in grado di hackerare il sito Web e impegnarsi in un progetto senza credenziali appropriate.

L'uso del codice da github avrebbe meno rischi rispetto all'utilizzo di una gemma da rubygems.org?

Inoltre, non useresti sudo durante l'installazione delle gemme di Ruby per ridurre il rischio?

Uso Ruby solo per un'applicazione a riga di comando che analizza i dati. Non uso Rails o una delle sue gemme, non sto creando un'applicazione web e la mia applicazione non ha bisogno di accedere a Internet.

    
posta Andrew Grimm 18.02.2013 - 01:38
fonte

2 risposte

5

If I wanted to avoid such risks, would it be safer to clone the git repository of the source code for the gem, and build the gem myself?

Probabilmente no. È probabile che uno sforzo maggiore rilascerà (e potenzialmente approverà) una gemma per l'inclusione sui rubygems di quanti ne farai quando clonerai la fonte, specialmente per le gemme più popolari. Inoltre, potrebbero esserci particolari opzioni di configurazione / costruzione che sono state prese in considerazione per tuo conto quando ricevevi da rubygems di cui potresti non essere a conoscenza quando cloni da github.

Tuttavia, come Deer Hunter ha detto , se hai intenzione di provare a esaminare il codice da solo , quindi clonarlo dalla fonte è un buon modo per andare.

Si noti che se il codice della gem in questione è ospitato su github, quindi nel fidarsi dei rubygems ci si sta fidando implicitamente di github, poiché è probabile che qualsiasi attacco alla fonte influenzi anche l'ambiente di pubblicazione gem dell'autore.

    
risposta data 18.02.2013 - 21:52
fonte
4

I rischi sono gli stessi di altri sistemi di gestione dei pacchetti specifici della lingua ( npm per node.js , pypi per python , CRAN per R , CPAN per perl etc .) Tuttavia, è molto spesso prudente installare questa roba senza privilegi di superutente, o almeno avere la possibilità di rivedere ciò che viene installato. Per fare la recensione si può usare un'utilità come fpm per ottenere un .rpm o un .deb , e cercare le opzioni che impongono l'installazione gem nella tua directory /home .

Per quanto riguarda la sicurezza dei siti che ospitano il codice degli utenti, nessun sito può essere considerato immune (notare il recente attacco di un mirror di SourceForge sudcoreano).

Usando un codice già pronto (e facendo girare un compilatore per creare estensioni native) offri a un potenziale attaccante una superficie di vulnerabilità (i compilatori possono avere un gran numero di buffer overflow e altri brutti bug). L'uso di sudo non rende il processo automaticamente sicuro.

La linea di fondo sarebbe che riutilizzando il codice di altre persone, ci si fida molto della catena di autori, manutentori e proprietari di siti. Se si desidera ulteriore garanzia, è necessario condurre un'attenta revisione del codice prima di distribuire il codice in produzione.

    
risposta data 18.02.2013 - 04:09
fonte

Leggi altre domande sui tag