|
Negação de serviço em aplicações Web |
|
|
-
Criado em sexta, 13 janeiro 2012 14:56
Possível negação de serviço em multiplas implementações de linguagens de programação utilizadas em aplicações Web.
| Sistemas Operativos Implicados: |
MS Windows, Linux, Unix |
| Aplicações Implicadas: |
Java, JRuby, PHP, Python, Rubinius, Ruby, Apache Geronimo, Apache Tomcat, Oracle Glassfish, Jetty, Plone, Rack, V8 Javascript Engine, .NET |
I. Descrição
Uma variedade de linguagens de programação sofrem de uma negação de serviço da condição (DoS) contra a funções de armazenamento de pares chave / valor de hash em estruturas de dados, a condição pode ser aproveitado através da exploração de colisões previsível nos algoritmos de hash subjacente.
A questão encontra a exposição especial em aplicações web server e / ou frameworks. Em particular, a falta de limites suficientes para o número de parâmetros em pedidos POST em conjunto com as propriedades de colisão previsível nas funções de hashing das línguas subjacente pode tornar as aplicações web vulneráveis à condição DoS. O atacante, usando solicitações HTTP especialmente criadas, pode levar a um 100% de uso da CPU que pode durar várias horas, dependendo da aplicação orientada e desempenho do servidor, o efeito de amplificação é considerável e requer pouca banda e tempo do lado atacante.
A condição para colisões previsíveis nas funções de hash tem sido relatada para a implementações de linguagens seguintes: Java, JRuby, PHP, Python, Rubinius, Ruby. No caso da linguagem Ruby, o ramo 1.9.x não é afetado pela condição de colisão previsível uma vez que esta versão inclui uma randomização da função hash.
A vulnerabilidade descrita neste boletim é praticamente idêntico ao reportado em 2003 e descrito na Denial of Service via papel Ataques Complexidade algorítmica que afetou a linguagem Perl.
A assessoria próprios repórteres podem ser encontradas em http://www.nruns.com/_downloads/advisory28122011.pdf
Várias linguagens de programação estão vulneráveis a ataques de negação de serviço (DoS) contra a funções de armazenamento de pares chave/valor em tabelas hash. As aplicações de web server e/ou frameworks estão em particular exposição. O atacante, utilizando pedidos HTTP especialmente criados, pode levar a um uso total do CPU que pode durar várias horas, dependendo da aplicação e desempenho do servidor, o efeito de amplificação é considerável e requer pouca largura de banda e tempo do lado atacante.
Versões afectadas:
Java, todas as versões
JRuby
PHP
Python, todas as versões
Rubinius, todas as versões
Ruby
Apache Geronimo, todas as versões
Apache Tomcat
Oracle Glassfish
Jetty, todas as versões
Plone, todas as versões
Rack
V8 JavaScript Engine, todas as versões
.NET 1.1 SP1, 2.0 SP2, 3.5 SP1, 3.5.1, 4.0
Versões corrigidas:
Java, N/A
JRuby >= 1.6.5.1
PHP >= 5.3.9, >= 5.4.0RC4
Python, N/A
Rubinius, N/A
Ruby >= 1.8.7-p357, 1.9.x
Apache Geronimo, N/A
Apache Tomcat >= 5.5.35, >= 6.0.35, >= 7.0.23
Oracle Glassfish, N/A (Oracle reports that the issue is fixed in the main codeline and scheduled for a future CPU)
Jetty, N/A
Plone, N/A
Rack >= 1.4.0, >= 1.3.6, >= 1.2.5, >= 1.1.3
V8 JavaScript Engine, N/A
II. Solução
Actualizar as aplicações/frameworks para uma versão não afectada.
A Microsoft lançou uma actualização crítica (ms11-100) para várias versões da .NET Framework.
III. Referências
CVE: CVE-2011-5034 (Apache Geronimo), CVE-2011-5035 (Oracle Glassfish), CVE-2011-4461 (Jetty), CVE-2011-4838 (JRuby), CVE-2011-4885 (PHP), CVE-2011-4462 (Plone), CVE-2011-5036 (Rack), CVE-2011-4815 (Ruby), CVE-2011-4858 (Apache Tomcat), CVE-2011-5037 (V8 JavaScript Engine)
http://www.ocert.org/advisories/ocert-2011-003.html
http://www.nruns.com/_downloads/advisory28122011.pdf
http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003.pdf
http://svn.php.net/viewvc?view=revision&revision=321003 (instável, não final)
http://svn.php.net/viewvc?view=revision&revision=321040 (instável, não final)
https://gist.github.com/52bbc6b9cc19ce330829
http://technet.microsoft.com/en-us/security/bulletin/ms11-100