2008-09-05
Existe uma vulnerabilidade DoS na biblioteca REXML incluída na biblioteca standard do Ruby. Uma técnica de ataque conhecida como “XML entity explosion” poderá ser utilizada para terminar remotamente qualquer aplicação que faça parse de XML com a biblioteca REXML.
A maioria das aplicações rails estarão vulneráveis, uma vez que o Rails faz parse de XML com REXML, por omissão.
Impacto
Um ataque deste tipo pode ser repetido pedindo uma análise de um documento XML contendo entidades aninhadas recursivas pela biblioteca REXML. Veja-se o exemplo:
Versões vulneráveis
Versões 1.8
- 1.8.6-p287 e todas as anteriores
- 1.8.7-p72 e todas as anteriores
Versões 1.9
- Todas
Solução
Faça download do seguinte patch para corrigir o problema.
Depois adicione a linha na aplicação para carregar rexml-expansion-fix.rb antes de utilizar REXML.
para aplicações em Rails, copie o ficheiro rexml-expansion-fix.rb para a directoria RAILS_ROOT/lib/, por exemplo, e adicione a linha seguinte no ficheiro config/environment.rb.
Se a sua aplicação utiliza Rails 2.1 ou posterior, basta copiar o ficheiro rexml-expansion-fix.rb para a directoria RAILS_ROOT/config/initializers para que este seja automaticamente inicializado.
Por omissão, a expansão de entidades XML é de 10000. Poderá alterar este valor mudando REXML::Document.entity_expansion_limit.
Esta correcção estará disponível também como uma gema e utilizada por versões futuras de Rails, mas aconselham-se medidas de correcção imediatas.
Créditos
Créditos para Luka Treiber and Mitja Kolsek da ACROS Security por informar as Equipas de Segurança de Ruby e Ruby on Rails.
Créditos para Michael Koziarski da Rails Core Team por criar a correcção para a vulnerabilidade