Pull to refresh

Критическая уязвимость в Rails. Опять

Reading time1 min
Views12K
Original author: Michael Koziarski

Очередная уязвимость(CVE-2013-0333) в Rails позволяет злоумышленникам минуя аутентификацию запускать произвольный код.

Уязвимые версии: 2.3.x, 3.0.x
Безопасные: 3.1.x, 3.2.x или приложения использующие yajl-ruby
Пофикшено в версиях: 3.0.20, 2.3.16

Сейчас-то что случилось?


3.0 и 2.3 Rails поддерживают несколько бэкэндов для парсинга JSON. Один из бэкэндов включает в себя трансформирование JSON в YAML через YAML Parser. Злоумышленник может выполнить произвольный код, если передаст специальный запрос c закодированным YAML(вспомним CVE-2013-0156).

Костыли


Если нет возможности обновить версию Rails, можно использовать JSONGem как бэкэнд, поместив следующий код в config/initializers/json.rb:
ActiveSupport::JSON.backend = "JSONGem"
Если вы до сих пор используете Ruby 1.8, то не забудьте, что необходимо установить gem json или json_pure. В 1.9 этого уже не требуется.

P.S.


Правда, в комментариях к записи в блоге Rails уже сообщают о некоторых проблемах. Например, если у вас json с одинарными кавычками(что не позволено спецификацией JSON), то сейчас с этим будут проблемы.
Tags:
Hubs:
+26
Comments13

Articles