Outro Caso de Dados Pessoais Acessíveis

Nesse último fim de semana tropecei com outro exemplo de como a exposição de dados pessoais na Internet é algo banal: ao usar a rede Wi-Fi pública de um centro de compras, vi que eles pedem que você se cadastre. Só que a página de cadastro/consulta é acessível pela Internet também, o que viabiliza vermos os dados pessoais das pessoas que se cadastraram antes de nós, além de vários outros "truques" interessantes.

Na parte superior da figura ao lado, vemos a página de entrada, que nos pede o CPF – eu capturei a imagem no ponto em que digitei "111.111.111-11", um número de CPF considerado inválido pela SRF mas que passa o teste dos dígitos verificadores (todos os dez CPFs que consistem de onze repetições de um mesmo dígito têm essas propriedades). Após clicarmos no link "enviar", o resultado pode ser visto na figura do meio, mostrando os usuários já associados a esse CPF e oferecendo para cadastrarmos mais um. Após selecionar um deles e clicar no link 'enviar', aparece o formulário de alteração de cadastro, com os dados pessoais completos do usuário: nome, endereço, telefone, etc.

Para proteger os inocentes, o usuário específico que eu mostrei nessa demonstração foi um "Fulano de Tal" que eu mesmo tinha previamente cadastrado com dados espúrios. Todavia, aparentemente muita gente colocou seus nomes, endereços e telefones e números de CPF reais e estão lá pra quem quiser pegá-los.

Você pode objetar que seria necessário saber a priori o CPF do usuário, que teoricamente só ele sabe. Ledo engano, por dois motivos: primeiro, nem é difícil descobrir os CPFs das pessoas – não é muito difícil descobrir os CPFs de seus amigos e familiares; muitas vezes, basta perguntar-lhes eles lhe dirão sem questionar. Além disso, nem é necessário descobri-los, basta chutar números de CPF em sequência (ou aleatoriamente), tendo apenas o cuidado de gerar dígitos verificadores válidos, e ver se o site responde ou não.

O segundo motivo é que, nesse site em particular, existe um outro meio ainda mais fácil. Analisando o código fonte do site (disponível diretamente no navegador através da opção "Exibir | Código Fonte"), e, munindo-nos de conhecimentos em HTML, JavaScript e bancos da dados, vê-se que ele converte o CPF em um identificador sequencial.

Sabendo disso, fica facílimo enumerar os usuários: a figura abaixo mostra o momento em que eu usei o endereço de consulta com o número sequecial 41979 relativo ao usuário "Fulano" que eu criei. Como eu tinha acabado de criar esse novo usuário, podemos chutar que o banco de dados deles já tinha 41978 usuários, uma quantidade expressiva. Repetindo essa consulta com 41978, 41977, 41976, 41975,... até 1, podemos copiar todos os dados dessa tabela do banco de dados deles.

Naturalmente, pouca gente teria paciência de ficar alterando os números manualmente na barra de endereços do navegador, clicando na opção "Exibir | Código Fonte", copiando os dados e colando-os em um editor de textos ou programa de banco de dados. É aí que saber programar se torna útil: é facílimo fazer um programa de computador que automatiza esse processo. Com efeito, aqui está um programinha em Perl que faz exatamente isso:

#!/usr/bin/perl

use strict;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new();

my $base_url = "http://www.coloqueaquionomecorretodosite.org.br";

my $form_url = "$base_url/coloqueaquiaurlcorreta_cliente.asp";

for my $cod (1..50_000) {
    my $url = "$form_url?campo=2&form=frmCadastro&valor=$cod";
    my $res = $ua->get($url);
    if ($res->code==200) {
        my $body = $res->body;
        my @flds = split(m{',\s*'}o,$body);
        shift @flds; pop @flds;
        my $text = '"' . join('","',@flds) . '"';
        print "$text\n";
    }
}

Eu deliberadamente introduzi três erros nesse programa para que os script kiddies (gente de pouco juízo, e normalmente de pouca idade também, que executam programas-exemplo desse tipo cegamente sem nem entender os detalhes técnicos nem se preocupar com as consequências) tenham dificuldades em usá-los para fins maléficos. O primeiro erro é bem óbvio: eu não coloquei a URL correta do site e esse programa só funciona especificamente com esse site. Os outros não são imediatamente aparentes e requerem um certo conhecimento técnico para descobrir.

