2011/12/30

Vulnerabilidade Coloca em Risco Servidores na Net


Para um atacante interessado em "mandar abaixo" um servidor de um site na Internet, as opções mais comuns são: arranjar um número elevado de máquinas que possam fazer pedidos simultâneos e contínuos, que saturem por completo as capacidades do(s) servidor(es); ou... encontrar uma vulnerabilidade que lhes permita fazer o mesmo de forma mais eficiente.

E é efectivamente uma vulnerabilidade bastante simples que foi agora descoberta e que coloca em risco grande parte dos servidores na Internet, já que afecta algumas das linguagens mais utilizadas na internet: do PHP e Ruby, ao Java e Javascript V8, e também o ASP .Net.

Esta vulnerabilidade torna-se especialmente perigosa, pois permite que qualquer pessoa com um mínimo de conhecimentos técnicos possa rapidamente "entupir" um qualquer servidor, usando apenas um único computador e uma simples ligação caseira à internet.


Na sua origem, está um processo simples conhecido como hashing, e que à partida pareceria insuspeito; um método que estas linguagens utilizam para inúmeras funções: incluindo a gestão e diferenciação de parâmetros que lhes chegam da internet. Normalmente, o caso em que dois parametros diferentes darão uma hash igual é praticamente nulo, e quanto tais conflitos acontecem são tratados de forma especial que obriga a processamento extra.

No entanto, quando um atacante envia um pedido formulado especificamente para que todos os parametros enviados tenham a mesma hash, e enviem dezenas de milhares de parametros, o servidor rapidamente fica completamente "atascado" com tal tarefa, ocupando todos os recursos do CPU durante bastante tempo - e como tal, impossibilitando o seu normal funcionamento.


Uma das linguagens que está imune a este tipo de ataques é o PERL, que já desde 2003 implementa um algoritmo de geração das tais hashes que vai variando de forma aleatória, e que como tal impossibilita que um atacante possa preparar um pedido que causasse esta situação.

Sem dúvida que os afectados estarão a preparar uma solução a toda a velocidade (alguns optarão por uma solução mais imediata e de emergência, de simplesmente limitar o número de parametros que aceitam - e garantindo que mesmo em caso de conflitos de hashes repetidas, nunca se aceitará uma quantidade que ponha em risco o funcionamento normal do servidor.

[via Computerworld]

2 comentários:

  1. A conferência 28C3 trouxe à luz coisas interessantes. A MS vai actualizar os sistemas Windows rapidamente. A ruby 1.9.x já o fez a PHP pelos vistos estava reticente, os restantes não faço a mínima ideia

    ResponderEliminar
  2. Há versões de algumas linguagens referenciadas que sempre foram imunes. E outras que foram já actualizadas. O Perl não é aqui o menino bonito.

    Convém referir isso para não induzir "desconhecedores" em erro.

    ResponderEliminar