Да, опять Rails. Да, опять критическая уязвимость. JSON.
Это просто плевок в спину от самого надежного формата: оказывается JSON парсер поддерживает такой аттрибут как json_class и позволяет инстанцировать любые .json_creatable? объекты. И делает это он без оглядки — просто берет const_get(user_input) который с легкостью приводит к DoS, тк const_get генерирует символы никогда не убираемые Garbarg collector-ом.
x=JSON.parse('{"json_class":"JSON::GenericObject", "foo":"bar"}') x.foo => "bar"
А с помощью JSON::GenericObject можно творить еще большие чудеса.
Вот пример как это может привести к SQL инъекции. Есть инфорация о рабочем RCE(выполнение удаленного кода) под все рельсы, через вот эту вот прелесть.
Да, есть еще две уязвимости но они для отвлечения внимания — attr_protected никто не использует а options= прямой ассайнмент опций тоже мало кажется актуальным.
ссылка на оригинал статьи http://habrahabr.ru/post/169095/
Добавить комментарий