Saltar para o conteúdo principal

21 posts marcados com "Segurança"

Cibersegurança, auditorias de contratos inteligentes e melhores práticas

Ver todas as tags

O Crime de Copiar e Colar: Como um Hábito Simples Está Drenando Milhões de Carteiras Cripto

· 5 min de leitura
Dora Noda
Software Engineer

Quando você envia cripto, qual é a sua rotina? Para a maioria de nós, envolve copiar o endereço do destinatário a partir do histórico de transações. Afinal, ninguém consegue memorizar uma sequência de 40 caracteres como 0x1A2b...8f9E. É um atalho conveniente que todos usamos.

Mas e se essa conveniência for uma armadilha cuidadosamente preparada?

Um golpe devastadoramente eficaz chamado Envenenamento de Endereço Blockchain está explorando exatamente esse hábito. Pesquisas recentes da Carnegie Mellon University revelaram a escala chocante dessa ameaça. Em apenas dois anos, nas redes Ethereum e Binance Smart Chain (BSC) sozinhas, os fraudadores realizaram mais de 270 milhões de tentativas de ataque, visando 17 milhões de vítimas e roubando com sucesso pelo menos US$ 83,8 milhões.

Isso não é uma ameaça de nicho; é um dos maiores e mais bem-sucedidos esquemas de phishing cripto em operação hoje. Veja como funciona e o que você pode fazer para se proteger.


Como a Enganação Funciona 🤔

O envenenamento de endereço é um jogo de truques visuais. A estratégia do atacante é simples, porém brilhante:

  1. Gerar um Endereço Similar: O atacante identifica um endereço frequente para o qual você envia fundos. Em seguida, usa computadores poderosos para gerar um novo endereço cripto que tenha os mesmos caracteres iniciais e finais. Como a maioria das carteiras e exploradores de blocos encurtam os endereços para exibição (por exemplo, 0x1A2b...8f9E), o endereço fraudulento parece idêntico ao real à primeira vista.

  2. “Envenenar” seu Histórico de Transações: Em seguida, o atacante precisa colocar seu endereço similar no seu histórico de carteira. Ele faz isso enviando uma transação “venenosa”. Isso pode ser:

    • Uma Transferência Minúscula: Ele envia a você uma quantia ínfima de cripto (como US$ 0,001) a partir do endereço similar. Ela passa a aparecer na sua lista de transações recentes.
    • Uma Transferência de Valor Zero: Em um movimento mais astuto, ele explora uma funcionalidade em muitos contratos de token para criar uma transferência falsa, de valor zero, que parece ter vindo de você para o endereço similar dele. Isso faz o endereço falso parecer ainda mais legítimo, como se você já tivesse enviado fundos para ele antes.
    • Uma Transferência de Token Falso: Ele cria um token sem valor, falso (por exemplo, “USDTT” ao invés de USDT) e falsifica uma transação para seu endereço similar, muitas vezes imitando o valor de uma transação real anterior sua.
  3. Esperar o Erro: A armadilha está armada. Na próxima vez que você for pagar um contato legítimo, você verifica seu histórico de transações, vê o que acredita ser o endereço correto, copia‑o e confirma o envio. Quando perceber o erro, os fundos já terão desaparecido. E, graças à natureza irreversível da blockchain, não há banco para ligar nem como recuperar o dinheiro.


Um Vislumbre de uma Empresa Criminosa 🕵️‍♂️

Isso não é obra de hackers solitários. A pesquisa revela que esses ataques são realizados por grandes grupos organizados e altamente lucrativos.

Quem Eles Visam

Os atacantes não desperdiçam tempo com contas pequenas. Eles visam sistematicamente usuários que são:

  • Ricos: Possuem saldos significativos em stablecoins.
  • Ativos: Realizam transações frequentes.
  • Transatores de Alto Valor: Movimentam grandes somas de dinheiro.

Uma Corrida Armamentista de Hardware

Gerar um endereço similar é uma tarefa computacional de força bruta. Quanto mais caracteres você quiser combinar, mais exponencialmente difícil fica. Pesquisadores descobriram que, embora a maioria dos atacantes use CPUs padrão para criar falsificações moderadamente convincentes, o grupo criminoso mais sofisticado elevou isso a outro nível.

