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)

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

в том-то и разница: кому-то нравится срать в кухне на столеделать спагетти-код, а кому-то нет.

AGUtilities ★★★
()
Ответ на: комментарий от special-k

Вся жизнь хаос, что поделать. Я создаю программный интерфейс, который удобен мне здесь и сейчас, а не когда-то кому-то.

спасибо, посмеялся

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

для тебя существуют два подхода к программированию - такой, как в руби, и неправильный.

Нет, мне нравится использовать модули для расширения функционала, а не наследование. И это не только мое мнение. Но в руби это реально удобно.

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

GoF

DuckDuckGo выдаёт «Harry Potter and the Goblet of Fire» — не, не слышал.

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

Учите матчасть!

А знал ли ты об этом:

Знал.

Как теперь я знаю, что Вы очень поверхностно владеете либо предметом, либо английским, либо и тем и другим.

Курите http://discontinuously.com/2012/02/How-the-Boehm-Garbage-Collector-Works/

«Clearly, the Boehm GC is not perfect – it can and will leak some memory – but its heuristics ensure that it never frees memory that is still in use.3 Moreover, since it verifies the chunk address before setting any mark bits, it never modifies user data by accident. ...» (с)

То, что как работает GC в нормальных ПРИКЛАДНЫХ языках программирования, Вы не знаете - это и так априори понятно.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от special-k

Вся жизнь хаос, что поделать. Я создаю программный интерфейс, который удобен мне здесь и сейчас, а не когда-то кому-то.

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

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

То, что разработчики гитхаба ниасилили прочесть мануал, не является уязвимостью рельс.

т.е. ты считаешь, что средний разработчик на рельсах более начитан в мануалах, чем разработчики гитхаба?!

а если не считаешь, то тогда это — уязвимость для среднего разработчика

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Ответ на: комментарий от provaton

Шикарно, чтоб понять, как работает тот или иной метод стандартной библиотеки мне нужно перелопачивать документацию (или сорцы) всех используемых библиотек.

Foo.method(:my_method).source_location # на чистом руби

Или же

require 'pry'
pry
show-method my_method

При этом, если пока я отходил пить чай, другой девелопер добавил еще какую-то библиотеку, то поведение опять могло поменяться. Это ли не хаос?

Утрируешь. В реальности такого не происходит.

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

Та ладно, возьмут его на работу, надают подзатыльников, и все будет ок.

правда в том, что многие менеджеры, хотят чтобы код был готов как можно быстрее, ведь код - это деньги.

это значит, что такой вот среднестатистический рубист, будет, как он выразился, делать такой код, который удобен только для него.

а в результате, через какое-то время, код превратится в кашу. вот это, как раз, и научит любить правильный кодинг.

AGUtilities ★★★
()
Последнее исправление: AGUtilities (всего исправлений: 1)
Ответ на: комментарий от anonymous

Вот, это - ответ адекватного девелопера на руби. Спасибо.

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

Я б не взял на работу человека, которому такое нравится.

Любому кто использует питон такое нравится, т.к. питон к этому обязывает. Это не желаение человека, это безвыходность, созданная внезапной объектной моделью и пространством имен питона.

На руби у тебя будет специальный файл для подобных вещей, и выглядить это будет примерно так:

module A #модуль с логически связанным функционалом
  def a #изменяемый метод
    #...
  end

  def b
    #...
  end

  def c
    #...
  end
end

#...

B::C::D::E.class_eval{ include A }
#и так же
B::C::D::F.class_eval{ include A }
B::C::D::G.class_eval{ include A }

special-k ★★★
()

И эти люди рассказывают мне про дырявый php

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

т.е. ты считаешь, что средний разработчик на рельсах более начитан в мануалах, чем разработчики гитхаба?!

Не исключаю. Речь идёт не о чтении, скажем, исходников руби, чего средний разработчик не делает. Речь об официальной документации. Она не настолько сложная и длинная, чтоб её не прочесть. На таком уровне я не вижу разницы между разработчиком гитхаба и любым другим программистом.

anonymous
()
Ответ на: Учите матчасть! от Bioreactor

Clearly, the Boehm GC is not perfect

объясни мне, зачем GC в веб-приложении

все наши данные распадаются на 2 класса:

1. данные с временем жизни одного request-а — там можно вообще не собирать мусор (это еще производительнее, чем в яве, гы-гы) и уничтожить все разом после завершения обработки request-а

2. данные с большим временем жизни — это практически всегда кэши, в которых элемент может быть, а может и быть вытеснен — т.е. на элемет кэша нужны weak/soft/... references со стороны других данных в кэше и пофиг-какие-references со стороны данных request-а (т.к. никто все равно не собирается purge-ить кэши с помощью GC, т.е. на основании того, что из элементов кэшей (не) захваченно короткоживущими request-ами); сборщик мусора опять ни к чему

что я тут упустил?

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 1)
Ответ на: комментарий от special-k

Причем да, модули у тебя могут быть в отдельных файлах, а инклуды в своем.

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

это безвыходность, созданная внезапной объектной моделью и пространством имен питона.

Судя по этому треду, ты школьник, который учился программировать по Руби и в результате получил тяжелый синдром утенка.

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

а в результате, через какое-то время, код превратится в кашу

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

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

Это не желаение человека, это безвыходность, созданная внезапной объектной моделью и пространством имен питона.

