Спустя всего две недели с момента прошлой (https://www.opennet.ru/opennews/art.shtml?num=35792) опасной уязвимости представлено корректирующее обновление Ruby on Rails 3.0.20 и 2.3.16 (http://weblog.rubyonrails.org/2013/1/28/Rails-3-0-20-and-2-3.../) с устранением очередной критической уязвимости (https://groups.google.com/forum/?fromgroups=#!topic/rubyonra...) (CVE-2013-0333), которая может привести к выполнению кода на сервере, обходу системы аутентификации и выполнению SQL-запроса. Проблема найдена в коде парсера JSON и может быть эксплуатирована при обработке специально сформированного JSON-блока c YAML-вставками. Для эксплуатации достаточно отправить любому приложению специальный HTTP POST-запрос с типом "text/json". Интересно, что уязвимость имеет единые корни с прошлой (https://www.opennet.ru/opennews/art.shtml?num=35792) критической проблемой, для которой был устранён лишь частный случай проявления уязвимости. Оказалось, что кроме XML блоков YAML-вставки аналогичным образом могут быть обработаны и в JSON-контенте. ActiveSupport::JSON по умолчанию используется бэкенд Yaml, который выполняет разбор через трансляцию JSON в YAML и выполнение YAML.load. При разборе строк используется метод StringScanner, заменяющий элементы JSON на эквивалентные блоки YAML, но не выполняющий полный парсинг и проверку конструкций JSON, что позволяет сформировать произвольные блоки YAML, в том числе передать и выполнить объекты с Ruby-кодом.
Всем пользователям Ruby on Rails рекомендуется незамедлительно установить обновление, так как в сети уже опубликован (http://ronin-ruby.github.com/blog/2013/01/28/new-rails-poc.html) рабочий прототип эксплоита (https://github.com/rapid7/metasploit-framework/blob/master/m...). Проблема проявляется в ветках 2.3.x и 3.0.x. В качестве обходного пути защиты можно переключиться на бэкенд JSONGem, указав настройках инициализации приложения ActiveSupport::JSON.backend = "JSONGem".
URL: http://weblog.rubyonrails.org/2013/1/28/Rails-3-0-20-and-2-3.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=35954