Esse grupo de elite conseguiu gerar endereços que combinam até 20 caracteres do endereço alvo. Essa façanha é quase impossível com computadores padrão, levando os pesquisadores a concluir que eles utilizam enormes fazendas de GPUs — o mesmo tipo de hardware poderoso usado para jogos de alta performance ou pesquisa em IA. Isso demonstra um investimento financeiro significativo, que eles recuperam facilmente das vítimas. Esses grupos organizados estão operando como um negócio, e o negócio está, infelizmente, em alta.


Como Proteger seus Fundos 🛡️

Embora a ameaça seja sofisticada, as defesas são simples. Tudo se resume a quebrar maus hábitos e adotar uma postura mais vigilante.

  1. Para Todo Usuário (Esta é a parte mais importante):

    • VERIFIQUE O ENDEREÇO COMPLETO. Antes de clicar em “Confirmar”, reserve cinco segundos extras para conferir manualmente todo o endereço, caractere por caractere. Não se limite a olhar apenas os primeiros e últimos dígitos.
    • USE UMA LISTA DE CONTATOS. Salve endereços confiáveis e verificados no livro de endereços ou lista de contatos da sua carteira. Ao enviar fundos, sempre selecione o destinatário dessa lista salva, e não do seu histórico de transações dinâmico.
    • ENVIE UMA TRANSAÇÃO DE TESTE. Para pagamentos grandes ou importantes, envie primeiro uma quantia mínima. Confirme com o destinatário que ele recebeu antes de enviar o valor total.
  2. Um Apelo por Carteiras Melhores:

    • Desenvolvedores de carteiras podem ajudar melhorando as interfaces de usuário. Isso inclui exibir mais do endereço por padrão ou adicionar avisos fortes e explícitos quando o usuário está prestes a enviar fundos para um endereço com o qual só interagiu via transferência mínima ou de valor zero.
  3. A Solução a Longo Prazo:

    • Sistemas como o Ethereum Name Service (ENS), que permitem mapear um nome legível como seunome.eth ao seu endereço, podem eliminar esse problema completamente. A adoção mais ampla é fundamental.

No mundo descentralizado, você é seu próprio banco, o que também significa que você é seu próprio chefe de segurança. O envenenamento de endereço é uma ameaça silenciosa, porém poderosa, que se alimenta da conveniência e da desatenção. Ao ser deliberado e conferir duas vezes seu trabalho, você garante que seus ativos arduamente conquistados não acabem na armadilha de um fraudador.

O Mito da Anonimidade do Ethereum: Como Pesquisadores Desmascararam 15% dos Validadores

· 6 min de leitura
Dora Noda
Software Engineer

Uma das promessas centrais da tecnologia de blockchain como o Ethereum é um certo grau de anonimato. Os participantes, conhecidos como validadores, deveriam operar sob um véu de pseudônimos criptográficos, protegendo sua identidade no mundo real e, por extensão, sua segurança.

Entretanto, um artigo de pesquisa recente intitulado “Deanonymizing Ethereum Validators: The P2P Network Has a Privacy Issue”, elaborado por pesquisadores da ETH Zurich e outras instituições, revela uma falha crítica nessa suposição. Eles demonstram um método simples e de baixo custo para ligar o identificador público de um validador diretamente ao endereço IP da máquina onde ele está rodando.

Em resumo, os validadores do Ethereum não são tão anônimos quanto muitos acreditam. As descobertas foram tão relevantes que renderam aos pesquisadores uma recompensa de bug da Ethereum Foundation, reconhecendo a gravidade do vazamento de privacidade.

Como a Vulnerabilidade Funciona: Uma Falha no Gossip

Para entender a vulnerabilidade, precisamos primeiro de uma visão básica de como os validadores do Ethereum se comunicam. A rede consiste em mais de um milhão de validadores que constantemente “votam” sobre o estado da cadeia. Essas votações são chamadas de attestations e são transmitidas por uma rede ponto‑a‑ponto (P2PP2P) para todos os demais nós.

Com tantos validadores, fazer com que todos transmitam cada voto para todos seria insustentável e sobrecarregaria a rede imediatamente. Para resolver isso, os projetistas do Ethereum implementaram uma solução de escalabilidade inteligente: a rede é dividida em 64 canais de comunicação distintos, conhecidos como subnets.

  • Por padrão, cada nó (o computador que executa o software do validador) se inscreve em apenas dois desses 64 subnets. Sua principal tarefa é retransmitir diligentemente todas as mensagens que vê nesses dois canais.
  • Quando um validador precisa emitir um voto, sua attestation é aleatoriamente atribuída a um dos 64 subnets para ser broadcast.

