Skip to main content

Resolução de ano-novo: não mostrar meus tokens de segurança ao hackear minha aplicação de demonstração no palco

Escrito por

12 de janeiro de 2022

0 minutos de leitura

Tradicionalmente, começamos o ano novo com resoluções. Queremos fazer mais coisas boas, como trabalhar, e eliminar outras. Pensando no que queremos eliminar, minha resolução para 2022 é parar de expor acidentalmente informações confidenciais enquanto hackeio minha aplicação durante demonstrações no palco ou situações parecidas。

Sim, essa resolução de ano-novo parece bem específica — e tem por trás uma ótima história de terror sobre segurança.

Hackeando minha aplicação de demonstração no J-Fall 2021

Em 4 de novembro de 2021, aconteceu o J-Fall, a maior conferência de Java dos Países Baixos. O evento anual é organizado pelo Netherlands Java User Group (NLJUG) e, como membro do conselho, fiquei feliz por voltar a participar de um evento presencial depois do início da pandemia. Também fui selecionado para palestrar nessa conferência sobre um tema relacionado à segurança em Java: problemas de segurança na desserialização em Java.

Como parte da apresentação, hackeei minha aplicação usando uma cadeia de gadgets de desserialização. Usei a conhecida cadeia de ataque da biblioteca Commons Collections 3.1, criada para demonstrar como hackear minha aplicação com execução arbitrária de código (ACE). A configuração foi simples: usei o ysoserial para montar a cadeia de gadgets, e a aplicação que eu ia hackear incluía a biblioteca. Até aí, tudo bem. Mas então veio a parte complicada…

Expondo tokens secretos de API no palco

A ACE que eu ia executar consistia em chamar o comando env na minha máquina e mostrar a saída no console. Para quem não conhece esse comando, ele exibe as variáveis de ambiente da máquina host. Costumo usar um usuário específico no meu notebook de demonstração quando mostro como hackear uma aplicação. Às vezes, uso um contêiner Docker, mas não foi o caso dessa vez.

Dessa vez, fiz o hack usando meu ambiente principal, que também uso no notebook para o desenvolvimento do dia a dia. Por isso, minhas variáveis de ambiente incluíam tokens de API, como o do GitHub! Tudo isso foi exibido no telão da grande sala de cinema. ???

No começo, não percebi o que tinha acontecido, pois estava totalmente concentrado na apresentação e nas demonstrações no palco. Mas, depois, um dos participantes, Nils Breunese (@breun), veio falar comigo e disse: “Oi, espero que você leve isso numa boa, como alguém da área de segurança”, e me mostrou a foto abaixo no celular.

Captura de tela de uma página da web para dispositivos móveis, destacando o título “BrianVermeer.nl invadido no J-Fall”, sobre uma foto de Brian Vermeer com um laptop.

No início, não entendi totalmente o que era possível fazer. Mas ele explicou a situação e usou meu token de acesso do GitHub para enviar código ao meu site. Quando percebi o que tinha acontecido, fiquei constrangido e aliviado ao mesmo tempo. A situação poderia ter sido muito pior do que a simples pegadinha que ele me pregou. Invalidei imediatamente todos os tokens definidos nas variáveis de ambiente e corrigi meu site. Decidi não reverter o commit do Nils, mas corrigir o problema em um novo commit. Assim, ele continua visível como lembrança do meu J-Fail.

Dois homens posam no palco ao lado de um púlpito do J-FALL 2021. Um faz sinal de positivo e o outro pede silêncio.

O momento em que Nils me contou o que tinha acontecido, logo depois que terminei minha palestra no J-Fall 2021.

Não hackeie a si mesmo, só sua aplicação de demonstração

Felizmente, isso acabou virando uma boa história para contar. Quero agradecer ao Nils por ser uma pessoa legal e bem-humorada. Para mim, fica o lembrete de que preciso praticar o que prego. É muito doloroso falar sobre segurança no palco e hackear aplicações enquanto você mesmo é comprometido. Por isso, quero concluir dizendo que precisamos ter cuidado com o que fazemos e com o que fica visível para outras pessoas. As ferramentas para proteger sua aplicação, como as que a Snyk oferece, ajudam, mas não evitam erros bobos. Até profissionais de segurança cometem esse tipo de deslize. Tente prestar atenção e confira o que aparece na tela antes de publicar sua aplicação em produção ou demonstrá-la no palco.

Então, minha resolução de ano-novo para 2022 é: não expor informações confidenciais enquanto hackeio minhas aplicações durante demonstrações ou apresentações! Sou grato ao Nils por ter sido tão gentil e me alertado. Feliz 2022, pessoal!

Leia mais

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

Blog

Por que agentes de programação com IA continuam criando falhas de controle de acesso

Agentes de programação com IA podem gerar uma lógica de autorização que compila e passa pela revisão, mas permite que um tenant acesse os dados de outro. Saiba por que é difícil detectar falhas de controle de acesso e como evitá-las.