Executei esse programa e em pouco mais de três horas obtive todo o cadastro de 41984 usuários da instituição – uma média de 3,5 registros por segundo e o tamanho total ficou (em formato CSV) com módicos 9,2MB. É pequeníssimo comparado com os 12 milhões do ENEM que vazaram há algumas semanas atrás, mas já dá uma idéia de como nossos dados pessoais são fáceis de garimpar. Aliás, um aviso aos curiosos: não me peçam esses dados, eu não vou disponibilizá-los.

É fácil para aqueles que nasceram antes da era da Internet esquecer que esse site pode ser visto de qualquer lugar do mundo. Um malfeitor na China, ou no Afeganistão, podem seguir esses mesmos passos e descobrir nossos dados pessoais aqui no Brasil. Ora, e pra que isso lhes seria útil, o leitor poderia perguntar? Para enviar spam ou facilitar golpes e estelionatos, por exemplo, tais como os famosos 419 scams nigerianos.

Como vocês perceberam, eu mascarei o nome e os logotipos da instituição e cortei os cabeçalhos e rodapés. Mas se vocês tivessem visto o site na íntegra, teriam percebido que não há sequer um link de "termos e condições de serviço", nem "política de privacidade" ou "política de retenção de dados". O usuário fornece seu cadastro sem nenhuma explicação de como eles serão usados nem dos riscos envolvidos. Não há nenhuma garantia nem multa caso se comprove que vazaram ou poderiam vazar.

Eu não conheço os diretores de TI dessa instituição (que podem nem mais serem os mesmos que conceberam e implementaram esse sistema), mas não ficaria nem um pouco surpreso se eles me dissessem que não tinham conhecimento que esse formulário estava acessível através da Internet global, ou que desconheciam o fato de ser possível realizar esse tipo de enumeração, ou que os profissionais de informática que implementaram o site não os haviam informado desses riscos. Também não me surpreenderia caso descobrisse que eles nem sequer contemplaram esses riscos.

Em outras situações semelhantes, já ouvi coisas como, por exemplo, uma profissional de TI de um banco me dizer que não há problema nenhum disso porque os dados pessoais podem ser obtidos "em outros lugares por aí". Outra ainda certa vez me afirmou categoricamente que nossos dados pessoais são públicos. Sob certos ângulos jurídicos, disseram-me alguns advogados, elas podem até estar certas, mas parece haver divergências. Se não há problema nenhum nem nada do que se envergonhar, por que eles costumam achar ruim quando a gente chama a atenção pra esses coisas?

Aliás, que fique bem claro: eu não tenho nada contra essa instituição em particular. Só os usei como exemplo porque sou cliente deles e outro dia desses estive por lá e precisei usar a WiFi. Com efeito, posteriormente estive também em um de seus principais concorrentes e percebi que o portal cativo da rede Wi-Fi de cortesia deles também tinha um sistema de cadastro que permite enumeração de forma semelhante ao que descrevi aqui. Esse tipo de vulnerabilidade a enumeração é banal – se você sair por aí pela Internet afora, vai achar muitos casos parecidos. Eu mesmo já vi vários; escolhi esse apenas por ser particularmente fácil de explicar.

Também é importante frisar que essa abordagem não burla nenhuma restrição que o site tenha tentado impor. Não há nada que nós tenhamos feito que o site ou o navegador já não tivessem disponibilizado. O programinha acima não requer nenhum segredo nem nenhum princípio exclusivo ou particularmente obscuro; ele tão somente agiliza algo que pode ser feito manualmente. De fato, o alarmente nesse caso é exatamente o fato de não haver praticamente restrição nenhuma.

Como eu já falei, nada disso é grande novidade para a maioria dos profissionais de segurança de sistemas de informação – mas é surpreendentemente desconhecido por muita gente que trabalha em outras áreas da informática, especialmente dos estudantes e novatos na área; e, às vezes, até de veteranos. E certamente é algo ainda pouco discutido fora do âmbito de informática. Tenho visto alguns juristas e jornalistas tocando no assunto, mas muitas vezes a falta de embasamento técnico em informática nubla-lhes as percepções e conclusões. Já o grande público segue provendo seus dados pessoais a quem lhes pedir com a aquela fé de que nada dará errado que só a ingenuidade traz.

Possíveis Melhorias

