
Exploit pour Apache NiFi CVE-2023-34468, ciblant une vulnérabilité dans les versions 1.21.0 et antérieures pour démontrer l'accès aux données et la compromission du système.
Apache NiFi est un système facile à utiliser, puissant et fiable pour traiter et distribuer des données.
Apache NiFi a été conçu pour les flux de données. Il prend en charge des graphes orientés hautement configurables de routage, de transformation et de logique de médiation système. Parmi ses principales fonctionnalités :
Consultez le guide de démarrage rapide pour le développement. Il contient des informations pour obtenir une copie locale du code source, donne des conseils sur le suivi des problèmes et met en garde contre certains problèmes courants dans les environnements de développement.
Pour un guide plus complet sur le développement et des informations sur la contribution au projet, consultez le Guide du développeur NiFi.
Exécutez mvn clean install ou pour une construction parallèle, exécutez mvn -T 2.0C clean install.
La construction parallèle devrait prendre environ quinze minutes sur un matériel moderne.
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] ------------------------------------------------------------------------
Exécutez mvn clean install -DskipTests pour ignorer l'exécution des tests unitaires.
Changez de répertoire vers nifi-assembly. Le répertoire target contient les archives binaires.
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
Copiez le fichier nifi-VERSION-bin.tar.gz ou nifi-VERSION-bin.zip dans un répertoire de déploiement distinct.
L'extraction de la distribution créera un nouveau répertoire nommé d'après la version.
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
Placez-vous dans le répertoire de déploiement et exécutez la commande suivante pour démarrer NiFi.
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
L'exécution de bin/nifi.sh start démarre NiFi en arrière-plan et quitte. Utilisez --wait-for-init avec un délai d'attente optionnel en secondes pour attendre un démarrage complet avant de quitter.
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
La configuration par défaut génère un nom d'utilisateur et un mot de passe aléatoires au démarrage. NiFi écrit les informations d'identification générées dans le journal d'application situé dans logs/nifi-app.log sous le répertoire d'installation de NiFi.
La commande suivante peut être utilisée pour trouver les informations d'identification générées sur les systèmes d'exploitation avec grep installé :
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi enregistre les informations d'identification générées comme suit :
Generated Username [USERNAME]
Generated Password [PASSWORD]
Le USERNAME sera un UUID aléatoire composé de 36 caractères. Le PASSWORD sera une chaîne aléatoire composée de 32 caractères. Les informations d'identification générées seront stockées dans conf/login-identity-providers.xml, le mot de passe étant stocké avec un hachage bcrypt. Notez ces informations d'identification dans un endroit sûr pour accéder à NiFi.
Le nom d'utilisateur et le mot de passe aléatoires peuvent être remplacés par des informations d'identification personnalisées à l'aide de la commande suivante :
./bin/nifi.sh set-single-user-credentials <username> <password>
Ouvrez le lien suivant dans un navigateur web pour accéder à NiFi : https://localhost:8443/nifi
Le navigateur web affichera un message d'avertissement indiquant un risque de sécurité potentiel dû au certificat auto-signé que NiFi a généré lors de l'initialisation. Accepter le risque de sécurité potentiel et continuer à charger l'interface est une option pour les installations de développement initiales. Les déploiements de production doivent provisionner un certificat auprès d'une autorité de certification de confiance et mettre à jour la configuration du keystore et du truststore de NiFi.
L'accès à NiFi après avoir accepté le certificat auto-signé affichera l'écran de connexion.

À l'aide des informations d'identification générées, saisissez le nom d'utilisateur généré dans le champ Utilisateur et le mot de passe généré dans le champ Mot de passe, puis sélectionnez CONNEXION pour accéder au système.

