
Эксплойт для Apache NiFi CVE-2023-34468, нацеленный на уязвимость в версиях 1.21.0 и более ранних, для демонстрации доступа к данным и компрометации системы.
Apache NiFi — это простая в использовании, мощная и надежная система для обработки и распределения данных.
Apache NiFi создан для потоков данных. Он поддерживает высококонфигурируемые ориентированные графы маршрутизации данных, преобразования и логики системного посредничества. Некоторые из его ключевых возможностей включают:
Ознакомьтесь с кратким руководством для разработчиков. Оно содержит информацию о получении локальной копии исходного кода, указания по отслеживанию проблем, а также предупреждения о распространенных проблемах с окружениями разработки.
Более полное руководство по разработке и информацию о внесении вклада в проект вы найдете в Руководстве разработчика NiFi.
Выполните mvn clean install или для параллельной сборки выполните mvn -T 2.0C clean install.
Параллельная сборка на современном оборудовании должна занять около пятнадцати минут.
laptop:nifi myuser$ mvn -T 2.0C clean install
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 115 modules...
...tens of thousands of lines elided...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 09:24 min (Wall Clock)
[INFO] Finished at: 2015-04-30T00:30:36-05:00
[INFO] Final Memory: 173M/1359M
[INFO] ------------------------------------------------------------------------
Выполните mvn clean install -DskipTests, чтобы пропустить выполнение модульных тестов.
Перейдите в каталог nifi-assembly. В каталоге target содержатся бинарные архивы.
laptop:nifi myuser$ cd nifi-assembly
laptop:nifi-assembly myuser$ ls -lhd target/nifi*
drwxr-xr-x 3 myuser mygroup 102B Apr 30 00:29 target/nifi-1.0.0-SNAPSHOT-bin
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 myuser mygroup 144M Apr 30 00:30 target/nifi-1.0.0-SNAPSHOT-bin.zip
Скопируйте nifi-VERSION-bin.tar.gz или nifi-VERSION-bin.zip в отдельный каталог развертывания.
Извлечение дистрибутива создаст новый каталог, названный в честь версии.
laptop:nifi-assembly myuser$ mkdir ~/example-nifi-deploy
laptop:nifi-assembly myuser$ tar xzf target/nifi-*-bin.tar.gz -C ~/example-nifi-deploy
laptop:nifi-assembly myuser$ ls -lh ~/example-nifi-deploy/
total 0
drwxr-xr-x 10 myuser mygroup 340B Apr 30 01:06 nifi-1.0.0-SNAPSHOT
Перейдите в каталог развертывания и выполните следующую команду для запуска NiFi.
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
Запуск bin/nifi.sh start запускает NiFi в фоновом режиме и завершает работу. Используйте --wait-for-init с необязательным таймаутом в
секундах, чтобы дождаться полного запуска перед завершением.
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
Конфигурация по умолчанию генерирует случайные имя пользователя и пароль при запуске. NiFi записывает сгенерированные учетные данные
в журнал приложения, расположенный в logs/nifi-app.log в каталоге установки NiFi.
Следующая команда может использоваться для поиска сгенерированных учетных данных в операционных системах с установленным grep:
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi регистрирует сгенерированные учетные данные следующим образом:
Generated Username [USERNAME]
Generated Password [PASSWORD]
Значение USERNAME будет случайным UUID, состоящим из 36 символов. Значение PASSWORD будет случайной строкой, состоящей из
32 символов. Сгенерированные учетные данные будут сохранены в conf/login-identity-providers.xml, при этом пароль хранится
с использованием хеширования bcrypt. Запишите эти учетные данные в надежном месте для доступа к NiFi.
Случайные имя пользователя и пароль можно заменить собственными учетными данными с помощью следующей команды:
./bin/nifi.sh set-single-user-credentials <username> <password>
Откройте следующую ссылку в веб-браузере для доступа к NiFi: https://localhost:8443/nifi
Веб-браузер отобразит предупреждение о потенциальном риске безопасности из-за самозаверяющего сертификата, сгенерированного NiFi во время инициализации. Для первоначальных установок в целях разработки можно принять потенциальный риск безопасности и продолжить загрузку интерфейса. Для production-развертываний следует предоставить сертификат от доверенного центра сертификации и обновить конфигурацию keystore и truststore в NiFi.
После принятия самозаверяющего сертификата доступ к NiFi отобразит экран входа в систему.

