¿Es cierto que un tarball puede cambiar dónde se extraen los archivos, independientemente de los comandos utilizados para extraerlo?

27

Tengo un compañero de trabajo que dice que debes tener cuidado al extraer tarballs porque pueden hacer cambios que no conoces. Siempre pensé que un tarball era solo una jerarquía de archivos comprimidos, por lo que si lo extrae a / tmp / example / no puede colarse un archivo en / etc / o algo así.

Adam R. Gray
fuente
1
¿Qué entorno (s) del sistema operativo le preocupan? El tar de GNU / Linux tiene una -Popción que influye en su comportamiento a este respecto.
Jeff Schaller
1
Creo que CentOS en este caso, pero me gustaría saber todo lo que debería saber.
Adam R. Gray
1
Durante más tiempo, el alquitrán GNU podría ser engañado de una manera que permitiera hacerlo, por ejemplo, eliminar /etc/passwden caso de que se ejecutara como root. Desde hace un tiempo, creo que eso gtarbrinda una seguridad similar a la que obtienes star.
schily

Respuestas:

41

Las diferentes utilidades tar se comportan de manera diferente a este respecto, por lo que es bueno tener cuidado. Para un archivo tar que no haya creado, siempre enumere la tabla de contenido antes de extraerlo.

Alquitrán Solaris :

Los archivos nombrados se extraen del archivo tar y se escriben en el directorio especificado en el archivo tar, en relación con el directorio actual. Utilice los nombres de ruta relativos de los archivos y directorios que se extraerán.

Los nombres de ruta absolutos contenidos en el archivo tar se desempaquetan usando los nombres de ruta absolutos, es decir, la barra diagonal (/) no se elimina.

En el caso de un archivo tar con nombres de ruta completos (absolutos), como:

/tmp/real-file
/etc/sneaky-file-here

... si extrae dicho archivo, terminará con ambos archivos.

Alquitrán GNU :

De forma predeterminada, el tar de GNU deja caer una /entrada o salida principal y se queja de los nombres de archivo que contienen un ..componente. Hay una opción que desactiva este comportamiento:

--absolute-names

-P

No elimine las barras inclinadas de los nombres de archivo y permita nombres de archivo que contengan un ..componente de nombre de archivo.

... si extrae un archivo tar completamente parcheado usando GNU tar sin usar la -Popción, le dirá:

tar: Eliminando /los nombres principales de los miembros

y extraerá el archivo en subdirectorios de su directorio actual.

Alquitrán AIX :

no dice nada al respecto y se comporta como el tar de Solaris: creará y extraerá archivos tar con nombres de ruta completos / absolutos.

Tar de HP-UX : (mejor referencia en línea bienvenida)

Advertencias

No hay forma de restaurar un nombre de ruta absoluto a una posición relativa.

Tar de OpenBSD :

-P

No elimine las barras inclinadas ( /) de los nombres de ruta. El valor predeterminado es quitar las barras inclinadas.

También hay -Popciones implementadas para tarmacOS, FreeBSD y NetBSD, con la misma semántica, con la adición de que taren FreeBSD y macOS "se negarán a extraer entradas de archivo cuyos nombres de ruta contengan ..o cuyo directorio de destino se altere por un enlace simbólico" sin él -P.

estrella de schilytools :

-/

No quite las barras inclinadas de los nombres de archivo al extraer un archivo. Los archivos tar que contienen nombres de ruta absolutos suelen ser una mala idea. Con otras implementaciones de alquitrán, es posible que nunca se extraigan sin bloquear archivos existentes. Estrella por esa razón, por defecto elimina las barras inclinadas de los nombres de archivo cuando está en modo de extracción.

Jeff Schaller
fuente
2
Durante mucho tiempo, GNU tar ignoró el hecho de que un nombre de ruta que contiene ..es un riesgo de seguridad, por lo tanto, use staro sea reciente gtar. También eche un vistazo a los stararchivos tar de ejemplo que incluyen tarencabezados hechos a mano que hacen que la mayoría de las tarimplementaciones eliminen archivos sin siquiera una advertencia.
schily
@schily, según las citas de Jeff, ¿eso no se aplica también a tarSolaris, AIX y HP-UX? Si es así, ¿por qué señalar solo GNU tar, especialmente si (nuevamente según la cita anterior), han cambiado a no aceptar ..? Los problemas con la entrada con formato incorrecto son, por supuesto, errores, y supongo que los ha informado como tal.
ilkkachu
1
Las implementaciones históricas de alquitrán no están verificando cosas así. Necesitaba hacer el comentario porque existía la afirmación de que el alquitrán GNU no tiene problemas sin mencionar un lanzamiento. Y por cierto: una lista como esta sin mencionar star(la implementación gratuita más antigua) debe verse como incompleta.
schily
@schily, busqué páginas de manual para los principales sistemas operativos (que pueden tener diferentes implementaciones de tar); si tiene un enlace a la página de manual en línea de star, con gusto lo incluiré.
Jeff Schaller
9

Una de las cosas hilarantes que suceden con las bombas de alquitrán es que cambian los permisos del directorio actual al incluido en el tarball.

Por ejemplo, si un tarball incluye el '.' directorio, y lo descomprime en / tmp como root, destruirá su sistema al hacer que / tmp no pueda ser escrito por nadie más que root.

Mosvy
fuente
Y si lo desempaqueta /, cambiará los permisos del directorio raíz, lo que tendrá consecuencias inesperadas (recuerdo haber recibido "no se puede ejecutar / bin / bash" al iniciar sesión en una consola, porque /era el modo 770).
Ley29
1
Me ha sucedido esto con el software oficial: las versiones de github de "rancher-compose" contienen ". en el archivo tar, por ejemplo, y nuke / tmp si los extrae allí.
Harald