Backdoor no Yahoo permite validar se e-mail é válido.

Os spamers sempre buscam validar as contas de e-mails para melhorar suas listas, vender ou trocar com outros spammers.

A tela de autenticação do Yahoo (https://login.yahoo.com/config/mail?&.intl=br) possui alguns controles de segurança que evitam identificar se um e-mail é ativo através de tentativa e erro no processo de autenticação:

  • Exibe a mesma mensagem de erro em qualquer situação, se o e-mail, a senha ou ambos estão inválidos;
  • Após várias tentativas de autenticação, o Yahho exibe uma figura (capitcha) para validar os dados.

Porém, existe um página disponibilizada pelo Yahoo que realiza a autenticação de usuários, mas não implementa os mesmos controles de segurança da página on-line.

Você pode usar a URL abaixo para verificar se um e-mail está cadastrado no Yahoo.

http://69.147.112.199/config/isp_verify_user?l=maria@yahoo.com&p=333333

O parâmetro l é o e-mail do usuário (login) e o parâmetro p é a senha. A página irá responder exatamente o que está errado. Se o usuário não existe, a página irá responder:

ERROR:102:Invalid Login

Se o login estiver ativo e a senha estiver errada, a página irá responder:

ERROR:101:Invalid Password

Você pode verificar se seu e-mail tem conta ativa no Yahoo alterando o parâmetro l e verificando a resposta.

Como a página não implementa nenhum controle para evitar robôs, um spammer pode criar um script ou programa com um banco de dados de e-mail ou nomes conhecidos para verificar se os e-mails estão ativos no Yahoo. Ou até mesmo tentar advinhar a senha através de ataques de dicionário e/ou de força bruta.

Este exemplo reforça a recomendação de sempre aplicar as boas práticas de desenvolvimento seguro independentemente se a ameaça é explicita ou não. Neste caso, a página de validação de serviço deveria implementar a recomendação de não revelar detalhes em caso de falha na autenticação e ter algum mecanismo contra ataques de dicionário ou força bruta. Estes controles podem ser implementados facilmente através de um Web Application Firewall.

Referência: http://tacticalwebappsec.blogspot.com/2009/09/distributed-brute-force-attacks-against.html

Publicado em Segurança em Aplicações | 1 comentário

Gmail está vulnerável a ataque de XSRF

O Gmail possui uma vulnerabilidade que permite explorar ataque de XSRF na sua página de troca de senha.

O que é XSRF?

XSRF é a sigla para Cross Site Request Forgery. Esta técnica pode ser usada de várias formas e a vítima tem que estar autenticada na aplicação vulnerável.

Quando um usuário se autentica em uma aplicação web existe uma relação de confiança entre o usuário e a aplicação durante o período de tempo em que a sessão autenticada permanece ativa. Neste período a aplicação não solicita uma nova autenticação (usuário e senha) a cada função que o usuário acessa da aplicação. Existe aplicações que solicitam novamente a senha em algumas funções críticas, como é o caso de pagamentos de contas em aplicações de home banking. Mas a maioria das aplicações web autenticam o usuário apenas uma vez e confiam nesta autenticação até o fechamento do navegador ou a sessão cair por tempo de inatividade.

Para fazer um ataque de XSRF, o atacante tem que conhecer a aplicação alvo e identificar a url ou o formulário que realiza a função crítica, como por exemplo, aprovação de processo, enviar mensagem, confirmar uma pendencia importante, etc. O atacante estuda a função crítica, identifica o enderço das páginas e os parâmetros que são enviados. De posse destas informações, o atacante monta um link ou um código HTML que irá executar a função crítica estudada. Por exemplo, pode existir uma aplicação financeira que quando um usuário legítimo aprova um pagamento através de um botão, o botão na verdade ativa o endereço http://aplicacao/aprova_pagamento?id_conta=10.

Conhecendo o endereço, os parâmetros e a forma com uma função crítica é chamada, o atacante tem que fazer a vítima clicar no link enquanto ela está autenticada na aplicação. Existem várias formas de se conseguir isso:

* Gravar um script ou html numa aplicação vulnerável a Cross Site Scripting. Quando o usuário autenticado acessar o script ou html gravado irá processar e executar a função da aplicação sem saber;
* Se aplicação permitir a edição de figuras, o atacante poderá incluir uma figura que execute uma url;
* Colocar um link em outra aplicação e solicitar para um usuário autenticado clicar no link ou acessar uma página que tenha o script ou o link montado especialmente para o XSRF.

Quando o usuário estiver autenticado na aplicação e clicar em um link ou acessar um página que tenha o script ou html com ataque de XSRF irá executar a função até mesmo sem saber. No nosso exemplo a vítima poderá aprovar um pagamento sem intenção através da chamada a url http://aplicacao/aprova_pagamento?id_conta=10.

Qual o perigo?

Existe um risco muito grande principalmente em aplicações que usam o conceito web 2.0. Essas aplicações possuem conteúdo montado por usuários, compartilhamento de informações e grande interatividade com usuários. Aplicações corporativas com funções críticas também são alvos deste tipo de ataque.

Como se proteger?

Se proteger deste tipo de ataque não é tarefa fácil.

A aplicação pode usar controles de token temporários que ajudam a evitar este tipo de ataque. O token temporário seria gerado em uma página anterior e seria validado na página crítica. O token dificulta, mas não evita 100%. O atacante teria que automatizar o ataque desde o momento da geração do token, o que dificulta bastante, mas não é garatia total.

Outro controle a ser aplicado é o uso de captcha em funções críticas. Captcha são aquelas figuras que temos que ler e digitar para confirmar alguma página. O captcha além de dificultar o usa da página por robôs e programas, dificultaria o ataque de XSRF. Mais uma vez apenas dificulta, pois o atacante pode usar recursos de OCR para ler o captcha.

A redigitação da senha também pode ser usado para evitar o XSRF. Além de proteger a aplicação por descuito do usuário que deixa a sessão aberta e se ausenta da frente do computador, a redigitação da senha evita o XSRF pois não é possível automatizar o ataque sem conhecer a senha do usuário. O ponto negativo é que se existir a redigitação da senha em muitas funções de uma aplicação, isto pode torná-lo pouco funcional e produtiva para o usuário final.

O Caso do Gmail

No caso do Gmail, qualquer usuário que esteja autenticado e executar a url abaixo irá trocar a senha sem passar por captcha ou controle de token.

https://www.google.com/accounts/UpdatePasswd?service=mail&hl=en&group1=OldPasswd&OldPasswd=senha_antiga&Passwd=123&PasswdAgain=123&p=&save=Save

O atacante poderia montar uma página autenticacao_falsa.html que solicite a senha antiga e troque a senha do Gmail da vítima. Como o Gmail não implemente nenhum token ou outro tipo de controle entre páginas, se ele estiver autenticado e abrir página_falsa, a senha poderá ser trocada indevidamente.

Referência: http://seclists.org/fulldisclosure/2009/Mar/0029.html

Ricardo Kiyoshi Batori

Publicado em Segurança em Aplicações | 1 comentário

Bloqueio de dispositivos removíveis (USB)

Fazendo uma rápida busca na internet sobre este assunto é possível ver que não existem grandes saídas para efetuar o bloqueio de dispositivos removíveis. No Windows Vista, é possível verificar que já existe de forma nativa, uma GPO de restrição a discos removíveis. No Win2003 Server, existe uma GPO para bloquear unidades A, B, C e D, porém, não funcionariam no caso de um pen-drive inserido numa máquina. Se fizessemos o bloqueio total destas unidades, dispositivos como teclados e mouses USB poderiam não funcionariam, o que é inviável ultimamente.

Efetuando testes, foi possível alterar o código-fonte destas GPO´s, afim de, certa forma “expandir” o número de unidades a serem bloqueadas. É necessário acessar o arquivo “system.adm“, que fica na pasta C:\Windows\inf do AD. Procure o seguinte trecho do código.

Abaixo, o código-fonte modificado:

NoDrives
#if version >= 4
SUPPORTED !!SUPPORTED_Win2k
#endif

EXPLAIN !!NoDrives_Help
PART !!NoDrivesDropdown DROPDOWNLIST NOSORT REQUIRED
VALUENAME “NoDrives”
ITEMLIST
NAME !!ABOnly VALUE NUMERIC 3
NAME !!COnly VALUE NUMERIC 4
NAME !!DOnly VALUE NUMERIC 8
NAME !!ABConly VALUE NUMERIC 7
NAME !!ABCDOnly VALUE NUMERIC 67108851
NAME !!ALLDrives VALUE NUMERIC 67108863 DEFAULT
; low 26 bits on (1 bit per drive)
NAME !!RestNoDrives VALUE NUMERIC 0
END ITEMLIST
END PART
END POLICY

POLICY !!NoViewOnDrive
#if version >= 4
SUPPORTED !!SUPPORTED_Win2k
#endif

EXPLAIN !!NoViewOnDrive_Help
PART !!NoDrivesDropdown DROPDOWNLIST NOSORT REQUIRED
VALUENAME “NoViewOnDrive”
ITEMLIST
NAME !!ABOnly VALUE NUMERIC 3
NAME !!COnly VALUE NUMERIC 4
NAME !!DOnly VALUE NUMERIC 8
NAME !!ABConly VALUE NUMERIC 7
NAME !!ABCDOnly VALUE NUMERIC 67108851
NAME !!ALLDrives VALUE NUMERIC 67108863 DEFAULT
; low 26 bits on (1 bit per drive)
NAME !!RestNoDrives VALUE NUMERIC 0
END ITEMLIST
END PART
END POLICY

Pegando como exemplo a linha NAME !!ABCDOnly VALUE NUMERIC 67108851 .
67108851″ significa o bloqueio de todas as unidades necessárias . É possível ir alterando este número. Cada unidade equivale a um número. Por exemplo, a unidade “A:\” equivale ao número 1, a unidade “B:\” equivale ao número 2, a unidade “C:\” equivale ao número 4, e assim por diante, sempre dobrando o número da unidade anterior. O número 67108851 significa a soma de todas as unidades de discos de A a Z, menos “12” (C:\=4 + D:\8).

É possível tambem alterar a string das duas GPO´s utilizadas, para melhor visualização na seguinte linha:
[strings]
ABCDOnly=”Restringir todas as unidades, menos C:\ e D:\”

Depois da edição, salve o arquivo.

Lembrando que é necessário depois ativar as GPO´s:

“Hide these specified drives im My Computer”;
“Prevent access to drives from My Computer”.

Publicado em Segurança em Ambiente de Rede | 3 comentários