Используя сгенерированные учетные данные, введите сгенерированное имя пользователя в поле User
и сгенерированный пароль в поле Password, затем выберите LOG IN для доступа к системе.

В Руководстве пользователя NiFi описано, как построить поток данных.
Выполните следующую команду для остановки NiFi:
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
MiNiFi — дочерний проект Apache NiFi. Это дополнительный подход к сбору данных, который дополняет основные принципы NiFi в управлении потоками данных, сосредоточенный на сборе данных в источнике их создания.
Конкретные цели MiNiFi включают:
Роль MiNiFi следует рассматривать с точки зрения агента, действующего непосредственно на исходных датчиках, системах или серверах или непосредственно рядом с ними.
Для запуска:
Перейдите в каталог 'minifi-assembly'. В каталоге target должна находиться сборка minifi.
$ cd minifi-assembly
$ ls -lhd target/minifi*
drwxr-xr-x 3 user staff 102B Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.tar.gz
-rw-r--r-- 1 user staff 39M Jul 6 13:07 minifi-1.14.0-SNAPSHOT-bin.zip
Для тестирования текущей разработки можно использовать уже распакованную сборку в каталоге с именем "minifi-version-bin", где version — текущая версия проекта. Для развертывания в другом месте используйте tar-архив или zip-файл и распакуйте их там, где вам удобно. Дистрибутив будет находиться в общем родительском каталоге, названном в честь версии.
$ mkdir ~/example-minifi-deploy
$ tar xzf target/minifi-*-bin.tar.gz -C ~/example-minifi-deploy
$ ls -lh ~/example-minifi-deploy/
total 0
drwxr-xr-x 10 user staff 340B Jul 6 01:06 minifi-1.14.0-SNAPSHOT
Для запуска MiNiFi:
Перейдите в каталог, куда вы установили MiNiFi, и запустите его.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
Просмотрите журналы в папке logs $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
За помощью в создании первого потока данных и отправке данных в экземпляр NiFi обратитесь к руководству системного администратора, расположенному в папке docs, или используйте minifi-toolkit, который помогает адаптировать шаблоны NiFi к формату файла конфигурации MiNiFi YAML.
Если вы тестируете текущую разработку, вам, вероятно, захочется остановить свой экземпляр.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop
Для сборки:
mvn -P docker clean install. Это запустит полную сборку, создаст на её основе docker-образ и выполнит интеграционные тесты docker-compose. После успешного завершения у вас должен появиться образ apacheminifi:${minifi.version}, который можно запустить следующей командой (заменив ${minifi.version} на текущую версию Maven вашей ветки):docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
Registry — подпроект Apache NiFi — дополнительное приложение, предоставляющее централизованное место для хранения и управления общими ресурсами в одном или нескольких экземплярах NiFi и/или MiNiFi.
или
Соберите только подпроект Registry:
cd nifi/nifi-registry
mvn clean install
Если вы хотите включить проверки стиля и лицензий, укажите профиль contrib-check:
mvn clean install -Pcontrib-check
2) Запустите Registry
cd nifi-registry/nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
./bin/nifi-registry.sh start
Обратите внимание, что веб-серверу приложения может потребоваться время для загрузки, прежде чем он станет доступен.
При настройках по умолчанию веб-интерфейс приложения будет доступен по адресу http://localhost:18080/nifi-registry
Если вы хотите протестировать REST API приложения, вы можете получить к нему прямой доступ. При настройках по умолчанию базовый URL REST API будет http://localhost:18080/nifi-registry-api. Интерфейс для тестирования REST API будет доступен по адресу http://localhost:18080/nifi-registry-api/swagger/ui.html
Журналы будут доступны в logs/nifi-registry-app.log
Чтобы убедиться, что NiFi Registry корректно работает с различными реляционными базами данных, существующие интеграционные тесты можно запускать для разных баз данных с помощью фреймворка Testcontainers.
Профили Spring используются для управления фабрикой DataSource, которая будет доступна в контексте приложения Spring. Предоставляются фабрики DataSource, использующие фреймворк Testcontainers для запуска Docker-контейнера для заданной базы данных и создания соответствующего DataSource. Если профиль не указан, по умолчанию будет использоваться H2 DataSource, и Docker-контейнеры не требуются.
При условии, что Docker запущен в системе, где выполняется сборка, можно выполнить следующие команды:
| Целевая база данных | Команда сборки |
|---|---|
| Все поддерживаемые | mvn verify -Ptest-all-dbs |
| H2 (по умолчанию) | mvn verify |
| MariaDB 10.3 | mvn verify -Pcontrib-check -Dspring.profiles.active=mariadb-10-3 |
| MySQL 8 | mvn verify -Pcontrib-check -Dspring.profiles.active=mysql-8 |
| PostgreSQL 10 | mvn verify -Dspring.profiles.active=postgres-10 |
Полный список доступных фабрик DataSource приведен в модуле nifi-registry-test.
Если у вас есть вопросы, вы можете обратиться к нашему списку рассылки: [email protected] (архив). Для более интерактивных обсуждений участники сообщества часто находятся в следующих местах:
Apache NiFi Slack Workspace: https://apachenifi.slack.com/
Новые пользователи могут присоединиться к рабочему пространству, используя следующую ссылку-приглашение.
Чтобы отправить запрос на добавление функции или сообщение об ошибке, создайте запрос в Jira по адресу https://issues.apache.org/jira/projects/NIFI/issues. Если это отчет об уязвимости системы безопасности, отправьте электронное письмо напрямую на [email protected] и сначала изучите процедуры раскрытия информации об уязвимостях Apache NiFi и безопасности Apache Software Foundation.
См. https://nifi.apache.org/ для получения последней документации NiFi.
См. https://nifi.apache.org/minifi и https://cwiki.apache.org/confluence/display/MINIFI для получения последней документации по MiNiFi.
См. https://nifi.apache.org/registry для получения последней документации по Registry.
Если не указано иное, это программное обеспечение лицензировано в соответствии с Apache License, Version 2.0
Лицензировано в соответствии с Apache License, Version 2.0 (далее — «Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу
Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое в соответствии с Лицензией, распространяется на основе «AS IS», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ И УСЛОВИЙ, явных или подразумеваемых. См. Лицензию, чтобы узнать о конкретных разрешениях и ограничениях.
Этот дистрибутив включает криптографическое программное обеспечение. В стране, в которой вы в настоящее время проживаете, могут действовать ограничения на импорт, владение, использование и/или реэкспорт в другую страну программного обеспечения для шифрования. ПЕРЕД использованием любого программного обеспечения для шифрования, пожалуйста, проверьте законы, нормативные акты и политику вашей страны, касающиеся импорта, владения или использования и реэкспорта программного обеспечения для шифрования, чтобы узнать, разрешено ли это. См. https://www.wassenaar.org/ для получения дополнительной информации.
Министерство торговли правительства США, Бюро промышленности и безопасности (BIS), классифицировало это программное обеспечение как экспортный номер контроля товаров (ECCN) 5D002.C.1, который включает программное обеспечение информационной безопасности, использующее или выполняющее криптографические функции с асимметричными алгоритмами. Форма и способ распространения этого дистрибутива Apache Software Foundation делают его пригодным для экспорта в рамках лицензионного исключения ENC Technology Software Unrestricted (TSU) (см. Правила экспортного администрирования BIS, раздел 740.13) как для объектного кода, так и для исходного кода.
Ниже приведены дополнительные сведения о включенном криптографическом программном обеспечении:
Apache NiFi использует BouncyCastle, JCraft Inc. и встроенные библиотеки криптографии Java для SSL, SSH и защиты чувствительных параметров конфигурации. См.
для получения дополнительных сведений о криптографических функциях каждой из этих библиотек.