É aqui que a vulnerabilidade se manifesta. Imagine um nó cuja função é gerenciar o tráfego dos canais 12 e 13. Durante o dia inteiro, ele encaminha fielmente mensagens apenas desses dois canais. De repente, ele lhe envia uma mensagem que pertence ao canal 45.

Isso é uma pista poderosa. Por que um nó trataria de uma mensagem de um canal que não lhe cabe? A conclusão mais lógica é que o próprio nó gerou aquela mensagem. Isso implica que o validador que criou a attestation para o canal 45 está rodando exatamente naquela máquina.

Os pesquisadores exploraram esse princípio exato. Ao configurar seus próprios nós de escuta, monitoraram os subnets dos quais seus pares enviavam attestations. Quando um par enviava uma mensagem de um subnet ao qual não estava oficialmente inscrito, eles podiam inferir, com alta confiança, que o par hospedava o validador de origem.

O método provou ser surpreendentemente eficaz. Usando apenas quatro nós ao longo de três dias, a equipe localizou os endereços IP de mais de 161.000 validadores, representando mais de 15 % de toda a rede Ethereum.

Por Que Isso Importa: Os Riscos da Desanonimização

Expor o endereço IP de um validador não é algo trivial. Isso abre a porta para ataques direcionados que ameaçam tanto os operadores individuais quanto a saúde da rede Ethereum como um todo.

1. Ataques Direcionados e Roubo de Recompensas O Ethereum anuncia qual validador está programado para propor o próximo bloco alguns minutos antes. Um atacante que conheça o endereço IP desse validador pode lançar um ataque de negação de serviço (DDoS), inundando-o de tráfego e tirando-o do ar. Se o validador perder a janela de quatro segundos para propor o bloco, a oportunidade passa para o próximo validador na fila. Caso o atacante seja esse próximo validador, ele pode então reivindicar as recompensas do bloco e as taxas de transação valiosas (MEV) que deveriam ter ido para a vítima.

2. Ameaças à Liveness e à Safety da Rede Um atacante bem financiado poderia executar esses ataques de “sniping” repetidamente, fazendo a blockchain inteira desacelerar ou parar (um ataque de liveness). Em um cenário mais grave, o atacante poderia usar essa informação para lançar ataques sofisticados de particionamento da rede, potencialmente fazendo com que diferentes partes da rede discordem sobre o histórico da cadeia, comprometendo sua integridade (um ataque de safety).

3. Revelando uma Realidade Centralizada A pesquisa também trouxe à luz algumas verdades desconfortáveis sobre a descentralização da rede:

  • Concentração Extrema: A equipe encontrou pares hospedando um número impressionante de validadores, incluindo um endereço IP que executava mais de 19.000. A falha de uma única máquina poderia ter um impacto desproporcional na rede.
  • Dependência de Serviços de Nuvem: Aproximadamente 90 % dos validadores localizados rodam em provedores de nuvem como AWS e Hetzner, e não nos computadores de stakers individuais. Isso representa um ponto significativo de centralização.
  • Dependências Ocultas: Muitos grandes pools de staking afirmam que seus operadores são independentes. Contudo, a pesquisa encontrou casos em que validadores de pools diferentes e concorrentes estavam rodando na mesma máquina física, criando riscos sistêmicos ocultos.

Mitigações: Como os Validadores podem se Proteger?

Felizmente, existem formas de se defender contra essa técnica de desanonimização. Os pesquisadores propuseram várias mitigações:

  • Criar Mais Ruído: Um validador pode optar por se inscrever em mais de dois subnets — ou até em todos os 64. Isso dificulta muito para um observador distinguir entre mensagens retransmitidas e mensagens geradas internamente.
  • Usar Múltiplos Nós: Um operador pode separar as funções de validação em máquinas diferentes, cada uma com IP distinto. Por exemplo, um nó pode lidar com attestations enquanto outro nó privado é usado apenas para propor blocos de alto valor.
  • Peering Privado: Validadores podem estabelecer conexões confiáveis e privadas com outros nós para retransmitir suas mensagens, ofuscando sua origem verdadeira dentro de um pequeno grupo de confiança.
  • Protocolos de Broadcast Anônimos: Soluções mais avançadas como o Dandelion, que ofusca a origem de uma mensagem ao encaminhá‑la por um “stem” aleatório antes de divulgá‑la amplamente, poderiam ser implementadas.

Conclusão

Esta pesquisa ilustra de forma contundente o trade‑off inerente entre desempenho e privacidade em sistemas distribuídos. Na busca por escalabilidade, a rede P2PP2P do Ethereum adotou um design que comprometeu o anonimato de seus participantes mais críticos.

Ao trazer essa vulnerabilidade à luz, os pesquisadores forneceram à comunidade Ethereum o conhecimento e as ferramentas necessárias para abordá‑la. Seu trabalho representa um passo crucial rumo à construção de uma rede mais robusta, segura e verdadeiramente descentralizada para o futuro.

Implantação Segura com Docker Compose + Ubuntu

· 7 min de leitura

Em startups do Vale do Silício, o Docker Compose é uma das ferramentas preferidas para implantar e gerenciar rapidamente aplicações containerizadas. Contudo, a conveniência costuma vir acompanhada de riscos de segurança. Como engenheiro de confiabilidade de sites (SRE), estou ciente de que vulnerabilidades podem gerar consequências catastróficas. Este artigo compartilha as melhores práticas de segurança que compilei no meu trabalho real combinando Docker Compose com sistemas Ubuntu, ajudando você a aproveitar a conveniência do Docker Compose enquanto garante a segurança do sistema.

Implantação Segura com Docker Compose + Ubuntu

I. Reforço da Segurança do Sistema Ubuntu

Antes de implantar contêineres, é crucial garantir a segurança do host Ubuntu. Aqui estão alguns passos essenciais:

1. Atualizar Ubuntu e Docker Regularmente

Mantenha tanto o sistema quanto o Docker atualizados para corrigir vulnerabilidades conhecidas:

sudo apt update && sudo apt upgrade -y
sudo apt install docker-ce docker-compose-plugin

2. Restringir Permissões de Gerenciamento do Docker

Controle estritamente as permissões de gerenciamento do Docker para impedir ataques de elevação de privilégios:

sudo usermod -aG docker deployuser
# Impedir que usuários regulares obtenham facilmente permissões de gerenciamento do Docker

3. Configurar o Firewall do Ubuntu (UFW)

Restrinja o acesso de rede de forma razoável para evitar acessos não autorizados:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

4. Configurar Adequadamente a Interação entre Docker e UFW

Por padrão, o Docker ignora o UFW ao configurar iptables, portanto, recomenda‑se controle manual:

Modifique o arquivo de configuração do Docker:

sudo nano /etc/docker/daemon.json

Adicione o seguinte conteúdo:

{
"iptables": false,
"ip-forward": true,
"userland-proxy": false
}

Reinicie o serviço Docker:

sudo systemctl restart docker

Vincule explicitamente endereços no Docker Compose:

services:
webapp:
ports:
- "127.0.0.1:8080:8080"

II. Melhores Práticas de Segurança no Docker Compose

As configurações a seguir se aplicam ao Docker Compose v2.4 ou superior. Observe as diferenças entre os modos não‑Swarm e Swarm.

1. Restringir Permissões dos Contêineres

Contêineres que rodam como root por padrão apresentam alto risco; altere para usuários não‑root:

services:
app:
image: your-app:v1.2.3
user: "1000:1000" # Usuário não‑root
read_only: true # Sistema de arquivos somente leitura
volumes:
- /tmp/app:/tmp # Monte diretórios específicos se for necessário acesso de escrita
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE

Explicação:

  • Um sistema de arquivos somente leitura impede alterações dentro do contêiner.
  • Garanta que os volumes montados estejam limitados aos diretórios necessários.

2. Isolamento de Rede e Gerenciamento de Portas

Divida de forma precisa redes internas e externas para evitar expor serviços sensíveis ao público:

networks:
frontend:
internal: false
backend:
internal: true

services:
nginx:
networks: [frontend, backend]
database:
networks:
- backend
  • Rede frontend: pode ser aberta ao público.
  • Rede backend: restrita estritamente, comunicação interna apenas.

3. Gerenciamento Seguro de Segredos

Dados sensíveis nunca devem ser inseridos diretamente em arquivos Compose:

Em modo de máquina única:

services:
webapp:
environment:
- DB_PASSWORD_FILE=/run/secrets/db_password
volumes:
- ./secrets/db_password.txt:/run/secrets/db_password:ro

Em modo Swarm:

services:
webapp:
secrets:
- db_password
environment:
DB_PASSWORD_FILE: /run/secrets/db_password

