Сегодня рассмотрим серьезную уязвимость CVE-2022-33140, связанную с авторизациями и обнаруженную в последнем выпуска Apache NiFi 1.16.3, о котором мы писали здесь. Почему проблема с ShellUserGroupProvider оказалась так значительна и что сделано для ее устранения.
Уязвимость CVE-2022-33140 в Apache NiFi 1.16.3
В свежем релизе Apache NiFi 1.16.3, который вышел 15 июня 2022 года, была обнаружена уязвимость CVE-2022-33140, степень серьезности которой отмечен уровнем High. Эта уязвимость, суть которой в неправильной нейтрализации элементов команды в провайдере групп пользователей оболочки (Improper Neutralization of Command Elements in Shell User Group Provider), затронула как сам фреймворк версий 1.10.0–1.16.2 в Linux и macOS, так и реестр Apache NiFi версий с 0.6.0 по 1.16.2 в Linux и macOS.
Проблема сводится к тому, что необязательный ShellUserGroupProvider не нейтрализует аргументы для команд разрешения групп, позволяя внедрять команды операционной системы на платформах Linux и macOS. Напомним, в Apache NiFi провайдер авторизации ShellUserGroupProvider получает сведения о пользователе и группе из Unix-подобных систем с помощью команд оболочки. Он выполняет различные конвейеры оболочки с помощью таких команд, как getent в Linux и dscl в MacOS. Поддерживаемые системы могут быть настроены на получение пользователей и групп из внешнего источника, такого как LDAP или NIS. В этих случаях команды оболочки вернут этих внешних пользователей и группы. Это предоставляет администраторам еще один механизм для интеграции пользовательских и групповых служб каталогов.
По умолчанию ShellUserGroupProvider не включен в конфигурацию NiFi. Внедрение команды требует, чтобы ShellUserGroupProvider был одним из включенных провайдеров групп пользователей в конфигурации Authorizers. Для внедрения команд также требуется аутентифицированный пользователь с повышенными привилегиями. Для Apache NiFi требуется аутентифицированный пользователь с авторизацией для изменения политик доступа для выполнения команды. Для реестра Apache NiFi требуется аутентифицированный пользователь с полномочиями на чтение групп пользователей для выполнения команды. Как и LdapUserGroupProvider, ShellUserGroupProvider закомментирован в файле authorizers.xml.
ShellUserGroupProvider имеет следующие свойства:
- Initial Refresh Delay (Начальная задержка обновления) — продолжительность начальной задержки перед первым обновлением пользователя и группы. (т.е. 10 секунд). По умолчанию 5 минут;
- Refresh Delay (Задержка обновления) — Продолжительность задержки между обновлением каждого пользователя и группы. (т.е. 10 секунд). По умолчанию 5 минут.
- Exclude Groups (Исключить группы) — Регулярное выражение, используемое для исключения групп. Значение по умолчанию — », что означает, что никакие группы не исключаются.
- Exclude Users (Исключить пользователей) — Регулярное выражение, используемое для исключения пользователей. Значение по умолчанию — », что означает, что пользователи не исключены.
Возвращаясь к уязвимости CVE-2022-33140, отметим, что ShellUserGroupProvider включает методы для обновления одного пользователя или одной группы, когда сущность не найдена. Обновление одного пользователя не требуется, поскольку информация доступна из начального перечисления известных пользователей. Метод обновления одной группы не работает должным образом, поскольку метод UserGroupProvider.getGroup() получает идентификатор UUID, специфичный для NiFi. Но иметь UUID группы недостаточно для выполнения поиска одной группы с использованием доступных команд.
Уязвимость была оперативно замечена одним из ранних пользователей нового релиза и задокументирована. А потому в тот же день вышло решение проблемы — команды оболочки из ShellUserGroupProvider, которые получали пользовательские аргументы, были полностью удалены как из самого Apache NiFi, так и из реестра. Устранены методы обновления для одного пользователя или группы из ShellUserGroupProvider. Обновление одного пользователя не требуется, поскольку информация доступна из начального перечисления известных пользователей.
Узнайте больше про тонкости администрирования и эксплуатации Apache NiFi для построения эффективных ETL-конвейеров потоковой аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники