Admin Future
241 subscribers
51 photos
1 video
4 files
120 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
🌐 WordPress CVE-2026-87902 — 10-летняя дыра в ядре. В активной эксплуатации с первых часов

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

📌 ФАКТЫ
Уязвимость: CVE-2026-87902 (CVSS 4.0: 9.2, CWE-98).

Масштаб катастрофы: уязвимы все версии с WordPress 4.7.0 по 7.1.1 — это почти 10 лет релизов.

Где поправлено: релиз 7.1.2 + выпущены бэкпорты во все поддерживаемые ветки вплоть до 4.7.

В чём суть бага: функция get_page_template() в wp-includes/template.php парсила имя шаблона напрямую из параметра pagename без вызова validate_file(). Итог — неаутентифицированный Local File Inclusion (LFI).

Автообновления раскатывали фикс с 22 сентября, но дыра уже внесена в CISA KEV. Сканирование и эксплуатация начались практически сразу после публикации адвайзори.

⚠️ КОГДА LFI ПРЕВРАЩАЕТСЯ В ПОЛНЫЙ RCE
Для удаленного выполнения кода злоумышленнику требуется совпадение трех факторов:

Каталог в теме: внутри активной темы есть директория верхнего уровня с префиксом page- (типичная история для дефолтных тем WordPress и популярных кастомных шаблонов).

Файл-трамплин: на сервере присутствует пригодный для инклуда PHP-скрипт (классический вектор — pearcmd.php из состава PEAR).

Окружение PHP: включена директива register_argc_argv = On. Она по умолчанию активна в официальных Docker-образах PHP, а также на хостингах с cPanel на версиях PHP ниже 8.5.

🛠 БЫСТРЫЙ ЧЕК ЧЕРЕЗ КОНСОЛЬ
Bash
# 1. Проверяем текущую версию WordPress
grep "wp_version =" /var/www/*/wp-includes/version.php
# или через WP-CLI:
wp core version --path=/var/www/site

# 2. Проверяем фактор риска №1 (каталоги page-* в активной теме)
ls -d /var/www/site/wp-content/themes/*/page-*/ 2>/dev/null

# 3. Ищем pearcmd.php на хосте
find / -name pearcmd.php 2>/dev/null

# 4. Проверяем флаг register_argc_argv
php -i | grep "register_argc_argv"

# 5. Грепаем логи веб-сервера на попытки пробить path traversal
grep -E "pagename=.*(\.\./|%2e%2e)" /var/log/nginx/access.log* /var/log/apache2/access.log* 2>/dev/null

🛡 ЧТО ДЕЛАТЬ (ЧЕКЛИСТ)
Обновиться: накатить 7.1.2 (или минорный секьюрити-патч для вашей ветки):

Bash
wp core update --path=/var/www/site

Проверить автообновления: убедитесь, что в wp-config.php не захардкожены флаги AUTOMATIC_UPDATER_DISABLED = true или WP_AUTO_UPDATE_CORE = false.

Харденинг (если немедленный патч невозможен): принудительно выставить register_argc_argv = Off в php.ini и полностью снести пакет PEAR, если он не задействован в проекте.

Форензика при совпадении условий: если все три фактора RCE сошлись, а сайт не был обновлен до 22 сентября — ищите новосозданные .php файлы и веб-шеллы в директории wp-content/uploads/.

Уверенность в том, что «сайт на WP сам обновляется в фоне» — опасная иллюзия, пока вы лично не убедились в версии через CLI. Делов на одну строчку в терминале.

#wordpress #security #web #cve #kev #lfi #rce #php #sysadmin #admin_future