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 до безопасной версии.

  1. Обновите 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

  1. После обновления перезапустите сервис:
apisix reload

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

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

  1. Отключите плагин batch-requests в конфигурационном файле config.yaml, удалив его из списка активных плагинов:
plugins:
  - ...
  # - batch-requests # Закомментируйте или удалите эту строку

  1. Если плагин необходим, измените значение real_ip_from в конфигурации, чтобы ограничить доверенные источники, и убедитесь, что доступ к Admin API строго ограничен на уровне сетевого экрана (Firewall/Security Groups).

  2. Измените стандартный admin_key в config.yaml, если вы этого еще не сделали, чтобы предотвратить использование значений по умолчанию:

deployment:
  admin:
    admin_key:
      - name: "admin"
        key: "GENERATE_NEW_STRONG_KEY_HERE"
        role: admin

  1. Перезагрузите конфигурацию APISIX для вступления изменений в силу:
apisix init
apisix reload