Voltar para o Blog

Mais de 10 Mil Imagens do Docker Hub Vazam Credenciais e Chaves de API: O Que Voce Precisa Saber

Ola HaWkers, uma descoberta alarmante esta sacudindo a comunidade de desenvolvedores: pesquisadores de seguranca encontraram mais de 10 mil imagens no Docker Hub expondo credenciais sensiveis, incluindo chaves de API de servicos como OpenAI, AWS, HuggingFace e ate credenciais de bancos.

Se voce trabalha com containers, essa noticia deveria fazer voce pausar e revisar suas praticas de seguranca imediatamente. Vamos entender o que aconteceu, quem foi afetado e, mais importante, como evitar que isso aconteca com voce.

O Que Foi Descoberto

Pesquisadores da empresa de inteligencia de ameacas Flare escanearam imagens de containers enviadas ao Docker Hub em novembro de 2025 e encontraram um cenario preocupante.

Numeros do Vazamento

Total de Exposicoes:

  • 10.456 imagens expondo pelo menos uma chave sensivel
  • 42% das imagens comprometidas expunham 5 ou mais segredos
  • 101 empresas identificadas com credenciais vazadas
  • Incluindo uma empresa Fortune 500 e um grande banco nacional

Tipos de Segredos Expostos:

  • 4.000 tokens de acesso para modelos de IA (OpenAI, HuggingFace, Anthropic, Gemini, Groq)
  • Credenciais de bancos de dados de producao
  • Chaves de acesso AWS
  • Tokens do GitHub
  • Credenciais de sistemas CI/CD
  • Chaves de integracoes de pagamento

Como Isso Acontece

A exposicao de segredos em imagens Docker nao e um bug do Docker Hub - e um erro humano que acontece de varias formas:

1. Arquivos .ENV Incluidos na Imagem

O erro mais comum e incluir arquivos .env diretamente na imagem:

# ❌ ERRADO - Nunca faca isso!
FROM node:20-alpine
WORKDIR /app
COPY . .
# O arquivo .env com suas credenciais foi copiado!
RUN npm install
CMD ["npm", "start"]

O problema e que o COPY . . copia TUDO, incluindo seu arquivo .env com credenciais.

2. Hardcoding de Credenciais

Outro erro frequente e colocar credenciais diretamente no codigo:

# ❌ ERRADO - Credenciais hardcoded
import openai

openai.api_key = "sk-proj-abc123..."  # Exposto na imagem!

def get_completion(prompt):
    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content

3. Credenciais em Arquivos de Configuracao

Arquivos como config.json, settings.yaml ou .npmrc frequentemente contem segredos:

{
  "database": {
    "host": "prod-db.empresa.com",
    "user": "admin",
    "password": "SuperSecreta123!"
  },
  "api_keys": {
    "stripe": "sk_live_abc123...",
    "sendgrid": "SG.xyz789..."
  }
}

Por Que 75% das Credenciais Nao Foram Revogadas

Um dado alarmante da pesquisa: mesmo quando desenvolvedores perceberam o erro e removeram a credencial da imagem, 75% das vezes a chave nao foi revogada.

O Problema das Camadas Docker

Isso acontece porque Docker usa um sistema de camadas. Mesmo que voce remova um arquivo em uma camada posterior, ele ainda existe nas camadas anteriores:

FROM node:20-alpine
WORKDIR /app
COPY . .
# Credencial copiada na camada 3

RUN rm .env
# Removido na camada 4, mas ainda existe na camada 3!

Como Atacantes Exploram Isso

# Atacantes podem inspecionar todas as camadas
docker save imagem:tag -o imagem.tar
tar -xf imagem.tar
# Cada pasta e uma camada - credenciais podem estar em qualquer uma

Como Proteger Suas Imagens Docker

Vamos ver as melhores praticas para evitar esse tipo de vazamento:

1. Use .dockerignore Religiosamente

Crie um arquivo .dockerignore robusto:

# Arquivos de ambiente
.env
.env.*
*.env

# Credenciais
.npmrc
.pypirc
credentials.json
service-account.json
*.pem
*.key
id_rsa*

# Configuracoes locais
config.local.*
settings.local.*

# Git
.git
.gitignore

# IDE
.vscode
.idea
*.swp

2. Use Build Arguments Para Segredos de Build

Se precisar de segredos apenas durante o build:

FROM node:20-alpine
WORKDIR /app

# Argumento secreto nao persiste na imagem final
ARG NPM_TOKEN

# Use o segredo e remova na mesma camada
RUN echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc && \
    npm install && \
    rm .npmrc

COPY . .
CMD ["npm", "start"]

Build com:

docker build --build-arg NPM_TOKEN=$NPM_TOKEN -t app .

3. Use Docker Secrets (Preferido)

