CVE-2023-49103
ownCloud ownCloud graphapi
2023-11-30
ownCloud graphapi contains an information disclosure vulnerability that can reveal sensitive data stored in phpinfo() via GetPhpInfo.php, including administrative credentials.
Технический анализ и план устранения
Суть уязвимости
Уязвимость CVE-2023-49103 (CVSS 10.0) заключается в раскрытии конфиденциальной информации через компонент graphapi в ownCloud. Библиотека содержит файл GetPhpInfo.php, который при обращении к нему выводит результаты функции phpinfo().
В контексте контейнеризированных сред (Docker) это приводит к утечке всех переменных окружения, которые могут включать: * Пароли администратора ownCloud. * Учетные данные базы данных. * Ключи доступа к объектным хранилищам (S3 Access Keys). * Лицензионные ключи и секреты почтовых серверов.
Уязвимость критична, так как не требует аутентификации для эксплуатации.
Как исправить
Основным способом устранения является удаление уязвимого файла и обновление приложения graphapi до версии 0.3.1 или выше.
- Перейдите в директорию с установленным ownCloud (путь может отличаться в зависимости от вашей инсталляции):
cd /var/www/owncloud/apps/graphapi
- Удалите файл
GetPhpInfo.php:
rm vendor/microsoft/microsoft-graph/tests/GetPhpInfo.php
- Обновите приложение
graphapiчерез интерфейс администратора или с помощью утилитыocc:
sudo -u www-data php occ market:upgrade graphapi
- Измените все секреты, которые могли быть скомпрометированы (пароль администратора, пароль БД, S3 ключи).
Временные меры
Если немедленное обновление невозможно, примените следующие меры для блокировки доступа к файлу.
Вариант 1: Блокировка через конфигурацию Apache (.htaccess) Добавьте следующие строки в конфигурационный файл:
<Files "GetPhpInfo.php">
Order allow,deny
Deny from all
</Files>
Вариант 2: Блокировка через Nginx Добавьте блок location в конфигурацию сервера:
location ~* GetPhpInfo.php {
deny all;
return 404;
}
Вариант 3: Отключение функции phpinfo в php.ini Добавьте функцию в список запрещенных:
disable_functions = phpinfo
Вариант 4: Для Docker-инсталляций
Перезапустите контейнеры, предварительно удалив файл через volume или пересобрав образ без указанного файла. Обязательно смените переменные окружения в docker-compose.yml.