Resolução de ano-novo: não mostrar meus tokens de segurança ao hackear minha aplicação de demonstração no palco
12 de janeiro de 2022
0 minutos de leituraTradicionalmente, 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.

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.

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!


