Спустя всего неделю после выявления (http://www.opennet.me/opennews/art.shtml?num=35748) во фреймворке Ruby on Rails возможности подстановки SQL-кода, разработчиками проекта представлена (http://weblog.rubyonrails.org/2013/1/8/Rails-3-2-11-3-1-10-3.../) очередная порция обновлений Ruby on Rails 3.2.11, 3.1.10, 3.0.19 и 2.3.15 с устранением нескольких новых уязвимостей. Одна из проблем помечена как экстремально опасная, так как позволяет злоумышленнику выполнить свой код на сервере. Всем пользователям Ruby on Rails рекомендуется как можно скорее обновить свои системы и проанализировать по логам возможные факты эксплуатации уязвимостей.
- CVE-2013-0156 (https://groups.google.com/group/rubyonrails-security/browse_...) - серия уязвимостей, которая позволяет атакующему выполнить свой код на сервере, обойти средства аутентификации, осуществить подстановку SQL кода. Уязвимости вызваны (http://www.insinuator.net/2013/01/rails-yaml/) рядом ошибок в коде разбора XML параметров в Action Pack. Код разбора параметров в Ruby on Rails позволяет приложениям автоматически приводить значения различных переменных из строкового типа в представление других типов данных. Некоторые из используемых при таких операциях преобразований неприменимы при попытке создания Symbols или при парсинге YAML, и могут быть использованы атакующим для компрометации Rails-приложений (по сути можно организовать выполнение Ruby-кода, заданного в XML блоках с параметром type="yaml"). Для атаки злоумышленнику достаточно отправить специальный POST-запрос к приложению, использующему Rails.
В качестве обходного пути защиты рекомендует запретить разбор XML-параметров через установку опции "ActionDispatch::ParamsParser::DEFAULT_PARSERS.delete(Mime::XML)" для Rails 3.2, 3.1 и 3.0 или опции "ActionController::Base.param_parsers.delete(Mime::XML)" для Rails 2.3. Кроме того, можно отключить разбор поддержки YAML и Symbol в парсере XML;
- CVE-2013-0155 (https://groups.google.com/group/rubyonrails-security/browse_...) - позволяет изменить содержимое некоторых SQL-запросов (можно изменить запрос для применения условия "IS NULL" или для игнорирования блока WHERE) при использовании в приложении парсинга параметров JSON средствами Active Record. Проблема проявляется только в Rails 3.x.
URL: http://weblog.rubyonrails.org/2013/1/8/Rails-3-2-11-3-1-10-3.../
Новость: http://www.opennet.me/opennews/art.shtml?num=35792
Уау !!! Эксплоит необычайно красив. Достаточно POST-ом отправить:<?xml version="1.0" encoding="UTF-8"?>
<bang type="yaml">--- !ruby/object:Time {}
</bang>и будет выполнен код object:Time
в паблике PoC еще не было, он очень интересный я думаю.
Красота какая. Python, теперь Ruby.
не руби, а рельсы
> не руби, а рельсыДа и не питон, а MoinMoin.
Хм, когда находят уязвимости в PHP-приложениях, все почему-то поливают помоями в первую очередь платформу, а не сами приложения.
> Хм, когда находят уязвимости в PHP-приложениях, все почему-то поливают помоями в первую
> очередь платформу, а не сами приложения.Не все, а сугубо некоторые. Но от этих некоторых так воняет, что нормальные люди с адекватным мнением часто предпочитают не отмечаться здесь в темах относительно PHP, Wayland и Ubuntu, чтобы не забрызгало. И я их понимаю.
> Хм, когда находят уязвимости в PHP-приложениях, все почему-то поливают помоями в первую
> очередь платформу, а не сами приложения.Потому что эти уязвимости связаны с проблемами самой платформы PHP.
>> Хм, когда находят уязвимости в PHP-приложениях, все почему-то поливают помоями в первую
>> очередь платформу, а не сами приложения.
> Потому что эти уязвимости связаны с проблемами самой платформы PHP.Давайте всё-таки различать уязвимости приложений, фреймворков, платформы; как и их причины -- ошибки дизайна, промахи реализации, низкий общий культурный уровень.
> Давайте всё-таки различать уязвимости приложений, фреймворков, платформы; как и их причины -- ошибки дизайна, промахи реализации, низкий общий культурный уровень.До недавних пор, пока все пальцами тыкать не начали, в php вообще не знали, что такое фреймворк.
И такие фичи, как "инклюд со всеми паролями, который можно найти с помощью спайдера, потому что лежит где-то рядом" или "внезапно (например, при переносе) не запустилось php, и в результате веб-сервер отдаёт полные исходники".
Кроме того, некоторые вещи, которые в развитых средствах делаются легко и приятно, в php приходится костылить и набалдашивать, поэтому и велика вероятность ошибок.
Ещё php не неглядный для веба. Конечно, некоторые фреймворки пытаются скрыть этот факт, но среднего php-шника на фреймворки не загонишь, потому что это чуждая культура - фича php это написать <? tralala; ?> здесь и сейчас, а не сначала делать схему, проектирование и уже по ней реализовывать. PHP-шник, который захочет делать всё по уму, быстро придёт к выводу, что по уму намного удобнее делать на том же python :) Это писать "где придётся, как придётся" удобнее на php. :)
Архитектура приложения на порядок более важна, чем язык. Грамотно спроектированное приложение, основанное на нормальном фреймворке (а нормальный фреймворк, помимо прочего, сглаживает недостатки языка), переписывать с одного языка на другой - это, мягко выражаясь, не самое эффективное использование времени разработчиков.
> Архитектура приложения на порядок более важна, чем язык. Грамотно спроектированное приложение,
> основанное на нормальном фреймворке (а нормальный фреймворк, помимо прочего, сглаживает
> недостатки языка), переписывать с одного языка на другой - это, мягко
> выражаясь, не самое эффективное использование времени разработчиков.То, что php-шники считают, что их язык самый простой в освоении и самый лучший для входа в разработку, не означает, что это так, и что на bottle они бы не смогли сделать то же самое, но намного проще. Потому что bottle намного проще в освоении - это раз, и что от тех ошибок (типа sql-инъекций), от которых php-шники будут избавляться только через 0.5-2 года опыта, тут они избавляются сразу, потому что сразу учатся писать правильно.
Есть у php ровно 1 преимущество: абстрактная домохозяйка, делающая сайт рецептов, при должной сноровке и опыте, сама сможет как-то распаковать архив на ftp и установить готовое php-приложение. К разработке это не относится никаким образом.Но всё намного проще: вся эта обида, с которой php-шники радуются недостаткам другим, проистекает только от того, что php, кроме домохозяек, никто серьёзно не воспринимает, и их это бесит. Но даже если в ruby будет 2 млн. уязвимостей, php от этого лучше не станет. Почему-то даже перловики, которых 3.5 штуки, не комплексуют, что пишут на perl, а php-шники всё успокоиться не могут, ходят в темы по другим уязвимостям и радуются чужим, вместо того, чтобы заботиться о себе. Это - первый признак неадекватности, это вам любой психиатр подтвердит.
А от языка многое зависит - и культура, и вся связанная инфраструктура, и даже приобретаемые привычки. Например, python вызывает привычку ставить отступы :)
Всегда приятно и смешно читать мнение упоротых (в любой области, не только касательно РНР).
Новость о RoR. Казалось бы - обсуждаем Ruby. Но нет. Упоротые всегда скатятся к своему фетишу и будут его с удовольствием посасывать, забыв о сабже, окружающей реальности и прочих мелочах.
Продолжайте дальше, эту ветку довольно забавно читать.
А то Си такую привычку не вызывает :)
> То, что php-шники считают, что их язык самый простой в освоении и
> самый лучший для входа в разработку, не означает, что это так,Да, толпы питонистов и рубистов с батхертом пытаются оспорить этот титул.
> Потому что эти уязвимости связаны с проблемами самой платформы PHP.Ну тогда будет честно если дырка в moinmoin будет распостранена на весь питон, да? :)
Нет. Они связаны с 95% программистов на php. А так - вполне нормальный инструмент, если закрыть глаза на кривости стандартной библиотеки - детские болезни типа register_globals и magic_quotes давно исправлены. "Программисты на рельсах", сам ruby не знающие, и чуть чего, бегущие на форумы с вопросом "где взять gem для foo", ничем не лучше. В ровных руках и руби, и php, и питон хороши и пригодны.
Стоит всё же добавить, что PHP не блещет внутренней логикой. Чего стоит только то, как прикручивали по отдельности возможность индексации то к непосредственному результату выполнения функции, то ещё к чему-то... Или можно вспомнить, что функции там регистронезависимы - а переменные регистрозависимы... В общем, там старых скелетов всё же многовато.
В с++ скелетов не меньше, если задуматься. Что не мешает на нем писать.
те кто пишут на c++ имеют, все-таки, имеют более высоку квалификацию. иначе просто не скомпилируется или будет постоянно падать из-за неправильной работы с памятью, указателями и т.п.
Ох... Моя первая работа (в 18 лет) заключалась как раз в программировании на С++. Оно, конечно, компилировалось и работало, и даже почти не падало, но если бы мне показали сейчас этот код, я бы умер от стыда. :-)
> В с++ скелетов не меньше, если задуматься. Что не мешает на нем писать.Если взломать приложение на c++, самое большее, что можно получить - это бесконечные жизни. :)
>> В с++ скелетов не меньше, если задуматься. Что не мешает на нем писать.
> Если взломать приложение на c++, самое большее, что можно получить - это
> бесконечные жизни. :)Или выполнение произвольного кода. Но бесконечные жизни забавнее, не спорю :-)
Соответственно из дистрибутива или gem install rails -v=2.3.15PS: интересно, кому вообще такая "гениальная идея" пришла в голову при существовавшем на то время register_globals в PHP и широкой известности самых разнообразных проблем с ним... опять небось виндузятники с макинтоидами, не читавшие даже study in scarlet :-/
Микаэль, у тебя параноя :) кругом враги мерещаццо, в следующий раз чашку кофе прольешь, кляни на чем свет стоит тех виндузятнегов что кофе изобрели!
> виндузятнегов что кофе
> изобрели!Вообще-то сановцы.
> Микаэль, у тебя параноя :)Всего лишь читаю или поглядываю в ruby-talk@ без малого десять лет.
>> Микаэль, у тебя параноя :)
> Всего лишь читаю или поглядываю в ruby-talk@ без малого десять лет.правильно. не показывай мАлому это!:-)
> 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Вот такое вот обновление...
Ха, пля, я для редмана эксплойт намутил. Вешайтесь духи!!! :)
> Ха, пля, я для редмана эксплойт намутил. Вешайтесь духи!!! :)Думаешь, за остальными заржаевеет? Хотя вот честно, обладателей редмайнов и мойнмойнов не жалко. Совсем. Они вывешивают окружающим такие кактусы. Пусть теперь сами выкусят.
Да ладно, нормальная СРМка, для малого офиса. Тока ухаживать за ним надо.
Самая ж..па была той весной, когда дистрибутивы массово на руби 2.0+ перешли,
а редмайновцы и плугино-писатели особо не торопились.
Было два выхода - ставить руби 1.8 или переделывать/доделывать редмайн с плугинами,
сейчас вроде всё устаканилось.
>Самая ж..па была той весной, когда дистрибутивы массово на руби 2.0+ перешлиВерни машину времени на место. Или бросай бухать.
> когда дистрибутивы массово на руби 2.0+ перешлиназовите хотя бы два таких дистрибутива
arch: ruby 1.9.3
sid: 1.8.7 и 1.9.3
alt sisyphus: 1.9.3
mageia3: 1.9.3
frugalware-current: 1.9.2
slackware-current: 1.9.3
>> когда дистрибутивы массово на руби 2.0+ перешли
> назовите хотя бы два таких дистрибутива
> arch: ruby 1.9.3
> sid: 1.8.7 и 1.9.3
> alt sisyphus: 1.9.3
> mageia3: 1.9.3
> frugalware-current: 1.9.2
> slackware-current: 1.9.3Ну или 1.9, путаю я их :)
Как раз новый honeypot опробуем.
Редмайн обычно старается все косяки rails исправлять, обычно их такие уязвимости не касались. Но я всё равно держу его в чруте, и регулярно обновляю из hg.А ломание обычно начинают с github. Если github стоит, значит всё нормально. :)
Павлин, а разве последний RedMine уже не требует жёстко 3.0.19?
> Павлин, а разве последний RedMine уже не требует жёстко 3.0.19?у меня в gemfile написано 3.2.11
>... требует жёстко 3.0.19?Да говорю, там зоопарк
Стабильными считаются редмайны - 2.2.1, 2.1.6, 1.4.6
Все 2-ки работают на руби 1.8.4 и 1.9,
1.4.6 - только на 1.8Мне, пля, повезло, я попал на версию редмайна 2.0, которая супер-пупер мутантская,
сначала работала на 1.8, но все апдейты к ниму тестят на 2.1, и плугины тоже.
.... ,бла-бла-бла....В общем потихоньку переползаю на 2.1
И ваще, установку редмайна надо начинать с изучения работоспособности всех плугинов!!!
А то, я к примеру, из-за этих плугинописателей, весь ActionMailer перехерачил, теперь
сам боюсь трогать. :)
>>... требует жёстко 3.0.19?
> Да говорю, там зоопарк
> Стабильными считаютсяЕсть такое впечатление, что ребята с рельсами _уверены, что и руби, и рельсы просто _необходимо ставить в домашнюю директорию, при каждом логине на машину обновлять с интернетов все gem-ы (у которых тоже принципиально не бывает стабильных версий/релизов). Это Путь К Успеху. Проверено гламурными ребятами с макбуками.
Это у тебя зоопарк: ты хочешь от них чего-то странного -- "стабильный", "продакшен", "сесьюрити-саппорт".
Одумайся!+:/
> сам боюсь трогать. :)
> Одумайся!+:/Я что ль придумал его впиндюрить?! Партия сказала - надо, комсомол ответил - есть!