CVE-2023-23752
Joomla! Joomla!
2024-01-08
Joomla! contains an improper access control vulnerability that allows unauthorized access to webservice endpoints.
Технический анализ и план устранения
Суть уязвимости
CVE-2023-23752 представляет собой критическую уязвимость неправильного управления доступом (Improper Access Control) в CMS Joomla! версий с 4.0.0 по 4.2.7.
Проблема заключается в некорректной реализации проверок безопасности в API-интерфейсах (Webservice endpoints). Злоумышленник может отправить специально сформированный HTTP-запрос к REST API, что позволит обойти аутентификацию и получить доступ к конфиденциальной информации.
Наиболее опасным последствием является возможность утечки учетных данных базы данных (хост, логин, пароль) и других системных настроек через эндпоинты:
- /api/index.php/v1/config/application
- /api/v1/config/application
Как исправить
Единственным надежным способом устранения уязвимости является обновление CMS до актуальной безопасной версии.
- Создайте полную резервную копию файлов сайта и базы данных.
- Обновите Joomla! до версии 4.2.8 или выше.
Если вы используете CLI для обновления:
php cli/joomla.php core:update
Если обновление производится через панель администратора: 1. Перейдите в раздел System (Система). 2. Выберите Update -> Joomla. 3. Нажмите Check for Updates (Проверить обновления). 4. Установите доступное обновление.
Временные меры
Если немедленное обновление невозможно, необходимо ограничить доступ к API на уровне веб-сервера или сетевого экрана.
Вариант 1: Ограничение доступа через .htaccess (для Apache)
Добавьте следующие строки в файл .htaccess в корневой директории сайта, чтобы разрешить доступ к API только с доверенных IP-адресов:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/api/ [NC]
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Вариант 2: Ограничение доступа в конфигурации Nginx Добавьте блок в конфигурационный файл вашего сайта:
location /api/ {
allow 123.123.123.123;
deny all;
try_files $uri $uri/ /api/index.php?$args;
}
Вариант 3: Смена пароля базы данных
В случае подозрения на компрометацию (наличие запросов к /api/v1/config/application в логах), после обновления Joomla! обязательно смените пароль пользователя базы данных в панели управления хостингом и обновите его в файле configuration.php.