Security Exploit: ataque DoS contra servidores Ruby
Posted on October 25, 2006
Ontem no fim da tarde Zed Shaw – um dos colaboradores do livro “Repensando a Web com Rails”, e criador do excelente servidor Mongrel – postou uma correção URGENTE para todos que utilizam algum servidor HTTP em Ruby, como Mongrel.
Existe um problema de Denial of Service (DoS) facilmente explorável contra o cgi.rb. O ataque envolve enviar um corpo MIME multipart de HTTP mal formado.
Os autores da correção e que manobraram para que essa informação chegasse ao público o mais rápido possivel foram Jeremy Kemper e Jamis Buck.
A biblioteca CGI do Ruby (cgi.rb) tem um bug que permite qualquer um na Internet enviar uma única requisição HTTP para qualquer programa Ruby (não somente Mongrel) que utiliza parsing multipart com cgi.rb com um corpo MIME mal formado, causando o processo Ruby a atingir 99% de utilização da CPU em um loop infinito, matando-o.
O que acontece é que o final do limitador MIME às vezes é:
Em vez de:
E isso faz o cgi.rb entrar num loop infinito esperando por input que nunca chega. Isso é causado por qualquer sistema que lê diretamente do input stream que retorna "" em vez de EOF.
Quem é afetado
Atualmente, os seguintes servidores são afetados:
- Mongrel – lê diretamente do socket e receber "" em vez de EOF
- Litespeed – afetado mas tem um timeout interno que corta o processo
- CGI Standalone – impactado porque também lê de um input stream normal
Parece que o FCGInputStream de FCGI, WEBrick e mod_ruby não são vulneráveis porque ou eles lêem de um domain socket ou não usam cgi.rb normal.
A Correção
Qualquer um usando Mongrel pode pegar a correção IMEDIATAMENTE instalando a última versão de pré-lançamento 0.3.14:
—source=http://mongrel.rubyforge.org/releases
O pessoal de Win32 (Windows) e qualquer um que não possa realizar a atualização desse jeito pode tentar deste outro jeito:
gem install cgi_multipart_eof_fix --source=http://mongrel.rubyforge.org/releases- Editar o environment.rb e acrescentar:
require 'cgi_multipart_eof_fix' - Reiniciar seus servidores
O e-mail de Zed Shaw tem mais informações e canais de comunicação como o canal #rubyonrails, #rails-security e #ruby-lang no irb.freenode.org.
Zed ainda tem um patch anexado no e-mail original desse anúncio. Estudem sobre esse bug e apliquem as correções.
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)




