LINUX.ORG.RU

Обнаружена критическая уязвимость в Ruby on Rails

 , ,


0

2

В популярном фреймворке для создания веб-приложений Ruby on Rails обнаружена критическая уязвимость. Проблема выявлена в коде, обрабатывающем параметры HTTP-запроса. Из-за непродуманного автоматического приведения типов в обработчике формата XML у злоумышленника есть возможность обойти систему авторизации, выполнить внедрение SQL-кода, выполнить произвольный код и совершить DoS-атаку приложения.

Уязвимость устранена в следующих версиях: 3.2.11, 3.1.10, 3.0.19, 2.3.15. Во всех остальных версиях уязвимость присутствует, и всем пользователям рекомендовано обновиться. Также в сообщении об уязвимости указано несколько способов отключить проблемный обработчик.

Напоминаем, что совсем недавно (3-го января) в RoR была обнаружена другая критическая уязвимость, позволяющая выполнить внедрение SQL-кода.

Подробный анализ уязвимости

>>> Сообщение об обнаружении уязвимости (CVE-2013-0156)

★★★★★

Проверено: maxcom ()
Последнее исправление: tazhate (всего исправлений: 5)

Ответ на: комментарий от science

В 3.2.11 уязвимости как раз уже нет, так что не переживай.

provaton ★★★★★
() автор топика

заголовок желтит. кто не работает с хмл тому по барабану. большинство проектов на руби не юзают xml

punya ★★
()
Ответ на: комментарий от punya

кто не работает с хмл тому по барабану

Неправда. Проблема в том, что при дефолтной настройке рейлса можно сформировать запрос, приводящий к исполнению произвольного кода. И эта бага вообще не зависит от того, работает ли приложение с XML или не работает.

provaton ★★★★★
() автор топика
Ответ на: комментарий от harper

В нашей фирме нет даже запаха Ruby. Мы такое говно не используем.

У вас наверное стойкий, ни с чем не сравнимый запах студенческого кода на PHP.

Alve ★★★★★
()

Где тег «хомяков»?

Vit ★★★★★
()

Вот пусть теперь все рассказывают какое PHP решето :)

winddos ★★★
()

пишу для xsp под mono, таких проблем нет

StrongDollar
()

Решето. Пишите на Perl

fero ★★★★
()

Немножко добра в тред:

require "./love"

a_letter to: Augusta do
  twas(only: 16.months.ago) { The::Universe << You.to(OurFamily) }
  life.has :been => %w(i n c r e d i b l y).zip(*"wonderful!").ever_since
  We::Wish.we_could { experience these_moments: over & over }
  You.will always_be: Loved, and: Cherished
  until Infinity.ends do; Forever.(); end
end

Это most forked в гитхабе за вчера. https://github.com/jpfuentes2/a-letter-to-Augusta

science ★★☆
()

про это писали много
там не всё так плохо
если вкратце, то уязвимость при таком запросe
Model.find_by_something(:select => 'query')
а в коде бывает Model.find_by_something params[:something]
ты можешь передать гет параметрами массив /url?something[select]=query
но чтобы вот это сработало Model.find_by_something(:select => 'query')
ключ :select должен быть символом
а из гет параметров приходят хеши со строками
в итоге уязвимость удалось использовать только в какой-то из библиотек авторизации, не самой популярной
где параметры подставляются из сессии
и то сессия в рельсах подписана ключём
надо ещё и ключ подобрать, чтобы куку с сессией изменить
заголовок конечно громкий, а на деле пшик

Reaper ★★
()
Ответ на: комментарий от anonymous

Там хоть дыр нет.
PHP...дыр нет
дыр нет

Так толсто, что даже тонко.

anonymous
()
Ответ на: комментарий от Reaper

заголовок конечно громкий, а на деле пшик

С кукой это старая (от 3-го числа), а это новая.

k_andy ★★★
()

Так смешно читать комментарии тех, кто сравнивает язык с фреймворком :3

Lorchanin
()
Ответ на: комментарий от science

Традиции со времён perl.

