CVE-2022-24112
Apache APISIX
2022-08-25
Apache APISIX contains an authentication bypass vulnerability that allows for remote code execution.
Технический анализ и план устранения
Суть уязвимости
CVE-2022-24112 — это критическая уязвимость в Apache APISIX (версии до 2.12.1), связанная с обходом аутентификации в компоненте batch-requests.
Проблема заключается в том, что плагин batch-requests позволяет отправлять несколько HTTP-запросов в одном теле POST-запроса. Из-за некорректной конфигурации доступа к Admin API через этот плагин, злоумышленник может отправить специально сформированный запрос, который обходит проверку IP-адреса (по умолчанию разрешен только 127.0.0.1) и ключа администратора (X-API-KEY).
Это позволяет атакующему удаленно создавать новые маршруты (routes) с использованием плагина serverless-pre-function или script, что ведет к выполнению произвольного кода (RCE) на сервере с правами пользователя apisix.
Как исправить
Основным способом устранения уязвимости является обновление Apache APISIX до безопасной версии.
- Обновите Apache APISIX до версии 2.12.1 или выше (для ветки 2.12.x) или до 2.10.4 (для ветки LTS).
Если вы используете пакетный менеджер (например, в Debian/Ubuntu):
apt update && apt upgrade apache-apisix
Если вы используете Docker, обновите тег образа в вашем docker-compose.yaml или манифестах Kubernetes:
docker pull apache/apisix:2.12.1
- После обновления перезапустите сервис:
apisix reload
Временные меры
Если немедленное обновление невозможно, необходимо применить следующие защитные меры:
- Отключите плагин
batch-requestsв конфигурационном файлеconfig.yaml, удалив его из списка активных плагинов:
plugins:
- ...
# - batch-requests # Закомментируйте или удалите эту строку
-
Если плагин необходим, измените значение
real_ip_fromв конфигурации, чтобы ограничить доверенные источники, и убедитесь, что доступ к Admin API строго ограничен на уровне сетевого экрана (Firewall/Security Groups). -
Измените стандартный
admin_keyвconfig.yaml, если вы этого еще не сделали, чтобы предотвратить использование значений по умолчанию:
deployment:
admin:
admin_key:
- name: "admin"
key: "GENERATE_NEW_STRONG_KEY_HERE"
role: admin
- Перезагрузите конфигурацию APISIX для вступления изменений в силу:
apisix init
apisix reload