
Exploit per Apache NiFi CVE-2023-34468, che mira a una vulnerabilità nelle versioni 1.21.0 e precedenti per dimostrare l'accesso ai dati e il compromesso del sistema.
Apache NiFi è un sistema facile da usare, potente e affidabile per elaborare e distribuire dati.
Apache NiFi è stato creato per il dataflow. Supporta grafi orientati altamente configurabili di routing dei dati, trasformazione e logica di mediazione di sistema. Alcune delle sue caratteristiche principali includono:
Leggi la guida rapida allo sviluppo. Include informazioni su come ottenere una copia locale del sorgente, fornisce indicazioni sul tracciamento dei problemi e mette in guardia su alcuni problemi comuni con gli ambienti di sviluppo.
Per una guida più completa allo sviluppo e informazioni su come contribuire al progetto, leggi la Guida per gli sviluppatori di NiFi.
Esegui mvn clean install oppure, per una build in parallelo, esegui mvn -T 2.0C clean install.
La build in parallelo dovrebbe richiedere circa quindici minuti su hardware moderno.
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] ------------------------------------------------------------------------
Esegui mvn clean install -DskipTests per saltare l'esecuzione dei test unitari.
Spostati nella directory nifi-assembly. La directory target contiene gli archivi binari.
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
Copia nifi-VERSION-bin.tar.gz o nifi-VERSION-bin.zip in una directory di distribuzione separata. L'estrazione della distribuzione creerà una nuova directory con il nome della versione.
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
Spostati nella posizione di distribuzione ed esegui il seguente comando per avviare NiFi.
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
L'esecuzione di bin/nifi.sh start avvia NiFi in background ed esce. Usa --wait-for-init con un timeout facoltativo in secondi per attendere un avvio completo prima di uscire.
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
La configurazione predefinita genera un nome utente e una password casuali all'avvio. NiFi scrive le credenziali generate nel log dell'applicazione situato in logs/nifi-app.log nella directory di installazione di NiFi.
Il seguente comando può essere utilizzato per trovare le credenziali generate sui sistemi operativi con grep installato:
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi registra le credenziali generate come segue:
Generated Username [USERNAME]
Generated Password [PASSWORD]
USERNAME sarà un UUID casuale composto da 36 caratteri. PASSWORD sarà una stringa casuale composta da 32 caratteri. Le credenziali generate verranno memorizzate in conf/login-identity-providers.xml con la password salvata tramite hashing bcrypt. Conserva queste credenziali in un luogo sicuro per l'accesso a NiFi.
Il nome utente e la password casuali possono essere sostituiti con credenziali personalizzate usando il seguente comando:
./bin/nifi.sh set-single-user-credentials <username> <password>
Apri il seguente link in un browser web per accedere a NiFi: https://localhost:8443/nifi
Il browser web mostrerà un messaggio di avviso che indica un potenziale rischio per la sicurezza dovuto al certificato autofirmato generato da NiFi durante l'inizializzazione. Accettare il potenziale rischio e continuare a caricare l'interfaccia è un'opzione per le installazioni di sviluppo iniziali. Le distribuzioni di produzione dovrebbero fornire un certificato da un'autorità di certificazione attendibile e aggiornare la configurazione del keystore e del truststore di NiFi.
L'accesso a NiFi dopo aver accettato il certificato autofirmato mostrerà la schermata di accesso.

Usando le credenziali generate, inserisci il nome utente generato nel campo User e la password generata nel campo Password, quindi seleziona LOG IN per accedere al sistema.

