
Exploit para Apache NiFi CVE-2023-34468, dirigido a una vulnerabilidad en versiones 1.21.0 y anteriores para demostrar acceso a datos y compromiso del sistema.
Apache NiFi es un sistema fácil de usar, potente y confiable para procesar y distribuir datos.
Apache NiFi fue creado para el flujo de datos. Admite gráficos dirigidos altamente configurables de enrutamiento de datos, transformación y lógica de mediación de sistemas. Algunas de sus características clave incluyen:
Lee la guía de inicio rápido para desarrollo. Incluirá información sobre cómo obtener una copia local del código fuente, dará indicaciones sobre el seguimiento de problemas y proporcionará algunas advertencias sobre problemas comunes con los entornos de desarrollo.
Para obtener una guía más completa sobre el desarrollo e información sobre cómo contribuir al proyecto, lee la Guía del desarrollador de NiFi.
Ejecuta mvn clean install o, para una compilación en paralelo, ejecuta mvn -T 2.0C clean install.
La compilación en paralelo debería tardar unos quince minutos en 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] ------------------------------------------------------------------------
Ejecuta mvn clean install -DskipTests para omitir la ejecución de pruebas unitarias.
Cambia de directorio a nifi-assembly. El directorio target contiene los archivos binarios.
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 a un directorio de despliegue separado.
Al extraer la distribución se creará un nuevo directorio con el nombre de la versión.
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
Cambia de directorio a la ubicación de despliegue y ejecuta el siguiente comando para iniciar NiFi.
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
Ejecutar bin/nifi.sh start inicia NiFi en segundo plano y sale. Usa --wait-for-init con un tiempo de espera opcional en
segundos para esperar a que el inicio se complete antes de salir.
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
La configuración predeterminada genera un nombre de usuario y una contraseña aleatorios al inicio. NiFi escribe las credenciales generadas
en el registro de la aplicación ubicado en logs/nifi-app.log dentro del directorio de instalación de NiFi.
El siguiente comando se puede utilizar para encontrar las credenciales generadas en sistemas operativos con grep instalado:
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi registra las credenciales generadas de la siguiente manera:
Generated Username [USERNAME]
Generated Password [PASSWORD]
El USERNAME será un UUID aleatorio compuesto por 36 caracteres. El PASSWORD será una cadena aleatoria compuesta por
32 caracteres. Las credenciales generadas se almacenarán en conf/login-identity-providers.xml con la contraseña almacenada
mediante hash bcrypt. Guarda estas credenciales en un lugar seguro para acceder a NiFi.
El nombre de usuario y la contraseña aleatorios se pueden reemplazar con credenciales personalizadas mediante el siguiente comando:
./bin/nifi.sh set-single-user-credentials <username> <password>
Abre el siguiente enlace en un navegador web para acceder a NiFi: https://localhost:8443/nifi
El navegador web mostrará un mensaje de advertencia que indica un posible riesgo de seguridad debido al certificado autofirmado que NiFi generó durante la inicialización. Aceptar el posible riesgo de seguridad y continuar cargando la interfaz es una opción para instalaciones de desarrollo iniciales. Los despliegues de producción deben aprovisionar un certificado de una autoridad de certificación de confianza y actualizar la configuración del almacén de claves y de confianza de NiFi.
Al acceder a NiFi después de aceptar el certificado autofirmado, se mostrará la pantalla de inicio de sesión.

Con las credenciales generadas, introduce el nombre de usuario generado en el campo User
y la contraseña generada en el campo Password; a continuación, selecciona LOG IN para acceder al sistema.

