2009-06-04 12 views
12

Estaba a punto de instalar una gema Ruby por alguien de quien no había oído hablar. Pero algo me hizo pensar "¿Quién es este tipo?". ¿Existe algún riesgo de que una gema Ruby acceda a datos privados en su máquina y los transmita a otra parte, ya que el sistema gem tiene acceso a Internet? ¿O hay protecciones contra esto?¿Existe el riesgo de que una gema Ruby actúe como un troyano?

Respuesta

16

Por supuesto que sí. Está instalando software en su computadora que se ejecuta con los privilegios del script/usuario que lo llama. Probablemente sea más fácil detectar código malicioso en Ruby puro que en paquetes binarios. Pero si cree que la inspección de fuentes es una forma garantizada de detectar códigos maliciosos, consulte under-handed C contest.

Dicho esto, si desea escribir malware, existen sistemas de entrega más eficaces que las gemas de Ruby. No me sorprendería si el número de gemas maliciosos reales de existencia es 0, y por lo tanto que la probabilidad de que éste es malicioso es también 0 ...

Ver: http://rubygems.org/read/chapter/14#page61

+0

Gracias por los enlaces - > "¿Cómo puedo confiar en las Gemas que se descargan automáticamente de la red? De la misma manera que puedes confiar en todos los demás códigos que instalas. (Es decir, no puedes)." – Hola

+1

Quizás haya muy pocas (o ninguna) intencionalmente gemas maliciosas, pero hay muchas gemas mal escritas que tienen agujeros de seguridad. Lea el blog de seguridad de Ruby on Rails, donde se publican agujeros realmente horribles en componentes de seguridad RoR críticos. Piénselo dos veces antes de agregar cualquier gema y siempre haga una breve intervención para obtener un indicador de la calidad del código de seguridad. –

+0

"gemas mal escritas que tienen agujeros de seguridad" - gemas, aplicaciones, sistemas operativos ... –

3

Existe un riesgo de código malicioso siempre que importe una lógica desconocida en una aplicación. Los riesgos son solo tan profundos como los datos a los que esa aplicación tiene acceso. Al igual que los applets de Java son sandboxed.

Obtenga paquetes firmados en los que confíe, o consulte la fuente.

1

no estoy de acuerdo con el cartel encima que la probabilidad de que existan gemas maliciosas es 0. Siempre existe el peligro de usar gemas maliciosas. Sé paranoico, pero aun así haz las cosas bien.

+1

Creo que el enlace que proporciona respalda su punto: http://rubygems.org/read/chapter/14#page61 – Hola

2

Si quisiera tener una idea de la probabilidad de que ocurra una gema maliciosa, analizaría si los paquetes maliciosos se han detectado en cualquier idioma (por ejemplo, python egs o CPAN de Perl), qué tan probable es que un Se ha producido un paquete malicioso sin que nadie lo note, y si el rubí está en mayor riesgo que otros idiomas.

Podría ver si pudiera generar una red de confianza, incluso si no conozco al autor de la gema, ¿conozco a alguien que lo haga?

También podría ver si los administradores de paquetes como Debian examinan si los paquetes son maliciosos, y si es así, si han examinado la gema que desea usar.

1

Creo que hay dos grupos de gemas.

Primero las "gemas bien conocidas", que son, coincidentemente, las bijas y con más código/lógica (algunas veces poco claro para mis habilidades). Pero esas gemas son revisadas por muchos otros desarrolladores.

Luego están las "gemas menores" (lo que significa que no son tan usadas y difundidas). Estas gemas suelen tener versiones bajas, estados beta y demás.

Mi regla de oro es: Confío en el primer grupo y leo todo el código que puedo del segundo grupo de gemas.

Eso no es totalmente cierto ya que no tengo tiempo para leer el código de cada gema en mi sistema, pero trato de ir a las fuentes cada vez que necesito entender una llamada a un método, o cómo funciona determinada función está implementado, eso me impulsa, casi siempre a leer al menos 2-3 archivos fuente.

Si voy a instalar un cierto para una determinada funcionalidad, utilizo para buscar github y revisar la implementación, el número de forks y desarrolladores, la actividad (en número y frecuencia de confirmaciones) y más.

Dicho esto, solía confiar en las gemas, porque nunca he encontrado nada intencionalmente dañino, pero malas implementaciones y algunos agujeros de seguridad.

+0

Suena como un buen enfoque. – Hola

0

Ha habido propuestas para gemas signo criptográficamente, lo que se sabe al menos que el código del autor no ha sido manipulado, pero no ha habido una captación en este

http://pablotron.org/files/signing_gems.txt

Cuestiones relacionadas