Est-il vrai qu'une archive tar peut changer où les fichiers sont extraits indépendamment des commandes utilisées pour l'extraire?

27

J'ai un collègue qui dit que vous devez être prudent lors de l'extraction des tarballs car ils peuvent apporter des modifications que vous ne connaissez pas. J'ai toujours pensé qu'une archive tar n'était qu'une hiérarchie de fichiers compressés, donc si vous l'extrayez dans / tmp / example / il ne peut pas se faufiler un fichier dans / etc / ou quelque chose comme ça.

Adam R. Gray
la source
1
De quel (s) environnement (s) de système d'exploitation vous préoccupez-vous? Le tar de GNU / Linux a une -Poption qui influence son comportement à cet égard.
Jeff Schaller
1
Je suppose que CentOS dans ce cas, mais je voudrais savoir tout ce que je dois savoir.
Adam R. Gray
1
Pendant un temps plus long, le tar GNU pourrait être dupé d'une manière qui permettrait de le faire par exemple supprimer /etc/passwdau cas où il serait exécuté en tant que root. Depuis un certain temps, je crois que cela gtaroffre une sécurité similaire à celle que vous obtenez star.
schily

Réponses:

41

Les différents utilitaires tar se comportent différemment à cet égard, il est donc bon d'être prudent. Pour un fichier tar que vous n'avez pas créé, répertoriez toujours la table des matières avant de l'extraire.

Tar Solaris :

Les fichiers nommés sont extraits du fichier tar et écrits dans le répertoire spécifié dans le fichier tar, par rapport au répertoire courant. Utilisez les chemins d'accès relatifs des fichiers et répertoires à extraire.

Les noms de chemin absolus contenus dans l'archive tar sont décompressés à l'aide des noms de chemin absolus, c'est-à-dire que la barre oblique avant (/) n'est pas supprimée.

Dans le cas d'un fichier tar avec des noms de chemin d'accès complets (absolus), tels que:

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

... si vous extrayez un tel fichier, vous vous retrouverez avec les deux fichiers.

Goudron GNU :

Par défaut, GNU tar supprime un interligne /en entrée ou en sortie et se plaint des noms de fichiers contenant un ..composant. Il existe une option qui désactive ce comportement:

--absolute-names

-P

Ne supprimez pas les barres obliques des noms de fichiers et autorisez les noms de fichiers contenant un ..composant de nom de fichier.

... si vous extrayez un fichier tar à chemin complet à l'aide de GNU tar sans utiliser l' -Poption, il vous dira:

tar: suppression /du début des noms de membres

et extraira le fichier dans des sous-répertoires de votre répertoire actuel.

Goudron AIX :

ne dit rien à ce sujet et se comporte comme le tar Solaris - il créera et extraira des fichiers tar avec des noms de chemin complets / absolus.

HP-UX tar : (une meilleure référence en ligne est la bienvenue)

AVERTISSEMENTS

Il n'y a aucun moyen de restaurer un nom de chemin absolu à une position relative.

Tar OpenBSD :

-P

Ne supprimez pas les barres obliques ( /) des chemins d'accès. La valeur par défaut est de supprimer les barres obliques de début.

Il y a des -Poptions implémentées pour tarsur macOS, FreeBSD et NetBSD également, avec la même sémantique, avec l'ajout que tarsur FreeBSD et macOS "refusera d'extraire les entrées d'archive dont les chemins d'accès contiennent ..ou dont le répertoire cible serait modifié par un lien symbolique" sans -P.

star de schilytools :

-/

Ne supprimez pas les barres obliques des noms de fichiers lors de l'extraction d'une archive. Les archives tar contenant des noms de chemin absolus sont généralement une mauvaise idée. Avec d'autres implémentations tar, il est possible qu'elles ne soient jamais extraites sans encombrer les fichiers existants. Star pour cette raison, par défaut supprime les barres obliques des noms de fichiers en mode extraction.

Jeff Schaller
la source
2
Pendant longtemps, GNU tar a ignoré le fait qu'un nom de chemin contenant ..est un risque pour la sécurité, donc utilisez starou récent gtar. Jetez également un œil aux starexemples d'archives tar qui incluent des taren-têtes fabriqués à la main qui entraînent la plupart des tarimplémentations pour supprimer des fichiers sans même un avertissement.
schily
@schily, selon les citations de Jeff, cela ne s'applique-t-il pas également à tarSolaris, AIX et HP-UX? Si oui, pourquoi ne signaler que le tar GNU, surtout si (toujours selon la citation ci-dessus), ils ont changé pour ne pas accepter ..? Les problèmes avec une entrée mal formée sont bien sûr des bogues, et je suppose que vous les avez signalés comme tels.
ilkkachu
1
Les implémentations historiques de tar ne vérifient pas des choses comme ça. J'avais besoin de faire la remarque car il y avait l'affirmation que le tar GNU est sans problème sans mentionner une version. Et BTW: une liste comme celle-ci sans mentionner star(la plus ancienne implémentation gratuite) doit être considérée comme incomplète.
schily
@schily, j'ai recherché des pages de manuel pour les principaux OS (qui peuvent avoir différentes implémentations tar); si vous avez un lien vers la page de manuel en ligne de star, je serais heureux de l'inclure.
Jeff Schaller
9

L'une des choses hilarantes qui se produisent avec les bombes tar est qu'elles changent les autorisations du répertoire actuel en celui inclus dans l'archive tar.

Par exemple, si une archive tar inclut le '.' , et vous le décompressez dans / tmp en tant que root, il va détruire votre système en rendant le / tmp non accessible en écriture par n'importe qui sauf root.

mosvy
la source
Et si vous le décompressez /, cela changera les autorisations du répertoire racine, ce qui aura des conséquences inattendues (je me souviens avoir "ne peut pas exécuter / bin / bash" lors de la connexion sur une console, car /c'était le mode 770).
Loi29
1
J'ai eu cela avec un logiciel officiel - les versions github de "rancher-compose" contiennent toutes "." dans le fichier tar, par exemple, et nuke / tmp si vous les extrayez là.
Harald le