Я 5 лет зарабатываю себе на хлеб кодингом на питоне, и не разу не использовал манкипатчинг. Всегда находились более элегантные, читабельные, поддерживаемые решения.

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

Это естественно, но это потому что язык такого не позволяет (в нормальной форме).

Нет, не поэтому. Блин, я не знаю, как это объянить человеку, без нормального опыта профессионального программирования. Уж извини.

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

что я тут упустил?

Ага. Упустили.

Умничать будете на собеседовании или в собесе.

А GC tuning'ом будет заниматься специалист с нехилой зарплатой. Дилетанты с ЛОРа в реальных проектах не нужны.

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

Нет, не поэтому

Поэтому. Суть - твой инструмент хуже чем мой, ты можешь с ним меньше чем я со своим). Нет никакой необходимости использовать этот питон. Он хуже по многим параметрам, надо быть очень слепым чтобы не замечать. Питон просто хуже.

Вот тебе иллюстрация:

Ruby > python

И если появится другой более лучший язык, я буду использовать его. Но в настоящий момент лучше использовать руби. Если ты выкинешь из головы свои тупые предрассудки по поводу возможности определения класса в любом месте, и начнешь нормально им пользоваться, то очень быстро поймешь, что руби лучше. Никто не размазывает код как попало. Все стараются сделать код как можно лучше читаемым.

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

Поэтому. Суть - твой инструмент хуже чем мой, ты можешь с ним меньше чем я со своим

Не так важен инструмент, как умение его использовать. Если руки из нужного места растут, то и на php можно дельные вещи делать. А какой инструмент выбирать, зависит не только от предпочтений разработчика, но и от самой задачи.

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

свои тупые предрассудки

От тебя особенно интересно такое слышать :)

ты можешь с ним меньше чем я со своим

Когда на втором курсе раскажут про машину тюринга, тогда поймешь, что это утверждение неверно.

provaton ★★★★★
() автор топика
Последнее исправление: provaton (всего исправлений: 1)
Ответ на: комментарий от anonymous

Если руки из нужного места растут, то и на php можно дельные вещи делать

Можно, но зачем!

но и от самой задачи

И это верно.

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

Но в настоящий момент лучше использовать руби.

Ну лучше, так лучше.

Все, бросаю свою карьеру enterpriZe жабабыдлокодера в ДС - перееду к вам в урюпинск работать на рубироиде!

А то у нас на весь ДС только одна рубироид вакансия - и то за 65 тыр (видать, для студиоуза), что несерьезно.

Bioreactor ★★★★★
()
Последнее исправление: Bioreactor (всего исправлений: 1)
Ответ на: комментарий от provaton

Да ты угораешь. «мне не нравится, что пространство имен не связано с файлами, поэтому язык плохой» - не нравится - свяжи. В рельсах кстати связано.

#a/b/c.rb
module A
  module B
    class C
    end
  end
end

Что за тупой довод. Я тебе говорю, что повторное использование кода невозможно нормально организовать в твоем питоне из-за отсутствия миксинов, это не говоря уже о кучи инструментов типа rspec, thor, rails и тп, да еще куча приятных моментов.

Нет я не против, если вы будете говорить «руби лучше, но я дурак», тогда все норм)) Но не надо говорить, что питон лучше, или что он для чего-то там подходит.

special-k ★★★
()
Последнее исправление: special-k (всего исправлений: 2)
Ответ на: комментарий от special-k

руби лучше, но я дурак

ruby, js, python, php.. можно ставить в ряд. Среди них один точно лучше остальных.

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

не нравится - свяжи

Неправильный вывод. Не нравится - используй ЯП, транслятор которого за тебя заботится об ограничениях, которые ты хотел бы иметь.

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

Это внезапно стало самым главным ограничением -_^. Ограничение, которое спасет мир. Черт, ребята, да вы угораете.

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

Это внезапно стало самым главным ограничением -_^. Ограничение, которое спасет мир. Черт, ребята, да вы угораете.

Я где-то сказал, что оно главное, или что оно спасает мир?

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

Знаешь ли, есть куда более ограниченные языки, если тебе так важны ограничения. Та же ява, и ограничена и работает быстро.

special-k ★★★
()
Ответ на: комментарий от Bioreactor

что я тут упустил?

Ага. Упустили. Умничать будете на собеседовании или в собесе. А GC tuning'ом будет заниматься специалист с нехилой зарплатой

бугага! по-твоему, услышав про нехилую зарплату чувака, занимающегося тюнингом ненужного, кривого костыля, я должен сразу отстать и заплакать? напомню мой вопрос:

_*ЧТО*_ я тут упустил

для тех, кто страдает дислексией: вопрос был не о зарплате, а о необходимости сборки мусора в веб-приложении

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от special-k

Знаешь ли, есть куда более ограниченные языки, если тебе так важны ограничения.

Ага, я как раз занимаюсь выбором хорошего языка со статической типизацией.

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

А с чего ты взял, что оно обязано быть встроено в транслятор?

А где я написал, что оно обязано быть встроено в транслятор?

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

Не нравится - используй ЯП, транслятор которого за тебя заботится об ограничениях, которые ты хотел бы иметь.

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

Ну и где тут про обязанность?

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

Спасибо, но и без твоих советов справлюсь.

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