¿Qué riesgos conlleva la instalación de gemas desde rubygems.org? ¿Son las alternativas más seguras?

6

Normalmente, al instalar una gema de Ruby, le pido a mi administrador del sistema que haga

sudo gem install gemname

Sin embargo, recientemente hubo una brecha de seguridad con la fuente de gemas, enlace , y me pregunto qué tan seguro es esto y si existen alternativas son más seguros.

Los mayores riesgos involucrados con la instalación desde rubygems.org serían que

  1. rubygems.org, o uno de sus espejos, fue pirateado y me suministró un paquete malicioso en lugar del que yo quería.
  2. Alguien suplantó con éxito a un autor de gemas y cargó un paquete malicioso.

Si quisiera evitar tales riesgos, ¿sería más seguro clonar el repositorio git del código fuente de la gema y construir la gema yo mismo?

Un problema con este enfoque es que no estoy tan seguro de la seguridad de Github, la principal fuente de repositorios de git para proyectos relacionados con Ruby. Github usa Ruby on Rails, y el registro de seguridad de Github no ha sido perfecto: Egor Homakov pudo piratear el sitio web y comprometerse con un proyecto sin las credenciales adecuadas.

¿El uso del código de github tiene menos riesgo que el uso de una gema de rubygems.org?

Además, ¿no utilizaría sudo al instalar Ruby Gems para reducir mi riesgo?

Uso Ruby solo para una aplicación de línea de comandos que analiza datos. No uso Rails ni ninguna de sus gemas, no estoy creando una aplicación web, y mi aplicación no necesita acceder a Internet.

    
pregunta Andrew Grimm 18.02.2013 - 01:38
fuente

2 respuestas

5
  

Si quisiera evitar tales riesgos, ¿sería más seguro clonar el git?   repositorio del código fuente de la gema, y compilar la gema yo mismo?

Probablemente no. Es probable que se dedique más esfuerzo a liberar (y potencialmente aprobar) una gema para su inclusión en rubygems que cuando haga una clonación de la fuente, especialmente para las gemas populares. Además, puede haber opciones particulares de configuración / construcción que son atendidas en su nombre cuando se obtiene de rubygems de los que quizás no tenga conocimiento al clonar desde github.

Sin embargo, como Deer Hunter dijo , si vas a hacer un esfuerzo para revisar el código por tu cuenta , luego clonarlo desde la fuente es una buena forma de proceder.

Tenga en cuenta que si el código de la gema en cuestión está alojado en github, entonces, al confiar en rubygems, está confiando implícitamente en github, ya que cualquier ataque a la fuente probablemente afectará también al entorno de publicación de gemas del autor.

    
respondido por el Michael 18.02.2013 - 21:52
fuente
4

Los riesgos son los mismos que con otros sistemas de administración de paquetes específicos del idioma ( npm para node.js , pypi para python , CRAN para R , CPAN para perl etc. .) Sin embargo, muy a menudo es prudente instalar estas cosas sin privilegios de superusuario, o al menos tener la oportunidad de revisar lo que se está instalando. Para hacer la revisión, uno puede usar una utilidad como fpm para acumular un .rpm o un .deb , y buscar los interruptores que fuerzan la instalación de gemas en su directorio /home .

En cuanto a la seguridad de los sitios que alojan el código de los usuarios, ningún sitio puede considerarse inmune (tenga en cuenta el reciente ataque de un espejo de SourceForge de Corea del Sur).

Al usar un código ya hecho (y ejecutar un compilador para crear extensiones nativas) le da a un posible atacante una superficie de vulnerabilidad (los compiladores pueden tener una gran cantidad de desbordamientos de búfer y otros errores desagradables). El uso de sudo no hace que el proceso sea seguro automáticamente.

La conclusión sería que al reutilizar el código de otras personas, se confía mucho en la cadena de autores, mantenedores y propietarios de sitios. Si desea una garantía adicional, debe realizar una revisión exhaustiva del código antes de implementar el código en producción.

    
respondido por el Deer Hunter 18.02.2013 - 04:09
fuente

Lea otras preguntas en las etiquetas