The OpenNET Project / Index page

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



"В WordPress 4.8.3 устранена уязвимость, которая может привес..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"В WordPress 4.8.3 устранена уязвимость, которая может привес..."  +/
Сообщение от opennews (ok), 01-Ноя-17, 11:23 
В системе управления web-контентом WordPress выявлена уязвимость (https://blog.ircmaxell.com/2017/10/disclosure-wordpress-wpdb... позволяющая выполнить произвольные SQL-запросы на сервере. Уязвимость устранена (https://wordpress.org/news/2017/10/wordpress-4-8-3-security-... в выпуске 4.8.3.  


Проблема связана с генерацией функцией $wpdb->prepare() запросов, допускающих совершение атак через подстановку SQL-запросов из-за отсутствия экранирования последовательности "%s" функцией esc_sql(). Утверждается, что базовая часть WordPress напрямую не подвержена атаке, но уязвимость может проявиться в плагинах и темах оформления  при наличии двойного вызова prepare в сочетании с подстановками через "%s". Например, если в коде


     $value_clause = $wpdb->prepare( " AND meta_value = %s", $meta_value );
     $object_ids = $wpdb->get_col( $wpdb->prepare( "SELECT $type_column FROM $table WHERE meta_key = %s $value_clause", $meta_key ) );


в качестве значения $meta_value пользователь передаст строку " %s ", а $meta_key - массив ['dump', ' OR 1=1 /*'], то благодаря двойной подстановке через оператор "%s" в первом prepare() вместо %s c учётом добавленного экранирования кавычками будет подставлена строка " '%s' ", в во втором prepare() эта строка приведёт к подстановке второго элемента массива из $meta_key. В итоге будет подготовлен SQL-запрос:

   SELECT type FROM table WHERE meta_key = 'dump' AND meta_value = '' OR 1=1 /*'


Примечательно, что более общая уязвимость, связанная с подстановкой SQL-кода через манипуляцию значениями с символом "%", вначале была исправлена в версии 4.8.2, но для сохранения совместимости с кодом плагинов была оставлена возможность использования последовательности "%s", что не устранило проблему, а лишь потребовало изменения метода атаки. 20 сентября, спустя день после релиза 4.8.2, разработчикам был продемонстрирован (https://blog.ircmaxell.com/2017/10/disclosure-wordpress-wpdb... иной способ атаки, но выявившему проблему исследователю потребовалось 5 недель, чтобы доказать наличие уязвимости и добиться выпуска исправления.

URL: https://wordpress.org/news/2017/10/wordpress-4-8-3-security-.../
Новость: http://www.opennet.me/opennews/art.shtml?num=47481

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

Оглавление

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

1. Сообщение от _hide_ (ok), 01-Ноя-17, 11:23   +3 +/
Веберы действительно столь упрямые, чтобы не добавлять промежуточный слой перед любой генерацией SQL запросов?
3 версия вышла в 2010, 4 в 2014 году!
Только мне кажется, что это даже не смешно? До сих пор работают плагины со 2-ей версии? Или просто разрабатывают чрезвычайно упертые мудрые люди?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #3

2. Сообщение от istepan (ok), 01-Ноя-17, 11:40   +4 +/
Там есть куча плагинов которые уже давно не разрабатывают, но люди пользуются. Вот в WordPress и стараются всеми силами сохранить совместимость.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #4

3. Сообщение от freehckemail (ok), 01-Ноя-17, 11:50   –1 +/
> Веберы действительно столь упрямые, чтобы не добавлять промежуточный слой перед любой генерацией SQL запросов?

Я спрошу мягко, чтобы никого не обидеть: а много ты знаешь адекватных вебников?

> Только мне кажется, что это даже не смешно?

Не одному, поверь. Дыры в WP - уже настолько притча во языцех, что даже порой переплёвывает шуточки про дыры в Windows.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #14

4. Сообщение от YetAnotherOnanym (ok), 01-Ноя-17, 12:14   –4 +/
Это медвежья услуга, имхо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #6

5. Сообщение от trolleybusemail (?), 01-Ноя-17, 13:03   +/
Что, подстановку через ? вместо %s не осилили?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9

6. Сообщение от пох (?), 01-Ноя-17, 13:08   –3 +/
> Это медвежья услуга, имхо.

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

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

Или просто вайпнуть форум (надеюсь, ты бэкапы-то делаешь, прежде чем рассуждать о том какие плохие кодеры в вордпрессе?) и нагадить на главной. То есть в самом худшем случае - если ты не неуловимый джо, кто-то все же сумел нетеоретически (!) воспользоваться уязвимостью - сведется к варианту из первого абзаца.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #7, #13

7. Сообщение от YetAnotherOnanym (ok), 01-Ноя-17, 13:54   –2 +/
Рухнет сайт или не рухнет - мне пох, не моя епархия. Да и рушится там нечему - одна страничка с контактами и прайсом в xls, экспортируемым из 1с.
Да, бэкапы есть - пятничные полные и ежедневные ночные и обеденные инкрементальные.
А лохи, у которых сайт на wp, должны страдать, такова их лоховская участь. И "рухнет" - это не самое худшее. Кража номеров кредиток, слив адресов спамерам или распространение вирусов гораздо хуже.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #8

8. Сообщение от пох (?), 01-Ноя-17, 14:39   –2 +/
> Рухнет сайт или не рухнет - мне пох, не моя епархия.

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

> Да и рушится там нечему - одна страничка с контактами и прайсом в xls, экспортируемым из
> 1с.

тогда и sql injection некуда запихнуть. И модулей никаких нет.

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

9. Сообщение от Comdiv (ok), 01-Ноя-17, 15:40   +/
Ошибки на то и ошибки, чтобы даже зная как надо, сделать что-то не то.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #5 Ответы: #11

10. Сообщение от Kodir (ok), 01-Ноя-17, 18:08   –1 +/
SQL injection существует десятки лет. Неужели похапасты настолько тупые, что не перепроверили свой позорный код за столько лет?? Уже даже не смешно читать про SQL с прямой подстановкой данных.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #12

11. Сообщение от Kodir (ok), 01-Ноя-17, 18:10   +1 +/
Это слишком древнаяя и широко освещённая ошибка, чтобы в 21 веке иметь её в коде. Код с подобными проблемами автоматом считается "лабуховским".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #15

12. Сообщение от Аноним (-), 01-Ноя-17, 19:26   +1 +/
Не хватает совета мудрых хеловорлдщиков, что поделать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

13. Сообщение от Аноним (-), 01-Ноя-17, 21:58   +2 +/
> ну да, ну да - давай у тебя сайт просто рухнет и полежит, с недельку, пока ты разбираешься - каким плагином это вызвано, и можно ли его хотя бы временно отключить, или надо пол-сайта переделать.

То есть "стейджин" - это для трусов?

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

14. Сообщение от _hide_ (ok), 02-Ноя-17, 13:39   +1 +/
>>> Я спрошу мягко, чтобы никого не обидеть: а много ты знаешь адекватных вебников?

Вообще такие встречаются. Упрямые, но ошибки свои исправляют. Хотя признают только перед исправлением (сообщили о проблеме - нет тут ошибки... исправил - да была ошибка, исправил. но таких редко встречаю)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #16

15. Сообщение от Comdiv (ok), 02-Ноя-17, 16:41   +/
Если ошибка легко достижима, то она будет проявляться вне зависимости от того, насколько она древняя и широко освещённая. Переполнение буфера в Си - это тоже древняя и широко освещённая ошибка, но их находили и будут находить и использовать в своих целях.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

16. Сообщение от freehckemail (ok), 02-Ноя-17, 18:28   +/
Да, непризнание ошибок у них чаще всего. Пока не разжуёшь всё от А до Я, пока чуть ли не покажешь в какой строке ошибка -- тяжело добиться выполнения задачи. В общем-то без этого нюанса я их и вовсе не встречал никогда. Так что я соглашусь с Вами -- если это всё, что за вебником замечено -- то это хороший, годный, грамотный вебник.

Но увы, такие именно что, как Вы изволили выразиться "встречаются". В основном же уровень их общей безграмотности ужасает. Когда вёл семинары, помнится, сразу вбрасывал студентам мысль, что если хотят научиться нормальной разработке, от веба надо поначалу держаться подальше. :/

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14

17. Сообщение от KonstantinB (ok), 02-Ноя-17, 19:44   +1 +/
Забавно, что среди комментирующих про тупых похапешников никто так и не понял суть проблемы.

Читать еще раз внимательно - "благодаря двойной подстановке".

А почему не prepared statements - это понятно: обратная совместимость с плагинами, написанными 15 лет назад. Без плагинов этот вордпресс сразу станет никому не нужен, потому и тянется, прямо скажем, не самая удачная архитектура времен начала нулевых.

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


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

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




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

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