È vero che un tarball può cambiare da dove vengono estratti i file indipendentemente dai comandi usati per estrarlo?


27

Ho un collega che dice che devi stare attento a estrarre tarball perché possono apportare modifiche che non conosci. Ho sempre pensato che un tarball fosse solo una gerarchia di file compressi, quindi se lo estrai in / tmp / example / non potrebbe mai intrufolarsi in un file / etc / o qualcosa del genere.


1
Quali ambienti di sistema operativo ti interessano? Il tar di GNU / Linux ha -Pun'opzione che influenza il suo comportamento in questo senso.
Jeff Schaller

1
Immagino CentOS in questo caso, ma mi piacerebbe sapere tutto ciò che dovrei sapere.
Adam R. Gray,

1
Per un periodo più lungo, il tar GNU potrebbe essere ingannato in modo da consentirne la rimozione, ad esempio rimuovendolo /etc/passwdnel caso in cui fosse eseguito come root. Da un po ', credo che ti gtardia una sicurezza simile a quella che ottieni star.
schily,

Risposte:


41

Diverse utility di tar si comportano diversamente in questo senso, quindi è bene stare attenti. Per un file tar che non hai creato, elenca sempre il sommario prima di estrarlo.

Catrame di Solaris :

I file nominati vengono estratti dal file tar e scritti nella directory specificata nel file tar, rispetto alla directory corrente. Utilizzare i nomi di percorso relativi di file e directory da estrarre.

I nomi di percorso assoluti contenuti nell'archivio tar vengono decompressi utilizzando i nomi di percorso assoluti, ovvero la barra in avanti (/) non viene rimossa.

Nel caso di un file tar con nomi di percorso completi (assoluti), come:

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

... se estrai tale file, finirai con entrambi i file.

Tar GNU :

Di default, GNU tar ha un vantaggio /sull'input o sull'output e si lamenta dei nomi di file contenenti un ..componente. C'è un'opzione che disattiva questo comportamento:

--absolute-names

-P

Non rimuovere le barre iniziali dai nomi dei file e consentire nomi di file contenenti un ..componente nome file.

... se estrai un file tar completamente percorso usando GNU tar senza usare l' -Popzione, ti dirà:

tar: rimozione di lead /dai nomi dei membri

ed estrarrà il file in sottodirectory della directory corrente.

Tar AIX :

non dice nulla e si comporta come il catrame di Solaris: creerà ed estrarrà i file tar con nomi di percorso completi / assoluti.

Tar HP-UX : (migliore riferimento online accolto favorevolmente)

AVVERTENZE

Non è possibile ripristinare un nome di percorso assoluto in una posizione relativa.

Tar OpenBSD :

-P

Non rimuovere le barre iniziali ( /) dai nomi dei percorsi. L'impostazione predefinita è rimuovere le barre iniziali.

Ci sono -Popzioni implementate anche tarsu macOS, FreeBSD e NetBSD, con la stessa semantica, con l'aggiunta che tarsu FreeBSD e macOS "rifiuteranno di estrarre le voci di archivio i cui percorsi contengono ..o la cui directory di destinazione verrebbe modificata da un link simbolico" senza -P.

stella schilytools :

-/

Non rimuovere le barre iniziali dai nomi dei file durante l'estrazione di un archivio. Gli archivi di tar contenenti nomi di percorso assoluti sono generalmente una cattiva idea. Con altre implementazioni tar, è possibile che non vengano mai estratti senza ostruire i file esistenti. Stella per quel motivo, per impostazione predefinita elimina le barre dai nomi dei file quando è in modalità di estrazione.


2
Per molto tempo, GNU tar ha ignorato il fatto che un nome di percorso contenente ..sia un rischio per la sicurezza, quindi usa staro un recente gtar. Dai anche un'occhiata agli stararchivi tar di esempio che includono tarintestazioni fatte a mano che fanno sì che la maggior parte delle tarimplementazioni rimuovano i file senza nemmeno un avviso.
schily,

@schily, secondo le citazioni di Jeff, non vale anche per tarSolaris, AIX e HP-UX? Se è così, perché sottolineare solo il tar GNU, specialmente se (sempre secondo la citazione sopra), sono cambiati in non accettare ..? I problemi con input non validi sono ovviamente bug e suppongo che tu li abbia segnalati come tali.
ilkkachu,

1
Le implementazioni di tar storiche non stanno verificando cose del genere. Avevo bisogno di fare l'osservazione perché c'era l'affermazione che GNU tar è senza problemi senza menzionare un rilascio. E a proposito: un elenco come questo senza menzionare star(la più antica implementazione gratuita) deve essere visto come incompleto.
schily

@schily, ho cercato pagine man per i principali SO (che potrebbero avere diverse implementazioni tar); se hai un link alla pagina man online di Star, sarei felice di includerlo.
Jeff Schaller


9

Una delle cose esilaranti che accadono con le bombe tar è che cambiano i permessi della directory corrente con quella inclusa nel tarball.

Ad esempio, se un tarball include il '.' directory e scompattalo in / tmp come root, rovinerà il tuo sistema rendendo / tmp non scrivibile da chiunque tranne root.


E se lo scompattate /, cambierà i permessi della directory root, che avrà conseguenze inaspettate (ricordo di aver ricevuto "impossibile eseguire / bin / bash" quando accedevo su una console, perché /era la modalità 770).
Legge

1
Ho avuto questo accadere con il software ufficiale - le versioni github di "rancher-compose" contengono tutte "." nel file tar, ad esempio, e nuke / tmp se li estraete lì.
Harald,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.