Rails — уязвимость в JSON парсере, и не только

в 21:42, , рубрики: ruby, ruby on rails, информационная безопасность

Считаю своим долгом поделиться с хабром, если вдруг вы не читаете hacker news.
Да, опять Rails, опять критическая уязвимость. JSON.

Это просто плевок в спину от самого надежного формата: оказывается JSON парсер (дефолтный) поддерживает такой аттрибут как json_class и позволяет инстанцировать любые .json_creatable? объекты. И делает это он без оглядки — просто берет const_get(user_input) который с легкостью приводит к DoS, тк const_get генерирует символы никогда не убираемые Garbarg collector-ом.

А с помощью JSON::GenericObject можно творить еще большие чудеса

x=JSON.parse('{"json_class":"JSON::GenericObject", "foo":"bar"}')
x.foo
=> "bar"


Вот пример как это может привести к SQL инъекции. Есть инфорация о рабочем RCE(выполнение удаленного кода) под все рельсы, через вот эту вот прелесть.

Да, есть еще две уязвимости но они скорее для отвлечения внимания — attr_protected никто не использует а options= прямой ассайнмент опций тоже мало кажется актуальным, поэтому не пишу о них. рубисты, выучим урок?

Автор: Chikey

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js