Какие ошибки и угрозы нарушения безопасности были обнаружены в Apache AirFlow в 2023 году: обзор уязвимостей и способы их устранения.
9 уязвимостей среднего уровня серьезности
В текущем году в Apache AirFlow было обнаружено 15 уязвимостей разной степени критичности. К наименее серьезным с маркировкой Medium и оценкой от 4 до 6.9 по рейтингу CVSS (Common Vulnerability Scoring System) версии 3 относятся следующие:
- CVE-2023-40611 – возможность аутентифицированных и авторизованных пользователей с правами на просмотр DAG изменять некоторые подробные значения его запуска при отправке примечаний. Это может привести к изменению параметров конфигурации, даты старта конвейера обработки данных и пр. Уязвимости подвержены версии Apache AirFlow до 2.7.1.
- CVE-2023-40712 – возможность аутентифицированных пользователей, имеющих доступ к просмотру задачи или DAG в пользовательском интерфейсе AirFlow, создать URL-адрес, что может привести к раскрытию секретной конфигурации задачи. Как и в предыдущем случае, уязвимость устранена в версии 2.7.1 и позже.
- CVE-2023-39441 – почтовые провайдеры Apache AirFlow, SMTP до версии 1.3.0 и IMAP до версии 2.7.0 подвержены уязвимости проверки сертификата OpenSSL. Контекст SSL по умолчанию с библиотекой SSL не проверял сертификат X.509 сервера, а принимал любой сертификат, что могло привести к раскрытию учетных данных почтового сервера или содержимого почты. Это можно классифицировать как MITM-атаку (Man-in-the-Middle), когда, когда злоумышленник тайно ретранслирует и при необходимости изменяет связь между двумя сторонами, которые считают, что они непосредственно общаются друг с другом. Чтобы избежать этой опасности, следует обновить Apache AirFlow до версии 2.7.0 или новее, а также установить IMAP-провайдера не ниже версии 3.3.0 и SMTP-провайдера не ниже 1.3.0 или новее, чтобы снизить риск, связанный с этой уязвимостью.
- CVE-2023-36543 — возможность аутентифицированного пользователя использовать созданный ввод, чтобы приводит к зависанию текущего запроса. Уязвимости подвержены версии фреймворка до 2.6.3.
- CVE-2023-35908 – возможность несанкционированного просмотра DAG через обращение по URL-адресу в версиях фреймворка до 2.6.3.
- CVE-2023-22888 — возможность аутентифицированного пользователя вызвать сбой в работе сервиса до версии до 2.6.3, манипулируя параметром run_id.
- CVE-2023-22887 – возможность осуществлять несанкционированный доступ к файлам за пределами предполагаемой структуры каталогов, манипулируя параметром run_id. Этой уязвимости подвержены версии фреймворка до 2.6.3.
- CVE-2023-35005 — В Apache AirFlow с версии 2.5.0 до 2.6.2 в определенных ситуациях пользователю показывались некоторые потенциально конфиденциальные значения. Эта уязвимость смягчается тем, что конфигурация по умолчанию не отображается в пользовательском интерфейсе, если для конфигурации веб-сервера Expos_config установлено значение non-sensitivity-only.
- CVE-2023-29247 – уязвимость страницы сведений об экземпляре задачи в пользовательском интерфейсе для межсайтового скриптинга (XSS, Cross-Site Scripting). Эта проблема, когда в выдаваемую веб-системой страницу злоумышленник может внедрить вредоносный код, который будет взаимодействовать со сторонним веб-сервером, затрагивает Apache AirFlow до версии 2.6.0.
Критические и очень важные уязвимости Apache AirFlow
Высокой степенью серьезности отмечены 3 потенциальные опасности. Одной из них является CVE-2023-37379, характерная для версий фреймворка до 2.7.0. Этой уязвимостью может воспользоваться аутентифицированный пользователь, обладающий правами редактирования соединения, чтобы получить доступ к информации о нем и вызвать DDoS-атаку, используя функцию тестового соединения и отправляя множество запросов к серверу. Также злоумышленник может использовать эту уязвимость для установления вредоносных соединений с сервером. Настоятельно рекомендуется обновить Apache AirFlow до версии 2.7.0 или новее, чтобы избежать этой опасности. Кроме того, администраторам рекомендуется проверять и корректировать права пользователей, чтобы ограничить доступ к конфиденциальным функциям, уменьшая пространство потенциальных атак.
Еще одной уязвимостью с высоким уровнем серьезности является CVE-2023-40273, связанная с фиксацией сеанса. Она позволяла аутентифицированному пользователю продолжать доступ к веб-серверу AirFlow даже после того, как пароль пользователя был сброшен администратором, вплоть до истечения сеанса пользователя. Кроме ручной очистки базы данных сеанса (для серверной части) или изменения Secure_key и перезапуска веб-сервера, не было никаких механизмов для принудительного выхода пользователя из системы. Из-за этого при использовании серверной части сеанса базы данных существующие сеансы пользователя становятся недействительными при сбросе пароля пользователя. При использовании серверной части сеанса SecureCookie сеансы продолжают считаться валидными и по-прежнему требуют изменения ключа безопасности и перезапуска веб-сервера, а также выхода из системы всех других пользователей. Но пользователь, сбрасывающий пароль, информируется об этом с помощью всплывающего сообщения в веб-GUI. Рекомендуется обновить AirFlow до версии 2.7.0 или новее, чтобы снизить риск, связанный с этой уязвимостью.
Наконец, уязвимость CVE-2023-39508 в AirFlow до версии 2.6.0 позволяла выполнение с ненужными привилегиями, раскрывая конфиденциальную информацию несанкционированному субъекту. Функция запуска задачи (Run Task) позволяет аутентифицированному пользователю обойти некоторые установленные ограничения, выполнять код в контексте веб-сервера и получить доступ к некоторым DAG. Чтобы устранить эту опасность, функция запуска задачи полностью удалена во фреймворке начиная с версии 2.6.0.
Что касается критических уязвимостей, в 2023 году их было обнаружено 2. В частности, CVE-2023-22884 приводит к эскалации привилегий из-за SQL-инъекций в MySQL-провайдере до версии 4.0.0 для Airflow до 2.5.1. Внедрение команд — это тип атаки, которая происходит, когда злоумышленник может манипулировать выполнением команды, внедряя вредоносный код в приложение. В контексте Apache AirFlow эта уязвимость должна позволить злоумышленникам выполнять произвольные команды на базовом хосте. В Linux для быстрого запуска необходимо знать идентификатор пользователя хоста и установить для идентификатора группы значение 0. Иначе файлы, созданные в DAG, журналах и плагинах, будут созданы с правами root-пользователя.
Команда загрузки данных (LOAD DATA) в MySQL уязвима по своей конструкции, поскольку можно загружать файлы, расположенные как на хосте сервера, так и на хосте клиента. Это позволено, т.к. работает намного быстрее, чем инструкции INSERT. Однако, такая вольность может привести к удалению таблицы, если вместо заполнителя в загружаемом файле присутствует команда DROP TABLE.
Еще одной критической уязвимостью, выявленной в 2023 году, стала CVE-2023-25754. Она также связана с эскалацией привилегий и вызвана ошибкой переключения контекста привилегий в AirFlow до версии 2.6.0. Причина опасности в отсутствии проверки разрешений в файле File Task Handler. Злоумышленник может использовать логи фреймворка, чтобы вызвать эту уязвимость, поскольку разрешения по умолчанию настроены на олицетворение group-writeable. Разрешения журнала особенно важны при использовании олицетворения, когда логи пишутся другим пользователем. Самый безопасный способ настройки в этом случае — добавить обоих пользователей в одну группу и сделать ее группой по умолчанию для обоих пользователей. Журналы, доступные для групповой записи, используются в AirFlow по умолчанию и имеют разрешение 0o777. Чтобы повысить безопасность (без олицетворения), можно изменить разрешение на 0o755, чтобы сделать логи доступными для записи только владельцу. А значение 0o700 ограничивает доступ на чтение только для владельца.
Узнайте больше про Apache AirFlow и его практическое использование в дата-инженерии и аналитике больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники