The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Критическая уязвимость в системе управления web-контентом Dr..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от opennews (??) on 16-Окт-14, 00:20 
В выпуске (https://www.drupal.org/drupal-7.32) системе управления web-контентом Drupal 7.32 устранена критическая уязвимость (https://www.drupal.org/SA-CORE-2014-005) (CVE-2014-3704), позволяющая осуществить подстановку SQL-кода. Уязвимости присвоен наивысший уровень опасности (Highly critical (https://drupal.org/security-team/risk-levels)), сигнализирующий на возможность осуществления удалённой атаки, способной привести к получению доступа к системе.


Уязвимость вызвана ошибкой в реализации метода "prepared statement" в интерфейсе абстрактного доступа к БД и может быть эксплуатирована анонимным посетителем. Отправив специально оформленный запрос к сайту, реализованному на базе Drupal, атакующий может выполнить произвольный SQL-запрос на сервере, манипулируя которым можно добиться выполнения PHP-кода или получения доступа к серверу. Прототип эксплоита не публикуется, но в тестовом сценарии фигурирует передача значения "1 ;INSERT INTO {test} SET name = 'test12345678'; -- ".


URL: https://www.drupal.org/drupal-7.32
Новость: http://www.opennet.me/opennews/art.shtml?num=40844

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Критическая уязвимость в системе управления web-контентом Dr..."  +5 +/
Сообщение от Аноним (??) on 16-Окт-14, 00:20 
> Drupal

Я ни разу не удивлён. Но думал, что Джумлу вряд ли переплюнут.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от Джон on 16-Окт-14, 04:54 
Есть сервер с голой джумлой. Взламываешь? 100 баксов твои. Надо больше говори, не вопрос.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

13. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от Аноним (??) on 16-Окт-14, 05:56 
> Надо больше говори, не вопрос.

Ну это смотря насколько больше :). Если вы 31337 баксов как гугля предложите - у вас появится несколько чуваков, выискивающих баги fulltime, вероятно :)

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

23. "Критическая уязвимость в системе управления web-контентом Dr..."  +3 +/
Сообщение от XakRu (ok) on 16-Окт-14, 10:46 
Если вас еще не взломали - это не значит, что ваша система неуязвима. Возможно вы просто нам не интересны!
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

25. "Критическая уязвимость в системе управления web-контентом Dr..."  +12 +/
Сообщение от Michael Shigorin email(ok) on 16-Окт-14, 12:20 
> Есть сервер с голой джумлой. Взламываешь? 100 баксов твои.
> Надо больше говори, не вопрос.

А теперь объясняю, как выглядит в жизни.

Некую CMS засунули на хостинг, активно залатывают, сайт наполняют контентом.  Проходит год-два-три.  Изначальные студент/фрилансер/студия вроде как уже и не нужны, всё устоялось, проблем особых нет.  Латание плавно или скачком прекращается, продолжается наполнение.  Проходит ещё какое-то время, за которое поддерживаемая ветка закрывается, переезд на следующую требует как минимум обращения к с/ф/с, подчас нетривиальной мороки (т.е. времени и денег), изредка существенной переработки части функциональности.

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

Я доступно излагаю?

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

26. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от Аноним (??) on 16-Окт-14, 13:06 
Прям за меня сказал.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

29. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Vov on 16-Окт-14, 14:50 
А имеется ли разница между 100 потенциальными уязвимостями Жумлы или одной (найденной) в CMSВАШЕЙМЕЧТЫ если результат практически один (потеря данных или что-то подобное)

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

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

32. "Критическая уязвимость в системе управления web-контентом Dr..."  +2 +/
Сообщение от Сергей (??) on 16-Окт-14, 15:03 
Разница в том, что 50 из тех 100 могут быть известны только тем, кто ими пользуется.
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

34. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от YetAnotherOnanym (ok) on 16-Окт-14, 15:25 
Если она одна и закрыта, потенциальные злоумышленники переключатся на ПО, в котором их находят пачками.
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

44. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Michael Shigorin email(ok) on 17-Окт-14, 14:23 
> А имеется ли разница между 100 потенциальными уязвимостями Жумлы или одной (найденной)
> в CMSВАШЕЙМЕЧТЫ если результат практически один (потеря данных или что-то подобное)

Видите ли, практика показывает, что на условную сотню найденных уязвимостей жумлы приходится условно одна найденная дырка в "CMSНАШЕЙМЕЧТЫ".  И с таким "авторским коллективом" оной жумлы это как было предсказуемо годы тому, так и останется.  Увы.

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

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

43. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от yutoks on 17-Окт-14, 11:05 
тут от мозга админа больше зависит, чем от скриптов.
как рассчитал безопасность системы.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

2. "Критическая уязвимость в системе управления web-контентом Dr..."  +2 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 16-Окт-14, 00:23 
> Уязвимость вызвана ошибкой в реалиpации интерфейса абстрактного доступа к БД

вот, значит, как теперь называется склеивание строчек в sql запрос на коленке в пыхе

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Критическая уязвимость в системе управления web-контентом Dr..."  –1 +/
Сообщение от Нимо Ан on 16-Окт-14, 00:48 
Давно пора запретить передачу SQL от клиента (middleware) к серверу (СУБД) и реализовать унифицированный интерфейс к хранимым процедурам, а внутри уже пусть городят как хотят.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

10. "Критическая уязвимость в системе управления web-контентом Dr..."  +3 +/
Сообщение от vitalif (ok) on 16-Окт-14, 01:56 
чур тебя
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

14. "Критическая уязвимость в системе управления web-контентом Dr..."  +3 +/
Сообщение от Аноним (??) on 16-Окт-14, 05:57 
> Давно пора запретить SQL

//fixed. Bobby Tables meets John The Scripter.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

16. "Критическая уязвимость в системе управления web-контентом Dr..."  +2 +/
Сообщение от Аноним (??) on 16-Окт-14, 09:35 
Мдя, как всё тяжко то у людей...
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

20. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от Обычный аноним on 16-Окт-14, 09:53 
> Мдя, как всё тяжко то у людей...

Так ты марсианин???

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

22. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 10:02 
>> Мдя, как всё тяжко то у людей...
> Так ты марсианин???

А ты комменты читаешь по одному, не обращая внимания на иерархию? :)

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

28. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Обычный аноним on 16-Окт-14, 14:03 

> А ты комменты читаешь по одному, не обращая внимания на иерархию? :)

Промах. Руки трясутся :))

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

4. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от manster (ok) on 16-Окт-14, 00:27 
...сколько еще таких сюрпризов на просторах любителей экономить на prepare-параметрах...
Возможно это от большой любви ко всякого рода ORM...

Практически любой проект, не использующий prepare-параметры, но активно работающий с БД, имеет потенциальную возможность предоставить брешь.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от uldus (ok) on 16-Окт-14, 00:35 
> .сколько еще таких сюрпризов на просторах любителей экономить на prepare-параметрах...

Вообще-то эта уязвимость как раз в коде обработки  prepare-параметров :-)

Drupal uses prepared statements in all its SQL queries. To handle IN statements there is an expandArguments function to expand arrays.
...
The function assumes that it is called with an array which has no keys. Example:

    db_query("SELECT * FROM {users} where name IN (:name)", array(':name'=>array('user1','user2')));

  Which results in this SQL Statement

    SELECT * from users where name IN (:name_0, :name_1)

  with the parameters name_0 = user1 and name_1 = user2.

  The Problem occurs, if the array has keys, which are no integers. Example:

    db_query("SELECT * FROM {users} where name IN (:name)", array(':name'=>array('test -- ' => 'user1','test' => 'user2')));

  this results in an exploitable SQL query:

     SELECT * FROM users WHERE name = :name_test -- , :name_test AND status = 1

  with parameters :name_test = user2.

  Since Drupal uses PDO, multi-queries are allowed. So this SQL Injection can
      be used to insert arbitrary data in the database, dump or modify existing data
      or drop the whole database.

  With the possibility to INSERT arbitrary data into the database an
  attacker can execute any PHP code through Drupal features with callbacks.


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от manster (ok) on 16-Окт-14, 01:16 
>[оверквотинг удален]
>   with parameters :name_test = user2.
>   Since Drupal uses PDO, multi-queries are allowed. So this SQL
> Injection can
>       be used to insert arbitrary data
> in the database, dump or modify existing data
>       or drop the whole database.
>   With the possibility to INSERT arbitrary data into the database
> an
>   attacker can execute any PHP code through Drupal features with
> callbacks.

Возможно, это предположение только. Надо смотреть код. Сейчас многие т.н. драйвера могут маскироваться под placeholders для prepare, но не отрабатывающие "честный биндинг", а просто выполняют замену значениями через search/replace

В случае, когда выполняется prepare+binding подстановка кода не очень возможна, если только как строковое значение поля, когда тип позволяет.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Критическая уязвимость в системе управления web-контентом Dr..."  +3 +/
Сообщение от vitalif (ok) on 16-Окт-14, 01:58 
Да у них просто видимо этот prepare эмулируется их же кодом.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

18. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 09:50 
> Да у них просто видимо этот prepare эмулируется их же кодом.

Там у них "для облегчения" есть функция expandArguments которая перед pdo-ным prepare переписывает тело запроса хитрым preg_replace-ом :), более подробно не изучал :)

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

17. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 09:39 
>[оверквотинг удален]
>   with parameters :name_test = user2.
>   Since Drupal uses PDO, multi-queries are allowed. So this SQL
> Injection can
>       be used to insert arbitrary data
> in the database, dump or modify existing data
>       or drop the whole database.
>   With the possibility to INSERT arbitrary data into the database
> an
>   attacker can execute any PHP code through Drupal features with
> callbacks.

А то что при prepare запроса, "prepared" запрос на сервере не меняется php-никам невдомёк конечно, они настолько привыкли к "расширениям" добавляемым всякими ORM и тому подобным...

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

24. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 11:03 
prepared statements так не работает, это что-то похожее по api на него. Как уже некоторые заметили, некоторые ущербные биндинги эмулируют софтварно, например почти все к mysql
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

36. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от angra (ok) on 16-Окт-14, 17:20 
Можно еще сказать, что данная ошибка есть следствие дизайна PHP, в котором нет различия между обычными и ассоциативными массивами aka хешами.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

38. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от manster (ok) on 16-Окт-14, 18:16 
Да есть такое. Типизированные массивы и списки тогда уж. Само по себе числовые индексы или символьные не большое зло - частный случай индексов. Но это плата за универсальность. Решили сэкономить на списках и кортэжах. Но ошибка не совсем с этим связана, "палёный код", впрочем от друпала не удивительно может быть.
Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

40. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от all_glory_to_the_hypnotoad (ok) on 16-Окт-14, 20:13 
> Cамо по себе числовые индексы или символьные не большое зло - частный случай индексов.

ни что ни у чего тут не частный случай.

> Но это плата за универсальность.

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

Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

6. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от demimurych email(ok) on 16-Окт-14, 00:38 
Вы бы в патч посмотрели
или хотя бы новость внимательно прочли, чтобы понять в чем проблема и как она появилась.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

19. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 09:51 
> Вы бы в патч посмотрели
> или хотя бы новость внимательно прочли, чтобы понять в чем проблема и
> как она появилась.

http://www.opennet.me/openforum/vsluhforumID3/99431.html#18

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

7. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 00:42 
Интересно whitehouse.gov и london.gov.uk уже пропатчили? Они когда-то громко кричали о переходе на Drupal Ж-)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от йцу on 16-Окт-14, 08:52 
Загуглите "prepared statement in" - удивитесь количеству одинаковых вопросов на stackoverflow (речь не только о PHP). Есть вообще БД API, которое поддерживает из коробки биндинг коллекций к одному плейсхолдеру? А ведь достаточно часто возникающий кейс.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

21. "Критическая уязвимость в системе управления web-контентом Dr..."  –3 +/
Сообщение от Аноним (??) on 16-Окт-14, 09:56 
> Загуглите "prepared statement in" - удивитесь количеству одинаковых вопросов на stackoverflow
> (речь не только о PHP). Есть вообще БД API, которое поддерживает
> из коробки биндинг коллекций к одному плейсхолдеру? А ведь достаточно часто
> возникающий кейс.

Оно не нужно, не дело СУБД разгребать коллекции, и реализация такого алгоритма должна зависеть от ситуации а не "сейчас мы регулярками преобразуем строку запроса..."

p.s. старое утверждение про невозможность выполнения всех 3-х критериев разработки работает :)

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

27. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от йцу on 16-Окт-14, 13:45 
Ну алгоритм-то зачастую один и тот же - взять список чисел/строк и впихнуть в IN выражение.

Не дело СУБД - ok, но почему в тех же PDO, JDBC и т.п. API не добавить соответствующий метод? В DQL (doctrine) и HQL (hybernate) к примеру такая возможность есть (я понимаю, что это несколько более высокоуровневые штуки, но не вижу причину чтобы не реализовать это уровнем ниже - ну ведь нужная же вещь).

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

31. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 15:01 
> Ну алгоритм-то зачастую один и тот же - взять список чисел/строк и
> впихнуть в IN выражение.
> Не дело СУБД - ok, но почему в тех же PDO, JDBC
> и т.п. API не добавить соответствующий метод? В DQL (doctrine) и
> HQL (hybernate) к примеру такая возможность есть (я понимаю, что это
> несколько более высокоуровневые штуки, но не вижу причину чтобы не реализовать
> это уровнем ниже - ну ведь нужная же вещь).

вы же сами ответили - разный уровень.
Если вы пришете в запросе in ( :param ), то :param - это то что выдерается при подготовке запроса ( построении плана и т.д. ), по уму в том же drupal должно бы быть 2 варианта

in ( :param )
и
in ( #суперидентификатонедопустимыйдляsqlзапроса#paramscollection )

тут же в унификации можно зайти очень далеко, в некоторых системах применяют что то вроде "Select &fields from &table &whereparam", но в этом случае все понимают что нельзя просто так что угодно в параметры передавать, такой usecase вы тоже предлагаете в jdbc/pdo встроить?

Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

33. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от Аноним (??) on 16-Окт-14, 15:05 
>по уму в том же drupal должно бы быть
> 2 варианта
> In ( :param )
> и
> in ( #суперидентификатонедопустимыйдляsqlзапроса#paramscollection )

хм почему то думал что in ( :param ) это из mysql -кого синтаксиса, по сути в друпале и есть второй вариант, просто с ошибкой в реализации.

Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

30. "Критическая уязвимость в системе управления web-контентом Dr..."  –1 +/
Сообщение от Zontus on 16-Окт-14, 14:51 
PERL DBI
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

37. "Критическая уязвимость в системе управления web-контентом Dr..."  +1 +/
Сообщение от Прохожий (??) on 16-Окт-14, 17:40 
Perl-Pg и нормальная логика SQL с хранимыми процедурами, триггерами и т.д. Неубиваемая штука. Только все больше обрастает функционалом и обрастает.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

45. "Критическая уязвимость в системе управления web-контентом Dr..."  +/
Сообщение от chuk (ok) on 17-Окт-14, 20:00 
Вот дурачье! На кой вообще было изобретать 7-ю версию, которое ничего общего не имеет с 6-й?
6-я - лучшая из Друпалов!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру