В WordPress 4.8.3 устранена уязвимость, которая может привести к подстановке SQL-кода

1 ноября 2017 года

В системе управления web-контентом WordPress выявлена уязвимость, позволяющая выполнить произвольные SQL-запросы на сервере. Уязвимость устранена в выпуске 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, разработчикам был продемонстрирован иной способ атаки, но выявившему проблему исследователю потребовалось 5 недель, чтобы доказать наличие уязвимости и добиться выпуска исправления.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «В WordPress 4.8.3 устранена уязвимость, которая может привести к подстановке SQL-кода», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.