Há várias maneiras pelas quais esse site poderia ser modificado de forma a limitar o potencial vazamento de dados pessoais:

  • Uma medida muito simples seria configurar o servidor web para fazer com que a página de cadastro só seja acessível a partir da rede Wi-Fi da instituição e não da Internet como um todo. Provavelmente é uma das primeiras coisas que eu imagino que eles vão fazer quando lerem esse meu artigo – é simplíssimo de fazer e não requer alterações na aplicação web em si. Por outro lado, é apenas um paliativo tipo "melhora mas não resolve": qualquer um dentro da rede deles pode fazer a enumeração. Por outro lado, é melhor do que nada.
  • Uma idéia ainda melhor seria alterar a aplicação para não permitir a consulta pelo número sequencial previsível, efetuando a busca diretamente pelo número do CPF. (Aparentemente, a razão pela qual eles não fizeram isso é porque queriam ter várias pessoas associadas ao mesmo CPF.) Isso também não resolve absolutamente o problema, mas torna a enumeração muito mais custosa – você precisaria chutar aleatoriamente uns 10000 números de CPF, em média, para acertar um.
  • Outra idéia que não resolve absolutamente mas aumenta o custo da enumeração seria limitar a quantidade de consultas a, digamos, uma a cada dez segundos. Isso faria a enumeração completa durar umas cem horas, ao invés de meras três horas. Combinada com as medidas anteriores, isso diminuiria consideravelmente a quantidade de gente que teria a tenacidade de ficar tentando.
  • Caso seja imprescindível manter o recurso de ter vários usuários associados a um mesmo CPF, o identificador deveria ser mudado para ao invés de ser sequencial previsível, tornar-se esparso e aleatório. Por exemplo, um número aleatório de 64 bits já resolveria bem o problema, tornando a probabilidade de se acertar os números por chute muitíssimo menor do que um em um milhão. Isso tornaria o custo da enumeração absolutamente proibitivo.

Isso, naturalmente, assumindo-se que não seja viável mexer nas premissas básicas do sistema: não ter senha nem CAPTCHA (seriam inconveniênicas consideráveis para os usuários), ou mesmo não ter mais esse cadastro em absoluto. Enfim, soluções existem e não são nem difíceis, nem caras, de implementar – basta querer.

Termino este artigo com uma sugestão para nossos legisladores: por que vocês não tornam os nomes, endereços e números de inscrição cadastrais em meios digitais algo tão passível de direitos autorais quanto uma música, um filme ou um programa de computador? Disponibilizar um MP3 em um site sem permissão do artista é pirataria, mas disponibilizar nossos dados pessoais – um dado digital como qualquer outro – não é. Curioso, não? Se equiparássemos nossos dados pessoais a qualquer outra obra intelectual, quem quisesse usá-los teria de coletar nossa permissão e quem sabe até poderíamos acioná-los juridicamente caso violem esses termos ou se usassem nossos dados sem nossa permissão explícita. Aí, sim, teríamos um incentivo real para que as instituições cuidassem melhor de nossos dados pessoais.

Parte anterior

Próxima parte

Comentários
Aceita-se formatação à la TWiki. HTML e scripts são filtrados. Máximo 15KiB.

 
Enviando... por favor aguarde...
Comentário enviado com suceso -- obrigado.
Ele aparecerá quando os moderadores o aprovarem.
Houve uma falha no envio do formulário!
Deixei uma nota para os admins verificarem o problema.
Perdoe-nos o transtorno. Por favor tente novamente mais tarde.
Bruno Salvatore Drago | 2010-09-30 21:10:15 | permalink | topo

Olá MArco,

Na impossibilidade de estar presente em SP, sugiro que acompanhe por video:

http://www.seminarioprivacidade.cgi.br/

Me surpreendi positivamente. Começou hoje (30/09) e vai até amanha (1/10)

Abs, B.

Marco Carnut | 2010-09-28 16:17:49 | permalink | topo

Roger,

Por favor dê uma olhada em:

http://blog.tempest.com.br/aldo-albuquerque/vagas-aberto-tempest-security-intelligen.html

-K.

Paulo Roger | 2010-09-27 19:00:26 | permalink | topo

Realmente, mais um exemplo de falta de segurança. Fico muito interessado no trabalho de vocês. Como faço para entrar para a TEMPEST? Existe algum conhecimento mínimo exigido?