O pesquisador de segurança Felipe Jordão Silva informou ao CISO Advisor, na semana passada, ter comunicado a uma grande universidade pública brasileira a existência de graves vulnerabilidades em ativos expostos na Internet, entre os quais uma no mecanismo de autenticação do LDAP. Felipe contou que fez testes com um script próprio em Python e utilizou algumas técnicas direcionadas como Injeção LDAP, manipulação de caracteres Unicode, tentativas de bypass de autenticação e análise de mensagens de erro.
Leia também
Universidades pagaram US$ 1,3 mi em resgate no ano passado
EUA: escolas compram equipamentos para examinar celulares
Em várias das vulnerabilidades segundo o pesquisador, o sistema retornava mensagens de erro detalhadas, expondo informações sobre a implementação no backend, e demonstrou comportamento anômalo quando testado com caracteres especiais LDAP – informações passadas em uma URL HTTP sem criptografia. Basicamente, disse Felipe, havia vulnerabilidades permitindo a enumeração de usuários, bypass de autenticação e extração de dados do diretório LDAP, por exemplo. Felipe contou que conseguiu informar o problema à Universidade.
Para testar as falhas, ele desenvolveu um script após identificar endereços potencialmente vulneráveis a injeção LDAP: “O sistema parecia vulnerável a ataques de injeção LDAP. Isso ficou evidente quando testamos payloads como “)(uid=))(|(uid=” e “admin)(password=))(|(password=*”. A resposta do servidor mostrou mensagens de erro LDAP, indicando que a entrada do usuário não estava sendo devidamente sanitizada antes de ser inserida na consulta LDAP. Essa vulnerabilidade pode permitir que um atacante manipule a lógica da consulta LDAP, potencialmente obtendo acesso não autorizado ou extraindo informações sensíveis do diretório”, detalhou Felipe.
Outro problema, segundo ele, é que o sistema está revelando informações detalhadas sobre erros de autenticação, o que pode auxiliar um atacante a direcionar melhor seus métodos de intrusão: “Outro, ainda, é a versão do sistema exposta, uma vez que o rodapé da página de login revela a versão exata do sistema. Ele está utilizando HTTP em vez de HTTPS em método post, o que indica que está passando mensagens em texto aberto”.
Outra potencial vulnerabilidade descoberta pelo pesquisador foi SQL Injection: “Fiz um script e testei com o payload “‘ OR ‘1’=’1′ –“, e embora não tenha resultado em um acesso bem-sucedido, a resposta do servidor não descarta completamente a possibilidade de vulnerabilidade a SQL Injection. Seria necessário realizar testes mais aprofundados para confirmar ou descartar esta vulnerabilidade. O que optei por não fazer, pois não tenho autorização”.
A recomendação imediata de Felipe é implementar validação e sanitização rigorosa de todas as entradas do usuário para prevenir injeções LDAP e SQL: “E mais: usar mensagens de erro genéricas que não revelem detalhes específicos sobre falhas de autenticação; ocultar informações de versão do sistema em ambientes de produção; implementar medidas contra ataques de força bruta, como bloqueio temporário de conta após múltiplas tentativas que não deram certo e implementação de métodos mais atuais de autenticação como OAuth 2.0 ou SAML, para melhorar a segurança e a experiência do usuário”.