La Guida utente di NiFi descrive come creare un flusso di dati.
Esegui il seguente comando per arrestare NiFi:
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
MiNiFi è un progetto figlio di Apache NiFi. È un approccio complementare alla raccolta dati che integra i principi fondamentali di NiFi nella gestione dei dataflow, concentrandosi sulla raccolta dei dati alla fonte della loro creazione.
Gli obiettivi specifici di MiNiFi comprendono:
Le prospettive sul ruolo di MiNiFi dovrebbero essere considerate dal punto di vista dell'agente che opera immediatamente presso, o direttamente adiacente a, sensori, sistemi o server di origine.
Per eseguire:
Spostati nella directory 'minifi-assembly'. Nella directory target dovrebbe essere presente una build di 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
Per testare lo sviluppo in corso puoi usare la build già estratta presente nella directory denominata "minifi-version-bin", dove version è la versione corrente del progetto. Per distribuire in un'altra posizione, utilizza il tarball o il file zip ed estraili dove preferisci. La distribuzione si troverà in una directory padre comune denominata con la versione.
$ 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
Per eseguire MiNiFi:
Spostati nella directory in cui hai installato MiNiFi ed eseguilo.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
Visualizza i log situati nella cartella logs $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
Per assistenza nella creazione del tuo primo data flow e nell'invio di dati a un'istanza NiFi, consulta la System Admin Guide nella cartella docs oppure utilizza minifi-toolkit, che aiuta ad adattare i template NiFi al formato di file di configurazione YAML di MiNiFi.
Se stai testando lo sviluppo in corso, probabilmente vorrai arrestare la tua istanza.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop
Per compilare:
mvn -P docker clean install. Questo eseguirà la build completa, creerà un'immagine docker basata su di essa ed eseguirà i test di integrazione docker-compose. Dopo il completamento con successo, dovresti avere un'immagine apacheminifi:${minifi.version} che può essere avviata con il seguente comando (sostituendo ${minifi.version} con la versione maven corrente del tuo branch):docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
Registry—un sottoprogetto di Apache NiFi—è un'applicazione complementare che fornisce una posizione centrale per l'archiviazione e la gestione di risorse condivise tra una o più istanze di NiFi e/o MiNiFi.
oppure
Compila solo il sottoprogetto Registry:
cd nifi/nifi-registry
mvn clean install
Se desideri abilitare i controlli di stile e licenza, specifica il profilo contrib-check:
mvn clean install -Pcontrib-check
2) Avvia Registry
cd nifi-registry/nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
./bin/nifi-registry.sh start
Nota che il server web dell'applicazione potrebbe impiegare un po' di tempo per caricarsi prima di essere accessibile.
Con le impostazioni predefinite, l'interfaccia dell'applicazione sarà disponibile all'indirizzo http://localhost:18080/nifi-registry
Se desideri testare l'API REST dell'applicazione, puoi accedere direttamente all'API REST. Con le impostazioni predefinite, l'URL base dell'API REST sarà http://localhost:18080/nifi-registry-api. Un'interfaccia per testare l'API REST sarà disponibile all'indirizzo http://localhost:18080/nifi-registry-api/swagger/ui.html
I log saranno disponibili in logs/nifi-registry-app.log
Per garantire che NiFi Registry funzioni correttamente con diversi database relazionali, i test di integrazione esistenti possono essere eseguiti su diversi database utilizzando il framework Testcontainers.
I profili Spring vengono utilizzati per controllare la factory DataSource che sarà resa disponibile al contesto dell'applicazione Spring. Vengono fornite factory DataSource che utilizzano il framework Testcontainers per avviare un contenitore Docker per un determinato database e creare un DataSource corrispondente. Se non viene specificato alcun profilo, verrà utilizzato un DataSource H2 per impostazione predefinita e non saranno richiesti contenitori Docker.
Supponendo che Docker sia in esecuzione sul sistema in cui viene eseguita la build, è possibile eseguire i seguenti comandi:
| Database di destinazione | Comando di build |
|---|---|
| Tutti quelli supportati | mvn verify -Ptest-all-dbs |
| H2 (predefinito) | 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 |
Per un elenco completo delle factory DataSource disponibili, consulta il modulo nifi-registry-test.
Se hai domande, puoi contattare la nostra mailing list: [email protected] (archivio). Per discussioni più interattive, i membri della community si trovano spesso nei seguenti luoghi:
Apache NiFi Slack Workspace: https://apachenifi.slack.com/
I nuovi utenti possono unirsi allo spazio di lavoro utilizzando il seguente link di invito.
Per inviare una richiesta di funzionalità o una segnalazione di bug, apri un ticket Jira su https://issues.apache.org/jira/projects/NIFI/issues. Se si tratta di una segnalazione di vulnerabilità di sicurezza, invia un'email direttamente a [email protected] e consulta prima i processi di Divulgazione delle vulnerabilità di sicurezza di Apache NiFi e Sicurezza della Apache Software Foundation.
Vedi https://nifi.apache.org/ per la documentazione più recente di NiFi.
Vedi https://nifi.apache.org/minifi e https://cwiki.apache.org/confluence/display/MINIFI per la documentazione più recente specifica di MiNiFi.
Vedi https://nifi.apache.org/registry per la documentazione più recente specifica di Registry.
Salvo diversa indicazione, questo software è concesso in licenza secondo l'Apache License, Version 2.0
Concesso in licenza secondo la Apache License, Version 2.0 (la "Licenza"); non è consentito utilizzare questo file se non in conformità con la Licenza. È possibile ottenere una copia della Licenza all'indirizzo
Salvo quanto previsto dalla legge o concordato per iscritto, il software distribuito con la Licenza è distribuito su una base "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o implicite. Vedere la Licenza per il linguaggio specifico che regola i permessi e le limitazioni previsti dalla Licenza.
Questa distribuzione include software crittografico. Il paese in cui risiedi attualmente potrebbe avere restrizioni sull'importazione, il possesso, l'uso e/o la riesportazione verso un altro paese di software di crittografia. PRIMA di utilizzare qualsiasi software di crittografia, controlla le leggi, le normative e le politiche del tuo paese riguardanti l'importazione, il possesso, l'uso e la riesportazione di software di crittografia, per verificare se è consentito. Vedi https://www.wassenaar.org/ per maggiori informazioni.
Il Dipartimento del Commercio del Governo degli Stati Uniti, Bureau of Industry and Security (BIS), ha classificato questo software come Export Commodity Control Number (ECCN) 5D002.C.1, che include software per la sicurezza delle informazioni che utilizza o esegue funzioni crittografiche con algoritmi asimmetrici. La forma e le modalità di questa distribuzione della Apache Software Foundation lo rendono idoneo all'esportazione ai sensi dell'eccezione License Exception ENC Technology Software Unrestricted (TSU) (vedere le BIS Export Administration Regulations, Sezione 740.13) sia per il codice oggetto che per il codice sorgente.
Quanto segue fornisce maggiori dettagli sul software crittografico incluso:
Apache NiFi utilizza BouncyCastle, JCraft Inc. e le librerie crittografiche integrate di Java per SSL, SSH e la protezione dei parametri di configurazione sensibili. Vedi
per maggiori dettagli sulle funzionalità crittografiche di ciascuna di queste librerie.