#!/usr/bin/perl -w
use strict;

     my$f=           $[;my
   $ch=0;sub       l{length}
 sub r{join"",   reverse split
("",$_[$[])}sub ss{substr($_[0]
,$_[1],$_[2])}sub be{$_=$_[0];p
 (ss($_,$f,1));$f+=l()/2;$f%=l 
  ();$f++if$ch%2;$ch++}my$q=r
   ("\ntfgpfdfal,thg?bngbj".    
    "naxfcixz");$_=$q; $q=~
      tr/f[a-z]/ [l-za-k] 
        /;my@ever=1..&l
          ;my$mine=$q
            ;sub p{
             print
              @_;
               }
                         
       be $mine for @ever 

anonymous
()
Ответ на: комментарий от punya

большинство проектов на руби не юзают xml

да ладно

kto_tama ★★★★★
()

вот интересно..это специально обученные люди приходят на работу к 9.00, чтобы до 18.00 сидеть и искать уязвимости? Всегда было интересно, как выглядит работы таких контор.

Batters
()
Ответ на: комментарий от Batters

специально обученные люди приходят на работу к 9.00, чтобы до 18.00 сидеть и искать уязвимости

Офисный планктон закукарекал.

anonymous
()

Кто то ещё использует это дырявое решето под названием rails? На мой взгляд очевидно что оно безнадёжно. Из за стиля работы его разработчиков и политики добавления нового кода без его достаточного тестирования.

tyler19
()
Ответ на: комментарий от harper

В нашей фирме нет даже запаха Ruby. Мы такое говно не используем.

Так ведь речь не о Ruby а о Rails. Ну вот думаю стоит использовать sinatra или что нибудь такое, потому что после ruby python кажется недоязыком, некрасиво выглядит, как то так.

tyler19
()

О! RoR - говно! Он - решето. И php, конечно же, тоже - говно, до кучи!

А вот %LanguageName% - это да! Это - Ъ язык для веба, потому что на нем умею кодить я! А остальные не пробовал и поэтому они - говно! И php.

Разрабам RoR - лучи добра!

Разрабам php - лучи добра!

Разрабам %LanguageName% - лучи добра!

Алсо, тем, кто запилил багрепорт, тем, кто запилил новость - все те же лучи добра.

А тем, кто пукает в лужу по поводу того что какой-то язык - говно - ну вы понели... метлу в руки и на плац - Родину защищать. и php - говно, я говорил?

pihter ★★★★★
()
Ответ на: комментарий от pihter

тем, кто запилил новость - все те же лучи добра.

Ой спасибо. А то только и слышу - желтуха, желтуха.

provaton ★★★★★
() автор топика

А сколько их в Restas?

anonymous
()

unfortunately, the patches cause a serious regression, because every JSON incomming request containing nil values are now stripped.
https://github.com/rails/rails/issues/8831

Почему еще нет про то, что RoR сосет? Ждите еще одно обновление <3

anonymous
()

Частично это вина самого Ruby. Если бы был гц вменяемый, который выгружал символы, то и проблемы бы не было. В Ruby 2 таких проблем быть не должно вроде как.

anonymous
()

Сколько можно! Скоро PHP переплюнет.

baverman ★★★
()
Ответ на: комментарий от anonymous

Частично это вина самого Ruby.

В чем вина? В том, что разжижает мозги девелоперов, и они забывают, что в yaml может содержаться опасный код, и что никогда нельзя автоматичеки принимать yaml от третих лиц?

provaton ★★★★★
() автор топика

Да не может быть!

В таком ФУНКЦИОНАЛЬНОМ языке программирование - и такой баг!

Все это PR enterpriZe Java (это такой «ОДНОПАРАДИГМЕННЫЙ» язык для НЕ-кульхацкеров со СТРОГОЙ статической типизацией) кодеров.

Bioreactor ★★★★★
()

Объясните-ка мне, где тут баг. Конвертация в symbol может вызвать «out of memory» это, как бы, известно, и если тебе надо конвертировать что-то в символы из yaml/xml, значит надо (ты отдаешь себе в этом отчет).

По поводу «внедрение SQL-кода»

arel objects have an interesting property when passed as argument to one of Rails dynamic finder methods (find_by_*): The SQL code representing the arel object is directly copied into the SELECT statement created by the finder method, without applying any escaping

Довольно специфичная операция.. кто-нибудь это вообще использовал?

special-k ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.