Исправлены уязвимости высокого приоритета в плагине Uncode Core

админ

Введение

7 мая 2024 года WP-Firewall, ведущая организация по консультированию по безопасности, опубликовала подробный отчет о критических уязвимостях, обнаруженных в плагине Uncode Core. Если вы являетесь пользователем Uncode, крайне важно обновить плагин ядра как минимум до версии 2.8.9, чтобы защитить свой сайт WordPress от потенциальных атак. В этой статье мы рассмотрим особенности этих уязвимостей, их последствия и шаги, предпринимаемые для их устранения.

О плагине Uncode Core

Плагин Uncode Core, разработанный Undsgn, является неотъемлемым компонентом темы Uncode — очень популярной премиум-темы для сайтов WooCommerce с более чем 110 000 продаж на ThemeForest. Тема Uncode славится своим пиксельным дизайном, что делает ее идеальной для различных веб-сайтов, включая портфолио, агентства, фрилансеров, блоги и интернет-магазины.

Уязвимости безопасности

Исследователи безопасности WP-Firewall выявили две существенные уязвимости в плагине Uncode Core:

1. Аутентифицированное удаление произвольных файлов и каталогов

Описание: Эта уязвимость позволяет любому аутентифицированному пользователю с ролью подписчика или выше удалять произвольные каталоги на сервере. Проблема заключается в функции `delete_download`, в которой отсутствуют надлежащие проверки разрешений и случайных чисел. Эта функция прикреплена к действию `wp_ajax_uncodefont_delete_download`, что позволяет аутентифицированным пользователям использовать ее.

Технические подробности:

функция delete_download() {
если (isset($_REQUEST['font_family'])) {
$семейство_шрифтов = $_REQUEST['семейство_шрифтов'];
$font_dir = конечный слэшит($этот->каталог_шрифта).$семейство_шрифтов;
$fontkit_zip = $font_dir.'.zip';

если (@file_exists($fontkit_zip)) {
если (!@unlink($fontkit_zip)) {
эхо json_encode(массив(
'error' => sprintf( esc_html__( 'Не удалось удалить @fontface kit zip %1$s.', 'uncode-core' ), $fontkit_zip )
));
умереть();
}
}

// Невозможно удалить каталог, потому что unzip_file, который его создал, использует WP_Filesystem. Поэтому мы используем WP_Filesystem для его удаления.
$this->setup_wp_filesystem();

глобальная $wp_filesystem;
если (isset($wp_filesystem)) {
$delete_dir = $wp_filesystem->delete($font_dir, true);
если (!$delete_dir) {
echo json_encode(array('error' => $delete_dir['error']));
умереть();
}
}

echo json_encode(array('success' => "Загрузка удалена"));
}
умереть();
}
включает в себя/font-system/font-system.php, функция delete_download()

Функция создает переменную `$font_dir` из введенных пользователем данных (`$_REQUEST['font_family']`) без очистки, что позволяет выполнять обход каталогов и произвольное удаление.

2. Аутентифицированное повышение привилегий

Описание: Эта уязвимость позволяет любому аутентифицированному пользователю с минимальной ролью подписчика повысить свои привилегии до любой роли на сайте WordPress. Это связано с небезопасным обновлением WP Option в функции `save_option`, в которой отсутствуют надлежащие проверки разрешений.

Технические подробности:

публичная функция save_option() {
если ( isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], 'uncode-core-settings-nonce' ) ) {
если ( isset( $_POST['value'] ) && $_POST['value'] && isset( $_POST['option_id'] ) && $_POST['option_id'] ) {
$autoload = isset( $_POST['autoload'] ) && $_POST['autoload'] === 'true' ? true : false;
update_option( $_POST['option_id'], $_POST['value'], $autoload );
---------- РЕЗАТЬ ЗДЕСЬ ----------
включает в себя/core-settings/class-core-settings.php, функция save_option()

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

Патч

Для устранения этих уязвимостей разработчики плагина Uncode Core выпустили версию 2.8.9, которая включает в себя следующие исправления:

Аутентифицированное удаление произвольных файлов и каталогов: Реализованы проверки разрешений и одноразовых значений в функции `delete_download`.

Аутентифицированное повышение привилегий: Применены проверки разрешений и одноразовых значений в функции `save_option`, а также добавлена проверка белого списка для ключей параметров.

Заключение

Обеспечение безопасности вашего сайта WordPress подразумевает постоянное обновление с помощью последних исправлений и рекомендаций по безопасности. Уязвимости в плагине Uncode Core подчеркивают важность внедрения надлежащих проверок разрешений и случайных чисел для любых конфиденциальных действий. Всегда очищайте вводимые пользователем данные и ограничивайте область того, что может быть обновлено или удалено с помощью действий пользователя.

Более подробную информацию вы можете прочитать в полном обзоре безопасности на сайте WP-Firewall. здесь.

Оставайтесь в безопасности

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


wordpress security update banner

Получайте WP Security Weekly бесплатно 👋
Зарегистрируйтесь сейчас
!!

Подпишитесь, чтобы каждую неделю получать обновления безопасности WordPress на свой почтовый ящик.

Мы не спамим! Читайте наши политика конфиденциальности для получения более подробной информации.