Falou-se muito da comunidade Ruby on Rails recentemente com a descoberta de vulnerabilidades de segurança e atualizações subsequentes que todo desenvolvedor Rails deve ficar sabendo.
Vulnerabilidade Cross-Site Scripting
O primeiro, e provavelmente mais severo, é uma vulnerabilidade Cross-Site Scripting (XSS) descoberta por Brian Mastenbrook e reportada no seu blog. Brian descreve como ele fez um cross-site scripting no Twitter e no Basecamp, produto da 37signals, ambas aplicações Ruby on Rails.
Minha atenção rapidamente se voltou para o Twitter, a única aplicação web que eu tinha aberta naquele momento. Alguns minutos mais tarde, eu tinha JavaScript de um parâmetro da URL passando através das rotinas de escape e rodando no body do twitter.com. Bingo! Cross-site scripting, aquilo com que os worms de Twitter são feitos. Mas isso era um problema específico do Twitter, ou ele afetava outros sites também?
Eu rapidamente peguei uma conta de testes no Basecamp que eu tinha há algum tempo. Basecamp, assim como o Twitter, usa Ruby on Rails para seu frontend web, então essa seria uma boa maneira de determinar se o problema era do Rails ou se era específico do Twitter. Como esperado, a mesma sequência malformada UTF-8 que funcionou no Twitter também funcionou no Basecamp.
Embora a probabilidade de um ataque desses não seja muito alta, o time Ruby on Rails foi rápido ao responder, verificando o problema e disponibilizando patches para as versões do Rails 2.0-2.3.
Os patches estão em um formato compatível com git-am e consistem de dois changesets. O código para limpar strings multibyte, e a introdução desse código aos helpers relevantes.
O time aconselha atualizar qualquer versão não suportada do Rails para uma versão recente, pois problemas no futuro poderão não ser corrigidos como esses são hoje. Deve-se notar que apenas as versões 2.2.x e 2.3.x são consideradas versões suportadas.
Fraqueza de Timing
O segundo problema descoberto era relacionado a Ataques de Timing. Esse ataque está relacionado a como o Rails verifica message digests no armazenamento do cookie e pode permitir um ataque para determinar quando uma assinatura forjada está parcialmente correta. Isso pode levar a ataques adicionais por esse processo, possivelmente forjando o digest.
Os times Rails admitiram que esse tipo de ataque é improvável, mas sugerem fazer um patch nos sistemas. Patches foram disponibilizados para suportar as versões do Rails 2.2.x e 2.3.x:
Os patches estão em um formato compatível com git-am e consistem de um único changeset que implementa
Coda Hale levou o crédito por descobrir a fraqueza de timing no Rails. Seu web site faz um bom trabalho ao explicar o que é uma fraqueza de timing e como elas são exploradas.
Ruby on Rails 2.3.4
Os desenvolvedores Rails que não quiserem aplicar patches nas suas aplicações podem conseguir os últimos patches na nova versão do Ruby on Rails, 2.3.4 que inclui bug fixes e atualizações para as duas vulnerabilidades de segurança mencionadas acima.
Consertos de Segurança
2.3.4 contém consertos para dois problemas de segurança que nos foram reportados. Para mais detalhes veja os anúncios de segurança:
Bug Fixes
Graças ao sucesso do BugMash tivemos em torno de 100 bug fixes como parte deste release. Particularmente destacamos o conserto de problemas de recarregamento relacionados a rack middleware e rails metals quando rodando em modo development.
Este release também inclui uma nova feature para adicionar dados iniciais num banco de dados de projeto com um simples comando rake db:seed
.