Para producao, use Docker Secrets ou um gerenciador externo:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .

# Credenciais virao via Docker Secrets em runtime
CMD ["npm", "start"]

No docker-compose:

version: '3.8'
services:
  app:
    image: minha-app
    secrets:
      - db_password
      - api_key
    environment:
      - DB_PASSWORD_FILE=/run/secrets/db_password
      - API_KEY_FILE=/run/secrets/api_key

secrets:
  db_password:
    external: true
  api_key:
    external: true

4. Multi-Stage Builds

Use builds multi-stage para garantir que arquivos de build nao vazem:

# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
ARG NPM_TOKEN
RUN echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc && \
    npm ci && \
    rm .npmrc
COPY . .
RUN npm run build

# Stage 2: Producao - imagem limpa
FROM node:20-alpine AS production
WORKDIR /app
# Copia APENAS o necessario do builder
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY package*.json ./

USER node
CMD ["npm", "start"]

5. Escaneie Suas Imagens

Integre escaneamento de segredos no seu CI/CD:

# GitHub Actions exemplo
name: Security Scan

on: [push, pull_request]

jobs:
  scan-secrets:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Scan for secrets with Trivy
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: 'fs'
          scan-ref: '.'
          format: 'table'
          exit-code: '1'
          severity: 'HIGH,CRITICAL'

      - name: Build image
        run: docker build -t app:${{ github.sha }} .

      - name: Scan image
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: 'app:${{ github.sha }}'
          format: 'table'
          exit-code: '1'

Ferramentas de Deteccao

Existem varias ferramentas para detectar segredos vazados:

Trivy (Recomendado)

# Escanear diretorio
trivy fs --scanners secret .

# Escanear imagem
trivy image minha-imagem:tag

Gitleaks

# Escanear repositorio
gitleaks detect --source .

# Escanear em pre-commit
gitleaks protect --staged

TruffleHog

# Escanear repositorio git
trufflehog git file://. --only-verified

O Que Fazer Se Voce Vazou Credenciais

Se voce descobriu que suas credenciais foram expostas, siga este checklist:

Acoes Imediatas

  1. Revogue a credencial imediatamente - nao apenas remova da imagem
  2. Gere novas credenciais com permissoes minimas
  3. Audite logs para identificar uso nao autorizado
  4. Notifique sua equipe de seguranca

Acoes de Longo Prazo

  1. Implemente rotacao automatica de credenciais
  2. Adote um vault (HashiCorp Vault, AWS Secrets Manager, etc.)
  3. Configure alertas para deteccao de vazamentos
  4. Treine sua equipe sobre praticas seguras

Industrias Mais Afetadas

A pesquisa identificou padroes interessantes sobre quem mais vaza credenciais:

Por Setor:

  • Desenvolvimento de Software: maior numero de vazamentos
  • Marketing e Industrial: segundo lugar
  • IA e Sistemas Inteligentes: terceiro lugar
  • Financeiro e Bancario: mais de 10 empresas afetadas

Origem dos Vazamentos:

  • Contas de "Shadow IT" (fora do monitoramento corporativo)
  • Contas pessoais de desenvolvedores
  • Contas de contractors e terceiros

Conclusao

O vazamento de mais de 10 mil imagens Docker com credenciais expostas e um lembrete importante: seguranca e responsabilidade de todos os desenvolvedores, nao apenas da equipe de seguranca.

A boa noticia e que prevenir esse tipo de vazamento e relativamente simples com as praticas corretas: use .dockerignore, nunca hardcode credenciais, utilize secrets managers, e escaneie suas imagens regularmente.

Se voce ainda nao revisou suas imagens Docker e seu pipeline de CI/CD, agora e a hora. Uma credencial vazada pode custar desde o acesso a APIs pagas ate comprometer toda a infraestrutura da sua empresa.

Para entender mais sobre boas praticas de infraestrutura moderna, recomendo conferir o artigo Edge Computing e Serverless em 2025 onde discutimos como as novas arquiteturas podem ajudar a melhorar a seguranca.

Bora pra cima! 🦅

📚 Quer Aprofundar Seus Conhecimentos em JavaScript?

Este artigo cobriu seguranca em containers, mas entender JavaScript profundamente e essencial para qualquer desenvolvedor moderno.

Desenvolvedores que investem em conhecimento solido e estruturado tendem a ter mais oportunidades no mercado.

Material de Estudo Completo

Se voce quer dominar JavaScript do basico ao avancado, preparei um guia completo:

Opcoes de investimento:

  • 1x de R$9,90 no cartao
  • ou R$9,90 a vista

👉 Conhecer o Guia JavaScript

💡 Material atualizado com as melhores praticas do mercado

Comentários (0)

Esse artigo ainda não possui comentários 😢. Seja o primeiro! 🚀🦅

Adicionar comentário