Ruby программист
0,0
рейтинг
29 января 2013 в 15:34

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


Очередная уязвимость(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), то сейчас с этим будут проблемы.
Перевод: Michael Koziarski
Иван @Helsus
карма
39,0
рейтинг 0,0
Ruby программист
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (13)

  • 0
    Что-то я не понимаю, разве об этой уязвимости на хабре уже не писали (недели две назад)?

    Не оно же? Или это новая уязвимость?
    habrahabr.ru/post/165343/
    • +1
      Вроде бы новая.
      • +1
        Просто меня смущает схожесть:

        << Чуть подробнее. Не так давно многие обратили внимание на то что рельсы по умолчанию принимают не только x-www-form-urlencoded параметры, но и XML/JSON. А XML внутри себя принимает также такой тип данных как YAML

        << Rails поддерживают несколько бэкэндов для парсинга JSON. Один из бэкэндов включает в себя трансформирование JSON в YAML через YAML Parser

        Неужели они в rails дважды ошиблись, а после первого патча ошибка осталась?
        • 0
          Что значит «осталась»? Даже тут написано, что последние версии rails уязвимости не подвержены.
          • 0
            А что насчет ветки 3.0.x?

            А также этого:
            << Например, если у вас json с одинарными кавычками(что не позволено спецификацией JSON), то сейчас с этим будут проблемы.
            • 0
              Ветка 3.0.х пусть обновляется %) И я не знаю, откуда автор взял про «будут проблемы», прочитайте внимательно сами тот комменарий.
  • +3
    Странно, что опять не Chikey ))
    • +3
      Да, но Егор был занят в этот раз «местью» разработчику Spree, ему не до Rails секурности было :))
      • 0
        ну, уязвимость в старых версиях, скучно ) другое дело люди начали щас ломать rubygems/travis etc

        мы с ryan помирились — вторую уязвимость я уже по почте ему сообщил )
  • 0
    2.3.x, 3.0.x не очень популярные версии, как мне кажется. Хотя статистики по версиям найти не удалось.
    • 0
      а вы сделаете bundle update после этой новости?
      • 0
        Не уловил связь.
        • 0
          ок.
          >> 2.3.x, 3.0.x
          вряд ли являются не популярными версиями.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.