@archive cuida dos pacotes que um agente baixa ou entrega — zip, tar, tar.gz/tgz e tar.bz2 — sem shell e sem as armadilhas clássicas: uma entrada chamada ../../etc/passwd, um caminho absoluto, um symlink apontando para fora do destino, ou uma “bomba” de 10 GB declarada como 1 KB.
Subcomandos
Segurança
- Zip-slip: nomes absolutos, letras de unidade e escapes
..são recusados; todo destino é resolvido após symlinks e precisa ficar sobto, inclusive quando um ancestral já materializado é um symlink que leva para fora. - Links: entradas symlink e hard link cujo alvo resolve para fora de
tosão recusadas. - Limites valem sobre os bytes realmente lidos, não sobre o tamanho declarado; uma entrada recusada não deixa nada para trás e o relatório diz até onde a extração chegou.
- Arquivos são criados com
0600/0700eO_EXCL, então uma corrida não transforma uma recusa em sobrescrita. list/readsão somente leitura;extract/createsão mutações e passam pelo gate de segurança do coder.
Arquivos xz não são suportados (sem decoder na biblioteca padrão); o erro nomeia os formatos suportados.