secrets:
db_password:
external: true # Gerenciado pelo gerenciamento nativo do Swarm

Observação:

  • Os Segredos nativos do Swarm não podem usar diretamente ferramentas externas como Vault ou AWS Secrets Manager.
  • Caso seja necessário armazenamento externo de segredos, integre o processo de leitura por conta própria.

4. Limitação de Recursos (Adaptar à Versão do Docker Compose)

Limites de recursos evitam que um único contêiner esgote os recursos do host.

Modo de Máquina Única (Docker Compose v2.4 recomendado):

version: "2.4"

services:
api:
image: your-image:1.4.0
mem_limit: 512m
cpus: 0.5

Modo Swarm (v3 ou superior):

services:
api:
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
reservations:
cpus: "0.25"
memory: 256M

Nota: Em ambientes não‑Swarm, a seção deploy com limites de recursos não tem efeito, portanto, preste atenção à versão do arquivo Compose.

5. Verificações de Saúde dos Contêineres

Configure health checks para detectar problemas proativamente e reduzir o tempo de inatividade:

services:
webapp:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 20s

6. Evitar o Uso da Tag latest

Evite a incerteza trazida pela tag latest em ambientes de produção; imponha versões específicas de imagens:

services:
api:
image: your-image:1.4.0

7. Gerenciamento Adequado de Logs

Impeça que logs de contêineres consumam todo o espaço em disco:

services:
web:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"

8. Configuração do AppArmor no Ubuntu

Por padrão, o Ubuntu habilita o AppArmor, e recomenda‑se verificar o status do perfil Docker:

sudo systemctl enable --now apparmor
sudo aa-status

O Docker no Ubuntu já habilita o AppArmor sem necessidade de configuração adicional. Não é recomendado habilitar o SELinux simultaneamente ao Ubuntu para evitar conflitos.

9. Atualizações Contínuas e Varreduras de Segurança

  • Varredura de Vulnerabilidades de Imagens: Recomenda‑se integrar ferramentas como Trivy, Clair ou Snyk ao processo CI/CD:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
aquasec/trivy image your-image:v1.2.3
  • Processo Automatizado de Atualizações de Segurança: Reconstrua imagens pelo menos semanalmente para corrigir vulnerabilidades conhecidas.

III. Estudo de Caso: Lições de Erros de Configuração no Docker Compose

Em julho de 2019, a Capital One sofreu uma grande violação de dados que afetou informações pessoais de mais de 100 milhões de clientes 12. Embora a causa principal fosse erro de configuração na AWS, também envolveram questões de segurança de contêineres semelhantes ao seu cenário:

  1. Problemas de Permissão em Contêineres: O invasor explorou uma vulnerabilidade em um Web Application Firewall (WAF) rodando em um contêiner com permissões excessivas.
  2. Isolamento de Rede Insuficiente: O invasor pôde acessar outros recursos da AWS a partir do contêiner comprometido, indicando falta de isolamento de rede adequado.
  3. Exposição de Dados Sensíveis: Devido a erros de configuração, o invasor conseguiu acessar e roubar grande quantidade de dados confidenciais dos clientes.
  4. Erros de Configuração de Segurança: A raiz do incidente foi o acúmulo de múltiplos erros de configuração, incluindo falhas em contêineres e serviços de nuvem.

O incidente gerou perdas financeiras significativas e danos à reputação da Capital One. Relata‑se que a empresa enfrentou multas de até US $150 milhões, além de uma crise de confiança de longo prazo. Esse caso evidencia a importância da configuração de segurança em ambientes de contêineres e nuvem, especialmente na gestão de permissões, isolamento de rede e proteção de dados sensíveis. Ele nos lembra que até mesmo pequenos erros de configuração podem ser explorados por atacantes, levando a consequências desastrosas.

IV. Conclusão e Recomendações

Docker Compose combinado com Ubuntu é uma forma prática de implantar rapidamente aplicações containerizadas, mas a segurança deve estar integrada em todo o processo:

  • Controle estrito de permissões de contêineres e isolamento de rede.
  • Evite vazamento de dados sensíveis.
  • Varreduras de segurança regulares e atualizações frequentes.
  • Recomenda‑se migrar para sistemas de orquestração avançados como Kubernetes para garantir maior segurança à medida que a empresa escala.

Segurança é uma prática contínua, sem ponto final. Espero que este artigo ajude você a proteger melhor seu ambiente de implantação Docker Compose + Ubuntu.