Comments 19
Нереальное решето O_O
is_callable($attribute['value'])? call_user_func($attribute['value'],$this->data)
блин. это жесть. это позволяет вызвать ЛЮБУЮ функцию пыха просто передав её имя.
Восхитительно!
Это точно не было диверсией?
is_callable($attribute['value'])? call_user_func($attribute['value'],$this->data)
блин. это жесть. это позволяет вызвать ЛЮБУЮ функцию пыха просто передав её имя.
Восхитительно!
Это точно не было диверсией?
+13
Ну скажем так: «не нереальное решето», а только в некоторых случаях. Уязвимость действительна только если передавать значение как «array($object, $method)»
0
Где тут «Нереальное решето»?
Во-первых: виджет это не очень популярный. Сам лично ни разу его не пользовал.
Во-вторых: если ты вставляешь пользовательские данные без проверки — то ты сам себе злобный буратино. Во многих виджетах для рендера контента используется
Во-первых: виджет это не очень популярный. Сам лично ни разу его не пользовал.
Во-вторых: если ты вставляешь пользовательские данные без проверки — то ты сам себе злобный буратино. Во многих виджетах для рендера контента используется
CComponent::evaluateExpression()
, который скармливает данные в eval()
.-2
Согласен, признаю свою вину.
можно просто предать имя функции и получить
Уязвимость действительна только если передавать значение как «array($object, $method)»
можно просто предать имя функции и получить
$data
как ее параметр.0
Но уязвимость есть только если определено 'value' и в него передается пользовательский ввод без изменений:
А такое очень редко бывает.
Обычно 'value' используется для форматирования значения, при этом название функции не дойдет в целостности и не выполнится.
'attributes' => array(
array(
'value' => $model->attribute_name,
),
)
А такое очень редко бывает.
Обычно 'value' используется для форматирования значения, при этом название функции не дойдет в целостности и не выполнится.
0
Этот «не очень популярный» виджет используется в CRUD из Gii
0
«По нашим данным детали пока известны только основной команде разработчиков фреймворка.»
Теперь всем прочитавшим. Уже обновился.
Теперь всем прочитавшим. Уже обновился.
+1
Уязвимость присутствует в коде чуть больше года, с 6 июня 2013. Самое печальное, что всего 20 файлов во фреймворке содержат функции
И ведь это проблема: разработчики слишком доверяют фреймворкам и библиотекам; open source даёт ощущение мнимой безопасности («Да миллионы пользуются этой бибилиотекой! Да полюбому кто-то уже проверил её на закладки…»).
call_user_func*
, а значит, в результате стандартного аудита безопасности шанс найти эту уязвимость стремится к 100%. Боюсь представить, сколько эта уязвимость эксплуатировалась в течение этого года.И ведь это проблема: разработчики слишком доверяют фреймворкам и библиотекам; open source даёт ощущение мнимой безопасности («Да миллионы пользуются этой бибилиотекой! Да полюбому кто-то уже проверил её на закладки…»).
+2
не обманывайте себя;) Она присутствует в коде 2 года c сентября 2012
0
Использовали этот виджет на одном проекте. Уже накатываем обновления.
В целом, общее мнение команды, что дырка и правда сильно похожа на закладку. Впрочем, от Yii все равно не откажемся.
В целом, общее мнение команды, что дырка и правда сильно похожа на закладку. Впрочем, от Yii все равно не откажемся.
+1
Это касается только CDetailView, я правильно понимаю?
0
Ну это скорее бага для очень криворуких программистов, потому что любые входные данные всегда надо валидировать. Вероятность именно такого применения на практике очень низкая, а вот бага с массивами была поинтересней.
-3
Только сейчас у Symfony2 появился второй мержер, до этого весь код мержил только Фабьен. Мне кажется тот факт, что разработчик сам себя ревьювит — позволяет оставлять в коде вот такие закладки.
+1
Sign up to leave a comment.
Yii 1.1.15 (исправление безопасности)