Após ter descoberto, por acaso, a falha de segurança no site da TelexFree, que faz com que os dados de seus divulgadores/compradores/consumidores sejam expostos na Internet, eu decidi fazer algumas pesquisas para ver se outras empresas são afetadas. E a resposta não é nenhuma surpresa. Sim, outras empresas suspeitas de práticas de pirâmide financeira também apresentam a mesma falha descoberta no site da TelexFree ontem.
A bola da vez é a BBOM, que também utiliza o boleto bancário do Banco do Brasil, mas não consegui descobrir se usam o mesmo script gratuito que é utilizado pela TelexFree (que por sinal tem falha conhecida que permitiria ataques de SQL Injection).
Apesar de terem sido um pouco mais precavidos, o site não evitou que os dados pessoais de seus clientes/divulgadores fossem parar no Google e ficassem disponíveis para quem quisesse olhar / guardar / associar seu nome.
Um pouco mais seguro, pero no mucho
Ao contrário do que ocorre na TelexFree, apenas alguns poucos boletos da BBOM estão indexados no Google (eu vi 7 no total). Eles também não utilizam um número sequencial para gerar o boleto, nem expõe o nome do arquivo gerador (o que pode facilitar a identificação de falhas). Eles usam.. tandaaammmm UM HASH! E só.
O grande problema ao se utilizar hashes, é fazer de forma preguiçosa. Foi o que a BBOM fez. O programador da BBOM, pegou um dado do boleto, o ID do mesmo, e usou MD5 (o hash mais conhecido do mundo, provavelmente). Para confirmar, foi só pegar o ID, gerar um MD5 (esse algoritmo gera sempre o mesmo hash, mega útil e confiável para gerar assinaturas de arquivos por exemplo) e bater com a URL. Sooo easy. Daí foi só testar com um número sequencial após o número que vi. PIMBA!
Como a falha pode ser explorada
Não me aprofundei, até porque isso não é de minha especialidade, mas em primeiro momento, a mesmíssima forma de exploração pode ser feita aqui. Alguém pode gerar um script com um contador qualquer até um número X enorme e ir gerando os hashes MD5 de cada número, capturando as informações do site da BBOM e guardando para si.
Novamente, os dados que podem ser capturados são:
- Nome completo
- Endereço completo
- Cidade, Estado e CEP
- Data de solicitação de filiação a BBOM
- Valor pago a BBOM
Como a falha poderia ter sido evitada
Obviamente eu não teria acesso aos testes que fiz se, em primeiro momento, os boletos não estivessem indexados no Google. Essa é a falha clássica, a meu ver. Nós devemos sempre – SEMPRE – proibir a indexação de documentos que contenham dados sensíveis, que comprometam os nossos clientes ou mesmo a nossa empresa.
A segunda falha não foi necessariamente uma falha enorme, daquelas que se diga “nooossa, que falha horrorosa”, mas poxa, foi muito mirim pegar o próprio ID do boleto para gerar uma hash por um algoritmo conhecido. Poderiam pegar, por exemplo, o e-mail do cidadão para gerar a hash, e passar na URL também o ID do boleto, para comparar e exibir o documento. É algo muito simples, não tem razão de ser.
O que aprendemos com a lição de hoje? Me digam vocês.