IT & Engineering

Um aviso para quem desenvolve em Laravel

Recentemente, notamos uma tendência na qual os clientes acabam expondo informações confidenciais de forma acidental, junto com suas credenciais do Mailgun, ao público. Esse problema específico ocorre em sites que usam o popular framework PHP, o Laravel. Leia mais...
Imagem para Um aviso para quem desenvolve em Laravel

“Minha aplicação é segura?” é uma das principais perguntas que as equipes de desenvolvimento se fazem hoje em dia. Ainda assim, as falhas de segurança e contas comprometidas estão cada vez mais comuns, e as equipes de segurança e conformidade vivem quebrando a cabeça para identificar vulnerabilidades e como evitá-las.

No Mailgun, notamos recentemente um aumento no número de contas de clientes com uso não autorizado. Isso não é novidade, mas o aumento atual nos chamou a atenção, então decidimos investigar. Nossa investigação encontrou as causas de sempre, como a acidental exposição de credenciais no Github e credential stuffing ataques, mas o que ainda não tínhamos visto era algo que afetasse nossos clientes que usam o Laravel.

O que está acontecendo com o Laravel?

Laravel é um framework PHP muito popular, usado por equipes de desenvolvimento no mundo todo. O Laravel inclui um modo de depuração que ajuda esses profissionais a encontrar problemas e identificar erros em sua programação durante o desenvolvimento de uma aplicação web.

Isso, por si só, não é um problema, pois geralmente é algo usado apenas durante o desenvolvimento. O problema surge quando a aplicação web vai ao ar e o modo de depuração não é desativado. Quando isso acontece, informações confidenciais, como senhas, chaves e dados do banco de dados, podem ser expostas na ocorrência de uma exceção, conforme a captura de tela abaixo mostra.

debug

Para deixar claro, isso não é um bug ou vulnerabilidade do Laravel. É simplesmente uma etapa que pode passar despercebida pela equipe de desenvolvimento na hora de colocar um site no ar. Também não é um problema novo: encontramos muitas discussões sobre esse assunto em fóruns e tópicos online. Porém, parece que pessoas mal-intencionadas descobriram isso e agora estão buscando ativamente por essas exposições.

Ao analisar o problema acima, também notamos outra situação ocorrendo com um subconjunto menor de aplicações Laravel. Em algumas ocasiões, a pessoa responsável pelo desenvolvimento alocou arquivos incorretamente, permitindo que toda a aplicação Laravel fosse disponibilizada a partir do diretório web, em vez de apenas no diretório “public”. Quando isso acontece, o arquivo .env contendo todas as mesmas informações confidenciais fica exposto, como mostra a captura de tela anterior. Se isso for feito, é possível simplesmente usar o navegador e acessar o arquivo diretamente, caso você saiba o caminho. Confira a captura de tela abaixo para ver como isso aparece.

debug2

Por que isso importa para o Mailgun?

Bem, se essas informações confidenciais estiverem disponíveis e caírem nas mãos da pessoa errada (ou seja, de spammers), você pode apostar que haverá mensagens indesejadas circulando em breve pelo servidor de e-mail comprometido. Mas como os spammers encontram essas informações?

Infelizmente, é um tanto fácil. Se o modo de depuração não for desativado quando a aplicação estiver em produção, um invasor pode gerar uma exceção usando um payload especialmente criado em uma solicitação HTTP. Uma vez que isso acontece, a página de depuração é exibida, e as informações confidenciais são extraídas e usadas ou vendidas. Claro, não é possível saber quais são todos os sites vulneráveis a esse ataque, mas isso não impede que tentem.

Hackers são implacáveis. Eles irão iterar sobre listas de IPs, domínios e caminhos até terem sorte e encontrarem um site que ainda estava com o modo de depuração ativado, ou que deixou o arquivo .env exposto. Para piorar a situação, agentes mal-intencionados simplificaram esse processo, tornando mais fácil do que nunca encontrar essas vulnerabilidades com ferramentas como a mostrada abaixo.

debug3

Como você pode se proteger?

Antes de mais nada, desative o modo de depuração ao colocar seu site no ar. A depuração de problemas na programação é extremamente importante e útil para a equipe de desenvolvimento, mas não deve ser usada em um ambiente de produção.

Em segundo lugar, tenha cuidado ao mover arquivos. Nunca, jamais coloque seu arquivo .env no diretório web. Pode parecer óbvio para a maioria, mas o fato é que existem muitos exemplos mostrando que esse tipo de coisa está acontecendo com muita frequência.

Por que estamos dizendo isso a você?

Queremos um ecossistema de e-mail saudável. Nós odiamos spam (odiamos mesmo) e faremos tudo ao nosso alcance para ajudar a comunidade de e-mail a combatê-lo.

Além disso, este é um problema maior do que apenas o uso malicioso de servidores de e-mail. As informações confidenciais expostas nesses ataques podem ser usadas por hackers para roubar dados ou desenvolver novos ataques a sistemas. A última coisa que alguém quer ler é sobre mais um vazamento de dados.

 Boa sorte e mantenha-se em segurança!