Após duas semanas revoltado com o alto preços dos combustíveis, decidi na madrugada do dia 05/04 fazer um post no twitter e identi.ca mostrando como foi abusivo o aumento do etanol (álcool) aqui em Brasília, que passou de R$ 2,02 para R$ 2,83.
Comentando com o Thiago Silva, ele falou que existia um sistema onde era possível visualizar os preços dos combustíveis em todo o Brasil. Acessamos o site da ANP e realmente o sistema possuía os preços atualizados por cidades e períodos. Observei que o formulário de pesquisa usava o método POST e não gerava uma URL amigável impossibilitando que eu mostrasse como estava caro os preços em Brasília. Como tenho conhecimento em HTML, comecei a ler o código do formulário para tentar gerar uma URL via método GET para conseguir publicar o link sobre o preço dos combustíveis em Brasília, para que outras pessoas acessassem diretamente a tabela de preços ao invés de preencher o formulário.
Acabei descobrindo que os campos “hidden“, como por exemplo, o campo “selMunicipio” estava preenchido assim “1778*BRASILIA” e o campo “selSemana” estava “615*De 27/03/2011 a 02/04/2011“. Percebendo isso, minha primeira reação foi tentar alterar o campo “selMunicipio” de “1778*BRASILIA” para “1778*A“, e não é que apareceu escrito “A” ao invés de “BRASILIA“, lá no site da ANP?! Mudei o “selMunicipio” para “1778*BRASILIA A CIDADE SEM LEI” e o “selSemana” para “615*De 27/03/2011 a 02/04/2011~INFINITO E ALEM” e publiquei a URL modificada aqui [1] e aqui [2].
Fiz mais um teste tentando colocar código HTML junto ao texto na URL e também funcionou. Ooooops ficou mais sério a falha de segurança.
Em paralelo aos testes, estava acontecendo muita conversa sobre os preços altos dos combustíveis e muita gente estava usando a hashtag combustivelmaisbaratoja.
Tive a ideia de fazer um abaixo-assinado e contribuir no assunto. Pensei em alguns métodos de como inserí-lo dentro da página da ANP, uma vez que eu consigo inserir código HTML na URL. Alguns minutos conversando com o Thiago, tive a ideia de usar um iframe. Comecei a desenvolver o formulário usando python-pesto, python-sqlalchemy e em alguns minutos depois estava pronto. Discutimos sobre onde hospedar e quais seriam as implicações. Decidimos hospedar o formulário no nosso próprio domínio mundobugado.org, numa forma de assumir, porque a nossa intenção era também demonstrar a falha no site e não só protestar.
Publiquei [1] e [2] a URL com o iframe e várias pessoas repassaram o link.
http://www.anp.gov.br/preco/prc/Resumo_Por_Municipio_Posto.asp?Tipo=2&cod_Semana=615&desc_Semana=A&selCombustivel=643*A&selMunicipio=1778*BRASILIA%20A%20CIDADE%20SEM%20LEI&selSemana=615*De%2027/03/2011%20a%2002/04/2011~INFINITO%20E%20ALEM%3Ciframe%20src=%27http://mundobugado.org/anp%27%20height=%27500%27%20width=%27500%27%3E%3C/iframe%3E%3C!--
imagem via yaso:
No dia seguinte, dia 06/04, a ANP retirou o Sistema de Pesquisa de Preços do ar. Procurei saber o motivo, se era por nossa causa, e era. No microblog tinha o seguinte alerta:
Um alerta mentiroso, uma vez que usamos a própria URL do site da ANP e não algo como “anp.com.br” ou “anp.net”, etc. (Um dúvida minha, qual é a relação entre formulário falso e o sistema estar em manutenção?! Pura desculpa para uma falha deles?!). Algum tempo depois, vários sites replicaram o alerta [1], [2], [3], [4].
Olhei alguns códigos do site da ANP e encontrei outras brechas [1] e [2]. Agora, não só o Sistema de Pesquisa de Preços estava com a falha, mas a maior parte dos formulários do site, incluindo a busca principal. ANP, agora vocês vão retirar o site todo do ar? E vão usar o que como desculpa pela mal programação?!
Optei agora por não espalhar a URL com o iframe e avisei [1] e [2] a ANP sobre as falhas, mas até agora não recebi uma resposta.
O lado negativo de tudo isso, é que uma falha boba, de fácil solução, deixou o sistema 24h ~ ao infinito e além fora do ar. Me deixando com a pulga atrás da orelha, pensando que mesmo que a TI da ANP demore pra corrigir a falha, o lado político de deixar o sistema fora do ar nesse momento de grande procura dos dados. Uma pena…
Espero ter esclarecido o que aconteceu. Happy hack!
ATUALIZAÇÂO: 08/04/2011 18h20
O Sistema de Pesquisa de Preços esta no ar novamente e parece corrigido. Mas reparei que a busca do site sumiu, que foi o meu outro bug report. Será que a ANP vai fazer uma nota sobre o assunto?!
ATUALIZAÇÂO: 08/04/2011 20h52
A busca no site da ANP ainda não voltou =/ Mas sexta-feira, numa hora dessas, deve ficar o fim de semana todo sem a busca. Espero que corrijam todas as falhas do mesmo tipo que levantei sobre HTML Injection e não só os dois formulários bugados que citei nesse “artigo”. Para isso, tenho mais um formulário bugado para testar, agora é esperar pra ver.
ATUALIZAÇÂO: 11/04/2011 22h18
Olhei de manhã, de tarde, mas agora a busca no site ANP está de volta e corrigida. Mas, e as outras falhas, quando serão corrigidas?!
ATUALIZAÇÂO: 11/12/2016
Esse post resultou em uma busca e apreensão, e também muito dinheiro público gasto em vão. Explico melhor aqui: Mundo Bugado, ANP, MP, PF e a INTERPOL
Tobias
Bom, apenas para relatar, na esperança de que seja útil: ocorreu comigo de encontrar uma brecha em um sistema web, onde o acesso administrativo é validado via javascript no lado do cliente; rapidamente entrei em contato com o proprietário da empresa, para dizer que o site dele estava com erros simples de programação, inclusive passei para ele o ip que eu havia utilizado para fazer os testes, e nada, nao obtive resposta. Um tempo depois ele, em uma situação não corelata e desvantajosa para ele, usou o argumento de que eu havia “invadido” (no sentido mais malicioso e vil que o senso comum pode dar a este termo) o site e que ele podia “provar”.