¿Es seguro pedir a los usuarios que curvan un archivo en bruto de GitHub?

2

Tengo una herramienta de línea de comandos ( ngi ) que hice, y actualmente el proceso de instalación requiere 2 pasos.

El primer paso es clonar el repositorio en usr/local/ngi .

El segundo paso es configurar manualmente el $PATH en ~/.bash_profile (o donde establezcan sus variables de entorno) para que puedan ejecutar la herramienta desde la línea de comandos.

Lo que estoy considerando en cambio es esto (acortará la instalación a un solo paso):

Planeo crear un archivo install en el repositorio, que es solo un script que realiza los dos pasos anteriores para el usuario. Ahora podrán abrir su línea de comandos y descargar el script de instalación a través de curl , que cuando se ejecute, a su vez instalará la herramienta de línea de comandos:

curl https://raw.githubusercontent.com/joshbeam/angular_init/install >> install_ngi; ruby install_ngi

Básicamente, el comando anterior simplemente descarga el contenido sin procesar del archivo install de GitHub en un nuevo archivo local llamado install_ngi , y luego lo ejecuta con Ruby. El propio archivo install_ngi luego clona el repositorio de GitHub y establece las variables de entorno.

Mi pregunta es, ¿cuáles son algunas de las preocupaciones de seguridad con respecto a este método, y hay una manera más segura de implementar este tipo de instalación?

    
pregunta Josh Beam 05.04.2015 - 21:12
fuente

1 respuesta

5

¿Es seguro?
No completamente; solo porque está obteniendo un código seguro ahora no significa que el enlace siempre apunte a un código seguro, y muchas herramientas de línea de comandos no verifican los certificados, lo que podría provocar un ataque MITM.

¿Es lo suficientemente seguro?
Sí, para la mayoría de los casos de uso, probablemente. El escenario de ataque es bastante raro, y un atacante que está en posición de lograrlo probablemente pueda lograr algo más serio.

¿Cuál es una forma más segura de hacerlo?
Lo mejor que podemos hacer es firmar criptográficamente todo el software descargado y verificar las firmas antes de la instalación. La mayoría de los administradores de paquetes de sistemas modernos (think apt, yum, etc.) lo hacen de forma automática, pero puede hacerlo usted mismo usando gnupg.

Idealmente, solo firmarías un paquete si lo has verificado y confías en él. Eso no significa que tengas razón para confiar en él, pero al menos te hace responsable de ello. Por supuesto, existe el problema de obtener la clave pública del firmante en la computadora del usuario de tal manera que esa la transferencia no se altere ... gallina, conozca el huevo.

    
respondido por el tylerl 06.04.2015 - 02:33
fuente

Lea otras preguntas en las etiquetas