Stavo per installare una gemma Ruby di qualcuno di cui non avevo sentito parlare. Ma qualcosa mi ha fatto pensare "Chi è questo ragazzo?". C'è il rischio che una gemma di Ruby acceda ai dati privati sulla tua macchina e la trasmetti altrove - dal momento che il sistema gem ha accesso a Internet? O ci sono protezioni contro questo?Esiste il rischio che una gemma di Ruby agisca come un trojan?
risposta
Ovviamente c'è. Stai installando software sul tuo computer che viene eseguito con i privilegi dello script/utente che lo chiama. Probabilmente è più facile individuare il codice dannoso in puro Ruby che nei pacchetti binari. Ma se pensi che l'ispezione alla fonte sia un modo sicuro per individuare il codice dannoso, controlla lo under-handed C contest.
Detto questo, se si desidera scrivere malware esistono sistemi di consegna più efficaci rispetto alle gemme Ruby. Non sarei sorpreso se il numero di gemme maligni effettivi in esistenza è 0, e quindi che la probabilità che questo è dannoso è anche 0 ...
Esiste il rischio di codice dannoso ogni volta che si importa la logica sconosciuta in un'applicazione. I rischi sono tanto profondi quanto i dati a cui l'applicazione ha accesso. Mi piace come le applet Java sono in sandbox.
Acquista pacchetti firmati di cui ti fidi o guarda la fonte.
Non sono d'accordo con il poster sopra che la probabilità di gemme dannose esistenti è 0. C'è sempre il pericolo di usare gemme dannose. Sii paranoico, ma continua a fare le cose.
Penso che il link che fornisce conferma il tuo punto: http://rubygems.org/read/chapter/14#page61 – Hola
Se volessi ottenere un controllo sulla probabilità che si verifichi una gemma dannosa, guarderei se sono stati rilevati pacchetti dannosi in qualsiasi lingua (es. Python egs o CPAN di Perl), quanto è probabile che un il pacchetto malevolo è stato prodotto senza che nessuno se ne accorga e se il rubino sia a rischio maggiore rispetto ad altre lingue.
Potrei vedere se potrei generare una rete di fiducia - anche se non conosco l'autore gemma, conosco qualcuno che lo fa?
Potrei anche verificare se i gestori di pacchetti come Debian esaminano se i pacchetti sono dannosi e, in caso affermativo, se hanno esaminato la gemma che si desidera utilizzare.
Credo che ci siano due gruppi di gemme.
In primo luogo le "gemme ben note", che sono, coincidentemente, i bigest e con più (a volte oscure per le mie capacità) codice/logica. Ma quelle gemme sono recensite da molti altri sviluppatori.
Poi ci sono "gemme minori" (che significa che non sono molto diffuse e diffuse). Queste gemme usano avere versioni basse, stati beta e così via.
La mia regola generale è: mi fido del primo gruppo e leggo tutto il codice che posso dal secondo gruppo di gemme.
che non è del tutto vero dal momento che non ho il tempo di leggere il codice di ogni gemma nel mio sistema, ma cerco di andare alle fonti ogni volta che ho bisogno di capire una chiamata di metodo, o come una certa funzione è implementato, che mi guida, quasi sempre a leggere almeno 2-3 file sorgente.
Se ho intenzione di installare un certo per una determinata funzionalità che uso per cercare Github e rivedere l'implementazione, il numero di fork e sviluppatori, l'attività (in numero e frequenza di commit) e così via.
Detto questo, uso fiducia nelle gemme, perché non ho mai trovato nulla di dannoso intenzionalmente, ma implementazioni errate e alcuni buchi di sicurezza.
Suoni come un buon approccio. – Hola
ci sono state proposte a gemme segno crittograficamente, quindi si dovrebbe sapere almeno che il codice dell'autore non è stato manomesso, ma non c'è stato alcun assorbimento su questo
Grazie per il link - > "Come posso fidarmi dei Gem che vengono scaricati automaticamente dalla rete? Allo stesso modo in cui puoi fidarti di tutti gli altri codici che installi. (In definitiva, non puoi.)" – Hola
Forse ce ne sono pochissimi (o zero) intenzionalmente gemme dannose, ma ci sono molte gemme scritte male che hanno buchi di sicurezza. Leggi il blog sulla sicurezza di Ruby on Rails in cui vengono pubblicati regolarmente fori di orribili lacune nei componenti di sicurezza RoR critici. Pensaci due volte prima di aggiungere qualsiasi gemma e fai sempre una breve operazione per ottenere una valutazione della qualità del codice di sicurezza. –
"gemme scritte male che hanno buchi di sicurezza" - gemme, applicazioni, sistemi operativi ... –