Le Guide utilisateur NiFi décrit comment créer un flux de données.
Exécutez la commande suivante pour arrêter NiFi :
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
MiNiFi est un projet enfant d'Apache NiFi. Il s'agit d'une approche complémentaire de collecte de données qui complète les principes fondamentaux de NiFi dans la gestion des flux de données, en se concentrant sur la collecte des données à la source de leur création.
Les objectifs spécifiques de MiNiFi comprennent :
Les perspectives du rôle de MiNiFi doivent être envisagées du point de vue de l'agent agissant immédiatement sur, ou directement adjacent, aux capteurs, systèmes ou serveurs source.
Pour exécuter :
Placez-vous dans le répertoire 'minifi-assembly'. Dans le répertoire target, il devrait y avoir une construction de 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
Pour tester le développement en cours, vous pouvez utiliser la construction déjà décompressée présente dans le répertoire nommé "minifi-version-bin", où version est la version actuelle du projet. Pour déployer à un autre endroit, utilisez soit l'archive tarball soit le fichier zip et décompressez-les où vous voulez. La distribution se trouvera dans un répertoire parent commun nommé d'après la version.
$ 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
Pour exécuter MiNiFi :
Placez-vous dans le répertoire où vous avez installé MiNiFi et exécutez-le.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
Consultez les journaux situés dans le dossier logs $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
Pour obtenir de l'aide sur la création de votre premier flux de données et l'envoi de données à une instance NiFi, consultez le Guide d'administration système situé dans le dossier docs ou utilisez le minifi-toolkit, qui aide à adapter les modèles NiFi au format de fichier de configuration YAML de MiNiFi.
Si vous testez un développement en cours, vous voudrez probablement arrêter votre instance.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop
Pour construire :
mvn -P docker clean install. Cela exécutera la construction complète, créera une image Docker basée sur celle-ci et exécutera des tests d'intégration docker-compose. Une fois terminée avec succès, vous devriez avoir une image apacheminifi:${minifi.version} qui peut être démarrée avec la commande suivante (en remplaçant ${minifi.version} par la version maven actuelle de votre branche) :docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
Registry — un sous-projet d'Apache NiFi — est une application complémentaire qui fournit un emplacement central pour le stockage et la gestion des ressources partagées sur une ou plusieurs instances de NiFi et/ou MiNiFi.
ou
Construisez uniquement le sous-projet Registry :
cd nifi/nifi-registry
mvn clean install
Si vous souhaitez activer les vérifications de style et de licence, spécifiez le profil contrib-check :
mvn clean install -Pcontrib-check
2) Démarrez Registry
cd nifi-registry/nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
./bin/nifi-registry.sh start
Notez que le serveur web de l'application peut prendre un certain temps à charger avant d'être accessible.
Avec les paramètres par défaut, l'interface utilisateur de l'application sera disponible à l'adresse http://localhost:18080/nifi-registry
Si vous souhaitez tester l'API REST de l'application, vous pouvez y accéder directement. Avec les paramètres par défaut, l'URL de base de l'API REST sera à http://localhost:18080/nifi-registry-api. Une interface utilisateur pour tester l'API REST sera disponible à l'adresse http://localhost:18080/nifi-registry-api/swagger/ui.html
Les journaux seront disponibles dans logs/nifi-registry-app.log
Afin de garantir que NiFi Registry fonctionne correctement avec différentes bases de données relationnelles, les tests d'intégration existants peuvent être exécutés sur différentes bases de données en utilisant le framework Testcontainers.
Les profils Spring sont utilisés pour contrôler la fabrique DataSource qui sera mise à disposition du contexte de l'application Spring. Des fabriques DataSource sont fournies qui utilisent le framework Testcontainers pour démarrer un conteneur Docker pour une base de données donnée et créer une DataSource correspondante. Si aucun profil n'est spécifié, une DataSource H2 sera utilisée par défaut et aucun conteneur Docker n'est requis.
En supposant que Docker soit en cours d'exécution sur le système où la construction est effectuée, les commandes suivantes peuvent être exécutées :
| Base de données cible | Commande de construction |
|---|---|
| Toutes les supports | mvn verify -Ptest-all-dbs |
| H2 (par défaut) | 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 |
Pour une liste complète des fabriques DataSource disponibles, consultez le module nifi-registry-test.
Si vous avez des questions, vous pouvez contacter notre liste de diffusion : [email protected] (archive). Pour des discussions plus interactives, les membres de la communauté se trouvent souvent aux endroits suivants :
Espace de travail Slack Apache NiFi : https://apachenifi.slack.com/
Les nouveaux utilisateurs peuvent rejoindre l'espace de travail en utilisant le lien d'invitation suivant.
Pour soumettre une demande de fonctionnalité ou un rapport de bogue, veuillez créer un Jira à l'adresse https://issues.apache.org/jira/projects/NIFI/issues. S'il s'agit d'un rapport de vulnérabilité de sécurité, veuillez envoyer un courriel à [email protected] directement et examinez d'abord les processus de Divulgation des vulnérabilités de sécurité Apache NiFi et Sécurité de la Fondation Apache Software.
Consultez https://nifi.apache.org/ pour la dernière documentation NiFi.
Consultez https://nifi.apache.org/minifi et https://cwiki.apache.org/confluence/display/MINIFI pour la dernière documentation spécifique à MiNiFi.
Consultez https://nifi.apache.org/registry pour la dernière documentation spécifique à Registry.
Sauf indication contraire, ce logiciel est sous licence Apache License, Version 2.0
Sous licence Apache, Version 2.0 (la "Licence") ; vous ne pouvez pas utiliser ce fichier sauf en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence à l'adresse
Sauf si la loi applicable ne l'exige ou si un accord écrit ne le prévoit, le logiciel distribué sous la Licence l'est "EN L'ÉTAT", SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, expresses ou implicites. Consultez la Licence pour connaître les autorisations et limitations spécifiques applicables.
Cette distribution comprend un logiciel cryptographique. Le pays dans lequel vous résidez actuellement peut imposer des restrictions sur l'importation, la possession, l'utilisation et/ou la réexportation vers un autre pays de logiciels de chiffrement. AVANT d'utiliser un logiciel de chiffrement, veuillez vérifier les lois, réglementations et politiques de votre pays concernant l'importation, la possession, l'utilisation et la réexportation de logiciels de chiffrement, pour voir si cela est autorisé. Consultez https://www.wassenaar.org/ pour plus d'informations.
Le Département du Commerce des États-Unis, Bureau de l'Industrie et de la Sécurité (BIS), a classé ce logiciel comme numéro de contrôle des marchandises d'exportation (ECCN) 5D002.C.1, qui inclut les logiciels de sécurité de l'information utilisant ou exécutant des fonctions cryptographiques avec des algorithmes asymétriques. La forme et la manière de cette distribution de la Fondation Apache Software la rendent éligible à l'exportation dans le cadre de l'exception de licence ENC Technology Software Unrestricted (TSU) (voir le Règlement sur l'administration des exportations du BIS, Section 740.13) pour le code objet et le code source.
Ce qui suit fournit plus de détails sur le logiciel cryptographique inclus :
Apache NiFi utilise BouncyCastle, JCraft Inc., et les bibliothèques cryptographiques intégrées de Java pour SSL, SSH et la protection des paramètres de configuration sensibles. Voir
pour plus de détails sur les fonctionnalités cryptographiques de chacune de ces bibliothèques.