É verdade que um tarball pode mudar para onde os arquivos são extraídos, independentemente dos comandos usados ​​para extraí-lo?


27

Eu tenho um colega de trabalho que diz que você precisa ter cuidado ao extrair tarballs porque eles podem fazer alterações que você não conhece. Eu sempre pensei que um tarball era apenas uma hierarquia de arquivos compactados; portanto, se você o extrair para / tmp / example /, não será possível introduzir um arquivo em / etc / ou algo assim.


1
Com quais ambientes do sistema operacional você está preocupado? O tar do GNU / Linux tem uma -Popção que influencia seu comportamento nesse sentido.
Jeff Schaller

1
Eu acho que o CentOS nesse caso, mas eu gostaria de saber o que eu deveria saber.
Adam R. Grey

1
Por um longo tempo, o GNU tar pode ser enganado de uma maneira que permita fazê-lo, por exemplo, remover /etc/passwdno caso de ser executado como root. Há algum tempo, acredito que isso gtaroferece segurança semelhante à sua star.
schily

Respostas:


41

Diferentes utilitários de alcatrão se comportam de maneira diferente nesse aspecto, por isso é bom ter cuidado. Para um arquivo tar que você não criou, sempre liste o índice antes de extraí-lo.

Alcatrão Solaris :

Os arquivos nomeados são extraídos do arquivo tar e gravados no diretório especificado no arquivo tar, relativo ao diretório atual. Use os nomes de caminho relativo dos arquivos e diretórios a serem extraídos.

Os nomes absolutos do caminho contidos no arquivo tar são descompactados usando os nomes absolutos do caminho, ou seja, a barra invertida (/) não é retirada.

No caso de um arquivo tar com nomes de caminhos completos (absolutos), como:

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

... se você extrair esse arquivo, você terminará com os dois arquivos.

Alcatrão GNU :

Por padrão, o GNU tar diminui a liderança /na entrada ou na saída e reclama de nomes de arquivos que contêm um ..componente. Há uma opção que desativa esse comportamento:

--absolute-names

-P

Não retire as barras principais dos nomes dos arquivos e permita nomes de arquivos contendo um ..componente de nome de arquivo.

... se você extrair um arquivo tar completo usando o GNU tar sem usar a -Popção, ele informará:

tar: Removendo os principais /nomes dos membros

e extrairá o arquivo em subdiretórios do seu diretório atual.

Alcatrão do AIX :

says nothing about it, and behaves as the Solaris tar -- it will create and extract tar files with full/absolute path names.

Alcatrão HP-UX : (melhor referência online bem-vinda)

ADVERTÊNCIAS

Não há como restaurar um nome de caminho absoluto para uma posição relativa.

Alcatrão do OpenBSD :

-P

Não retire barras ( /) dos nomes de caminhos. O padrão é remover as barras principais.

Existem -Popções implementadas para o tarmacOS, FreeBSD e NetBSD, com a mesma semântica, com a adição de que tarno FreeBSD e no macOS "se recusará a extrair entradas de arquivo cujos nomes de caminho contêm ..ou cujo diretório de destino seria alterado por um link simbólico" sem -P.

estrela de schilytools :

-/

Não retire as barras principais dos nomes dos arquivos ao extrair um arquivo morto. Arquivos tar contendo nomes de caminho absolutos geralmente são uma má idéia. Com outras implementações tar, elas podem nunca ser extraídas sem prejudicar os arquivos existentes. Estrela por esse motivo, por padrão, remove barras dos nomes de arquivos quando no modo de extração.


2
Por um longo tempo, o GNU tar ignorou o fato de que um nome de caminho que contém ..é um risco à segurança; portanto, use starou recente gtar. Observe também os starexemplos de arquivos tar que incluem tarcabeçalhos criados manualmente que fazem com que a maioria das tarimplementações remova arquivos sem nem um aviso.
schily

@schily, de acordo com as citações de Jeff, isso não se aplica também ao tarSolaris, AIX e HP-UX? Se sim, por que apontar apenas o GNU tar, especialmente se (novamente de acordo com a citação acima), eles mudaram para não aceitar ..? Problemas com entrada malformada são obviamente erros, e suponho que você os tenha relatado como tal.
Ilkkachu

1
As implementações históricas de alcatrão não estão verificando coisas assim. Eu precisava fazer a observação porque havia a alegação de que o GNU tar está sem problemas sem mencionar um lançamento. E BTW: uma lista como essa sem mencionar star(a implementação gratuita mais antiga) deve ser vista como incompleta.
schily

@ schily, procurei páginas de manual para os principais sistemas operacionais (que podem ter diferentes implementações de alcatrão); se você tiver um link para a página de manual on-line da estrela, ficarei feliz em incluí-lo.
Jeff Schaller


9

Uma das coisas hilariantes que acontecem com as bombas de alcatrão é que elas alteram as permissões do diretório atual para o incluído no tarball.

Por exemplo, se um tarball incluir o '.' e descompactá-lo no diretório / tmp como root, ele destruirá o sistema, tornando o / tmp gravável por qualquer pessoa que não seja o root.


E se você descompactá-lo /, ele alterará as permissões do diretório raiz, o que terá consequências inesperadas (lembro-me de obter "não é possível executar / bin / bash" ao fazer login em um console, porque /era o modo 770).
precisa saber é o seguinte

1
Já tive isso com o software oficial - os lançamentos no github de "rancher-compose" todos contêm "." no arquivo tar, por exemplo, e nuke / tmp se você extraí-los lá.
Harald
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.