La Guía de usuario de NiFi describe cómo crear un flujo de datos.
Ejecuta el siguiente comando para detener NiFi:
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
MiNiFi es un proyecto derivado de Apache NiFi. Es un enfoque complementario de recopilación de datos que complementa los principios fundamentales de NiFi en la gestión de flujos de datos, centrándose en la recopilación de datos en el origen de su creación.
Los objetivos específicos de MiNiFi incluyen:
Las perspectivas del rol de MiNiFi deben considerarse desde el punto de vista del agente que actúa inmediatamente en, o directamente adyacente a, sensores, sistemas o servidores de origen.
Para ejecutarlo:
Cambia de directorio a 'minifi-assembly'. En el directorio target debería haber una compilación 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
Para probar el desarrollo en curso, puedes usar la compilación ya desempaquetada presente en el directorio llamado "minifi-version-bin", donde version es la versión actual del proyecto. Para desplegar en otra ubicación, utiliza el archivo tar o el archivo zip y descomprímelos donde quieras. La distribución estará dentro de un directorio principal común con el nombre de la versión.
$ 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
Para ejecutar MiNiFi:
Cambia de directorio a la ubicación donde instalaste MiNiFi y ejecútalo.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
Consulta los registros ubicados en la carpeta logs $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
Para obtener ayuda para crear tu primer flujo de datos y enviar datos a una instancia de NiFi, consulta la Guía de administración del sistema ubicada en la carpeta docs o utiliza minifi-toolkit, que ayuda a adaptar las plantillas de NiFi al formato de archivo de configuración YAML de MiNiFi.
Si estás probando el desarrollo en curso, probablemente querrás detener tu instancia.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop
Para compilar:
mvn -P docker clean install. Esto ejecutará la compilación completa, creará una imagen docker basada en ella y ejecutará pruebas de integración con docker-compose. Cuando se complete correctamente, deberías tener una imagen apacheminifi:${minifi.version} que se puede iniciar con el siguiente comando (reemplazando ${minifi.version} con la versión maven actual de tu rama):docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
Registry—un subproyecto de Apache NiFi—es una aplicación complementaria que proporciona una ubicación central para el almacenamiento y la gestión de recursos compartidos en una o más instancias de NiFi y/o MiNiFi.
o
Compila solo el subproyecto Registry:
cd nifi/nifi-registry
mvn clean install
Si deseas habilitar las comprobaciones de estilo y licencia, especifica el perfil contrib-check:
mvn clean install -Pcontrib-check
2) Inicia Registry
cd nifi-registry/nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
./bin/nifi-registry.sh start
Ten en cuenta que el servidor web de la aplicación puede tardar un tiempo en cargarse antes de que sea accesible.
Con la configuración predeterminada, la interfaz de la aplicación estará disponible en http://localhost:18080/nifi-registry
Si deseas probar la API REST de la aplicación, puedes acceder directamente a la API REST. Con la configuración predeterminada, la URL base de la API REST estará en http://localhost:18080/nifi-registry-api. Habrá una interfaz para probar la API REST en http://localhost:18080/nifi-registry-api/swagger/ui.html
Los registros estarán disponibles en logs/nifi-registry-app.log
Para garantizar que NiFi Registry funcione correctamente con diferentes bases de datos relacionales, las pruebas de integración existentes se pueden ejecutar contra diferentes bases de datos utilizando el framework Testcontainers.
Se utilizan perfiles de Spring para controlar la fábrica de DataSource que estará disponible en el contexto de la aplicación Spring. Se proporcionan fábricas de DataSource que usan el framework Testcontainers para iniciar un contenedor Docker para una base de datos determinada y crear un DataSource correspondiente. Si no se especifica ningún perfil, se utilizará un DataSource H2 por defecto y no se requerirán contenedores Docker.
Suponiendo que Docker se esté ejecutando en el sistema donde se realiza la compilación, se pueden ejecutar los siguientes comandos:
| Base de datos objetivo | Comando de compilación |
|---|---|
| Todas las compatibles | mvn verify -Ptest-all-dbs |
| H2 (predeterminado) | 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 |
Para obtener una lista completa de las fábricas de DataSource disponibles, consulta el módulo nifi-registry-test.
Si tienes preguntas, puedes comunicarte con nuestra lista de correo: [email protected] (archivo). Para debates más interactivos, los miembros de la comunidad suelen estar en los siguientes lugares:
Apache NiFi Slack Workspace: https://apachenifi.slack.com/
Los nuevos usuarios pueden unirse al espacio de trabajo mediante el siguiente enlace de invitación.
Para enviar una solicitud de funcionalidad o un informe de error, crea un Jira en https://issues.apache.org/jira/projects/NIFI/issues. Si se trata de un informe de vulnerabilidad de seguridad, envía un correo electrónico directamente a [email protected] y revisa primero los procesos de Divulgación de vulnerabilidades de seguridad de Apache NiFi y de Seguridad de la Apache Software Foundation.
Consulta https://nifi.apache.org/ para obtener la documentación más reciente de NiFi.
Consulta https://nifi.apache.org/minifi y https://cwiki.apache.org/confluence/display/MINIFI para obtener la documentación más reciente específica de MiNiFi.
Consulta https://nifi.apache.org/registry para obtener la documentación más reciente específica de Registry.
Salvo que se indique lo contrario, este software está licenciado bajo la Apache License, Version 2.0
Licenciado bajo la Apache License, Versión 2.0 (la "Licencia"); no puede usar este archivo excepto en cumplimiento de la Licencia. Puede obtener una copia de la Licencia en
Salvo que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer los permisos y limitaciones específicos que rigen la Licencia.
Esta distribución incluye software criptográfico. El país en el que resides actualmente puede tener restricciones sobre la importación, posesión, uso y/o reexportación a otro país de software de cifrado. ANTES de utilizar cualquier software de cifrado, consulta las leyes, regulaciones y políticas de tu país sobre la importación, posesión, uso y reexportación de software de cifrado, para ver si está permitido. Consulta https://www.wassenaar.org/ para obtener más información.
El Departamento de Comercio del Gobierno de los Estados Unidos, Bureau of Industry and Security (BIS), ha clasificado este software como Número de Control de Exportación de Mercancías (ECCN) 5D002.C.1, que incluye software de seguridad de la información que utiliza o realiza funciones criptográficas con algoritmos asimétricos. La forma y manera de esta distribución de la Apache Software Foundation la hacen elegible para la exportación bajo la excepción License Exception ENC Technology Software Unrestricted (TSU) (ver las Regulaciones de Administración de Exportaciones del BIS, Sección 740.13) tanto para código objeto como para código fuente.
Lo siguiente proporciona más detalles sobre el software criptográfico incluido:
Apache NiFi utiliza BouncyCastle, JCraft Inc. y las bibliotecas de criptografía integradas de Java para SSL, SSH y la protección de parámetros de configuración sensibles. Consulta
para obtener más detalles sobre las funciones de criptografía de cada una de estas bibliotecas.