CVE-2023-27524

Apache Superset

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2024-01-08

Официальное описание

Apache Superset contains an insecure default initialization of a resource vulnerability that allows an attacker to authenticate and access unauthorized resources on installations that have not altered the default configured SECRET_KEY according to installation instructions.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2023-27524 связана с использованием небезопасного значения по умолчанию для параметра SECRET_KEY в Apache Superset. В версиях до 2.1.0 включительно, если администратор не изменил стандартный ключ (например, \x02\x01thisismyscretkey\x01\x02\x03\x04), злоумышленник может использовать его для подделки сессионных cookie-файлов (Flask session cookies). Это позволяет атакующему получить права администратора в приложении, удаленно выполнять код (RCE) через функции доступа к базам данных и просматривать конфиденциальную информацию.

Как исправить

Для устранения уязвимости необходимо сгенерировать уникальный криптографически стойкий ключ и обновить конфигурацию приложения.

  1. Сгенерируйте новый секретный ключ:
openssl rand -base64 42

  1. Найдите файл конфигурации superset_config.py (путь зависит от способа установки, обычно в PYTHONPATH или в директории приложения).

  2. Отредактируйте или добавьте строку с параметром SECRET_KEY, вставив сгенерированное значение:

SECRET_KEY = 'ВАШ_НОВЫЙ_СГЕНЕРИРОВАННЫЙ_КЛЮЧ'

  1. Если вы используете Docker Compose, обновите переменную окружения в файле .env:
SUPERSET_SECRET_KEY=ВАШ_НОВЫЙ_СГЕНЕРИРОВАННЫЙ_КЛЮЧ

  1. Перезапустите сервис Apache Superset для применения изменений:
docker-compose restart superset

  1. Обновите Apache Superset до версии 2.1.0 или выше, где добавлены проверки на использование ключей по умолчанию при запуске.

Временные меры

Если немедленное обновление или изменение конфигурации невозможно, примените следующие защитные механизмы:

  1. Ограничьте доступ к веб-интерфейсу Superset на уровне сетевого экрана (Firewall) или VPN, разрешив подключения только с доверенных IP-адресов.

  2. Проверьте логи приложения на предмет подозрительной активности от учетных записей с правами Admin.

  3. Используйте скрипт для проверки текущего состояния ключа (например, с помощью утилиты flask-unsign), чтобы убедиться, что текущая сессия может быть расшифрована стандартными ключами из публичных списков:

flask-unsign --decode --cookie "ЗНАЧЕНИЕ_ВАШЕЙ_COOKIE"

  1. Настройте мониторинг целостности файлов конфигурации, чтобы предотвратить несанкционированный откат к настройкам по умолчанию.