Apagado na última camada: como recuperar um segredo de uma imagem Docker

Segurança em Nuvem Nível 3/4 ~4 min 28 de outubro de 2026

O desafio

O build da Pinewood apaga o .env no fim. Uma imagem não esquece nada: vasculhe ~/image. Recupere a STRIPE_KEY desse .env.

O que você vai aprender

  • Explicar como uma imagem Docker é construída a partir de camadas empilhadas, na ordem do manifest
  • Reconhecer um arquivo whiteout e o que ele esconde
  • Localizar um arquivo apagado em uma camada anterior e lê-lo
  • Manter segredos de build fora das camadas da imagem

Habilidades testadas

Forense de contêineresBusca de arquivos no LinuxCaça a segredos

Pré-requisitos

  • Comandos básicos de shell (ls, cat, find)
  • O que é um Dockerfile

Como funciona

Cada COPY, ADD e RUN em um Dockerfile produz uma nova camada somente leitura. A imagem é a pilha de todas elas, e um contêiner enxerga a visão combinada.

Quando uma etapa posterior apaga um arquivo, o Docker não consegue reescrever a camada anterior. Em vez disso, ele adiciona uma entrada whiteout, um arquivo chamado .wh.<name>, que instrui a visão combinada a esconder o original. Os bytes originais continuam sendo entregues dentro da camada anterior.

O docker save exporta cada camada como um tarball, então qualquer pessoa que consiga baixar uma imagem pública pode ler todos os arquivos que qualquer etapa do build já escreveu.

Erros comuns

  • Usar um ls simples. O .env é um dotfile, então só aparece com ls -a ou find.
  • Ler o whiteout. O .wh..env está vazio: ele é o marcador de exclusão, não o arquivo.
  • Pegar o primeiro .env que aparecer. Duas camadas escreveram um. Os ids das camadas não seguem a ordem do build: o manifest.json segue, e a escrita mais recente é a que a produção usou.
  • Pegar o arquivo de exemplo. O .env.example contém um valor sk_test_ de placeholder.

Como se proteger

  • Exclua o .env e outros arquivos de segredo do contexto de build no .dockerignore.
  • Passe segredos de build com BuildKit: RUN --mount=type=secret,id=env ... monta o segredo para uma única etapa e nunca o grava em uma camada.
  • Use builds multi-stage para que apenas os artefatos finais cheguem à imagem entregue.
  • Injete segredos de execução como variáveis de ambiente ou a partir de um gerenciador de segredos, e revogue toda chave que já esteve em uma imagem publicada.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

158 resoluções
87% taxa de sucesso
M2F14M3 Primeiro sangue

Hacks de hoje relacionados

35.000+ Hackers Labs reais Grátis
Comece Grátis ou resolva o hack de hoje, sem conta