The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Критическая уязвимость в Ruby on Rails"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Критическая уязвимость в Ruby on Rails"  +/
Сообщение от opennews (??) on 01-Июн-12, 16:52 
В web-фреймворке Ruby on Rails (http://rubyonrails.org/) выявлена уязвимость (https://groups.google.com/group/rubyonrails-security/browse_...), позволяющая удалённому злоумышленнику организовать подстановку SQL-кода. Проблема вызвана отсутствием должной проверки вложенных параметров запроса в коде  Active Record. В частности, конструкция "Post.where(:id => params[:id]).all" в коде  Active Record напрямую передает внешние параметры в блок WHERE SQL-запроса, что позволяет атакующему передать запрос, в результате которого params[:id] вернёт специально изменённых хэш с содержимым дополнительных условий для блока WHERE. В результате, атакующий может получить доступ на чтение к содержимому таблиц в текущей БД, например, содержащих параметры аутентификации или конфиденциальные данные.

Уязвимость появляется только в Ruby on Rails 3.x, при использовании в приложениях Active Record для доступа к БД и вложенных параметров. Проблема устранена в корректирующих обновлениях Ruby on Rails 3.0.13 (http://weblog.rubyonrails.org/2012/5/31/ann-rails-3-0-13-has.../), 3.1.5 (http://weblog.rubyonrails.org/2012/5/31/ann-rails-3-1-5-has-.../) и 3.2.5 (http://weblog.rubyonrails.org/2012/5/31/ann-rails-3-2-5-has-.../) (выпуск 3.2.4 отменён из-за регрессивных изменений). Похожая проблема зафиксирована в коде разбора параметров в Rack при использовании ActionPack, но она позволяет лишь вставить в SQL-запрос условие "IS NULL".


URL: http://secunia.com/advisories/49297
Новость: http://www.opennet.dev/opennews/art.shtml?num=33992

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Критическая уязвимость в Ruby on Rails"  +4 +/
Сообщение от Аноним (??) on 01-Июн-12, 16:52 
Гитхаб уже взломали?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Критическая уязвимость в Ruby on Rails"  +4 +/
Сообщение от Аноним (??) on 01-Июн-12, 17:01 
Спроси у Хомячкова.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Критическая уязвимость в Ruby on Rails"  +7 +/
Сообщение от Аноним (??) on 01-Июн-12, 17:30 
> Гитхаб уже взломали?

Опять для того чтобы фикс вкоммитить? :)

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Критическая уязвимость в Ruby on Rails"  +1 +/
Сообщение от Аноним (??) on 01-Июн-12, 20:27 
Простите, почему ещё три года назад в документации гооврилось что так параметры не нужно передавать именно из-за вероятности подобных инъекций? Косяк в новости.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от anon9 on 01-Июн-12, 21:01 
> Простите, почему ещё три года назад в документации гооврилось что так параметры
> не нужно передавать именно из-за вероятности подобных инъекций? Косяк в новости.

А как их тогда передавать?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от Ищавин (ok) on 02-Июн-12, 00:58 
Как строку, Post.where(:id => params[:id].to_s).all

Я предлагаю открыть месяц недоуюзвимостей Rails, понятно, что поссонам влом читать доки к фреймворку, так что плавно берем курс на модернизацию фреймворка для «самых маленьких хомяковых».

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Критическая уязвимость в Ruby on Rails"  +1 +/
Сообщение от Michael Shigorin email(ok) on 02-Июн-12, 02:19 
> понятно, что поссонам влом читать доки к фреймворку

К сожалению, поэтому и ответственность за дефолты такая большая.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от Ищавин (ok) on 02-Июн-12, 13:45 
Это не рекомендуемый способ делать запросы такого вида, смотрите коммент ниже.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

8. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от хзкто (ok) on 02-Июн-12, 10:03 
что-то не нашёл сейчас в мануале никаких предупреждений на этот счёт.
Если оно там действительно есть, то это же ещё хуже чем просто баг - это любовно разложенные грабли, за которые надо отрывать руки
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Критическая уязвимость в Ruby on Rails"  +2 +/
Сообщение от Ищавин (ok) on 02-Июн-12, 13:44 
Это просто глупый пример. Post.where(:id => params[:id]).all вполне легальная конструкция, только вот в Rails толку от нее 0, потому как эквивалентна Post.find(params[:id]). Предположим, что там не id, а dummy_user, тогда рекомендуемая нотация ActiveRecord будет такой: Post.where([ "dummy_user = ?", params[:user] ]).all.

Post.where(:id => params[:id].to_s).all — конечно же костыль, только вот и нотация эта не рекомендована разработчиками, так что если лезешь не туда, не жалуйся если что-то пропустил. И да, я только за то, чтоб за такое рвали руки.

Я вот недавно портировал один проект с Rails на Node, просто не могу передать отвращения от того, как в Ноде все нестандартизировано, малого того, что сам язык невероятно многословен по сравнению с Ruby (это при том, что писал я на Coffeescript'е), так и еще шаг вправо-влево — выстрел в ногу.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "Критическая уязвимость в Ruby on Rails"  –2 +/
Сообщение от Аноним (??) on 03-Июн-12, 02:32 
>Ноде все нестандартизировано

?
>невероятно многословен по сравнению с Ruby

?
>это при том, что писал я на Coffeescript'е

???


Да это, батенька, не в лыжах дело.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от Ищавин (ok) on 03-Июн-12, 15:50 
Ничего не понял. Здесь не о лыжах тема, вы ошиблись, наверное.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

14. "Критическая уязвимость в Ruby on Rails"  –1 +/
Сообщение от Аноним (??) on 03-Июн-12, 22:18 
Пословицы и поговорки еще не проходили?
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от Ищавин (ok) on 03-Июн-12, 22:40 
«Какой вопрос, такой и ответ». Вот эту я точно знаю.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

13. "Критическая уязвимость в Ruby on Rails"  +2 +/
Сообщение от kuraga email(ok) on 03-Июн-12, 17:09 
Ruby - очень компактный язык, на меньшем количестве строк кода можно написать большее.

CoffeeScript - прослойка, транслируемая в JavaScript, представляющая Ruby-подобный синтаксис. Но даже так код не выходит компактным.

Ну о стандартизации не в курсе...

JavaScript, зараза, быстрый. Им все занимаются. А Ruby  такой классный! А признания мало... Денег, как следствие, и оптимизированности... Жаль. Ruby - мое все, вот уже два года... Хотя пока большие проекты не делал, и его скорость меня устраивает.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

16. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от ACCA (ok) on 04-Июн-12, 07:03 
О времена, о нравы...
На кой тебе тормоза, которые тормознее даже жабаскрипта?

Покури Perl. Там тебе и психоделики Moose и скорость XS.

Я вот недавно переписал голый Perl сначала на голый C - ускорился в 5 раз. Потом ввод-вывод вернул в Perl - отжал ещё 20%. Разбираться, почему while(<>){} на 20% быстрее кода на C (тупо дёргать буфера по 4М, потом через strchr наковыривать строчки), не стал - всё равно вязать через XS.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

17. "Критическая уязвимость в Ruby on Rails"  –1 +/
Сообщение от хзкто (ok) on 04-Июн-12, 10:32 
> На кой тебе тормоза, которые тормознее даже жабаскрипта?
> Покури Perl.

Взаимоисключающие параграфы: js (v8, который юзается в node.js) намного быстрее перла. И модули на Си++ там подключать тоже очень просто

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

19. "Критическая уязвимость в Ruby on Rails"  +/
Сообщение от ACCA (ok) on 10-Июн-12, 06:33 
>> На кой тебе тормоза, которые тормознее даже жабаскрипта?
>> Покури Perl.
> Взаимоисключающие параграфы: js (v8, который юзается в node.js) намного быстрее перла.

Специально бросил всё, стал проверять на своих задачах. Не быстрее, хотя и не медленнее.

Базара нет, штука быстрая и софта на github настрогали не меньше, чем на CPAN. В следующем проекте нужно посмотреть на неё повнимательнее. При этом асинхронное программирование требует какой-то другой травы.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

18. "Критическая уязвимость в Ruby on Rails"  +1 +/
Сообщение от kuraga email(ok) on 04-Июн-12, 11:29 
> О времена, о нравы...
> На кой тебе тормоза, которые тормознее даже жабаскрипта?
> Покури Perl. Там тебе и психоделики Moose и скорость XS.

А мне не надо быстрый. Мне надо - либо C/C++, классика; либо логичный и красивый, и, если ООП, то тотально-ООП, интерпретатор. И это - Ruby. Просто мне жаль, что в него не вкладывают так, как в JavaScript.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру