
Exploit para Apache NiFi CVE-2023-34468, visando uma vulnerabilidade nas versões 1.21.0 e anteriores para demonstrar acesso a dados e comprometimento do sistema.
O Apache NiFi é um sistema fácil de usar, poderoso e confiável para processar e distribuir dados.
O Apache NiFi foi criado para fluxos de dados. Ele suporta grafos direcionados altamente configuráveis de roteamento de dados, transformação e lógica de mediação de sistemas. Alguns de seus principais recursos incluem:
Leia o guia de início rápido para desenvolvimento. Ele incluirá informações sobre como obter uma cópia local do código-fonte, dará orientações sobre o rastreamento de problemas e fornecerá alguns avisos sobre problemas comuns em ambientes de desenvolvimento.
Para um guia mais abrangente de desenvolvimento e informações sobre como contribuir com o projeto, leia o Guia do Desenvolvedor NiFi.
Execute mvn clean install ou, para compilação paralela, execute mvn -T 2.0C clean install.
A compilação paralela deve levar cerca de quinze minutos em 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] ------------------------------------------------------------------------
Execute mvn clean install -DskipTests para pular a execução dos testes unitários.
Altere o diretório para nifi-assembly. O diretório target contém os arquivos binários.
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
Copie o nifi-VERSION-bin.tar.gz ou nifi-VERSION-bin.zip para um diretório de implantação separado. A extração da distribuição criará um novo diretório nomeado de acordo com a versão.
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
Altere o diretório para o local de implantação e execute o seguinte comando para iniciar o NiFi.
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start
Executar bin/nifi.sh start inicia o NiFi em segundo plano e sai. Use --wait-for-init com um tempo limite opcional em segundos para aguardar uma inicialização completa antes de sair.
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh start --wait-for-init 120
A configuração padrão gera um nome de usuário e uma senha aleatórios na inicialização. O NiFi grava as credenciais geradas no log do aplicativo, localizado em logs/nifi-app.log no diretório de instalação do NiFi.
O seguinte comando pode ser usado para encontrar as credenciais geradas em sistemas operacionais com o grep instalado:
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
O NiFi registra as credenciais geradas da seguinte forma:
Generated Username [USERNAME]
Generated Password [PASSWORD]
O USERNAME será um UUID aleatório composto por 36 caracteres. O PASSWORD será uma string aleatória composta por 32 caracteres. As credenciais geradas serão armazenadas em conf/login-identity-providers.xml, com a senha armazenada usando hash bcrypt. Registre essas credenciais em um local seguro para acessar o NiFi.
O nome de usuário e a senha aleatórios podem ser substituídos por credenciais personalizadas usando o seguinte comando:
./bin/nifi.sh set-single-user-credentials <username> <password>
Abra o seguinte link em um navegador web para acessar o NiFi: https://localhost:8443/nifi
O navegador web exibirá uma mensagem de aviso indicando um possível risco de segurança devido ao certificado autoassinado que o NiFi gerou durante a inicialização. Aceitar o possível risco de segurança e continuar carregando a interface é uma opção para instalações iniciais de desenvolvimento. Implantações em produção devem provisionar um certificado de uma autoridade certificadora confiável e atualizar a configuração do keystore e do truststore do NiFi.
Acessar o NiFi após aceitar o certificado autoassinado exibirá a tela de login.

Usando as credenciais geradas, insira o nome de usuário gerado no campo User e a senha gerada no campo Password e, em seguida, selecione LOG IN para acessar o sistema.

O Guia do Usuário NiFi descreve como construir um fluxo de dados.
Execute o seguinte comando para parar o NiFi:
laptop:~ myuser$ cd ~/example-nifi-deploy/nifi-*
laptop:nifi-1.0.0-SNAPSHOT myuser$ ./bin/nifi.sh stop
O MiNiFi é um subprojeto do Apache NiFi. É uma abordagem complementar de coleta de dados que complementa os princípios fundamentais do NiFi no gerenciamento de fluxos de dados, com foco na coleta de dados na fonte de sua criação.
Os objetivos específicos do MiNiFi incluem:
As perspectivas sobre o papel do MiNiFi devem considerar o agente atuando imediatamente na fonte — sensores, sistemas ou servidores — ou diretamente adjacente a ela.
Para executar:
Altere o diretório para 'minifi-assembly'. No diretório target, deve haver um build do 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 testar o desenvolvimento em andamento, você pode usar o build já descompactado presente no diretório chamado "minifi-version-bin", onde version é a versão atual do projeto. Para implantar em outro local, use o tarball ou o arquivo zip e descompacte-os onde preferir. A distribuição ficará em um diretório pai comum nomeado de acordo com a versão.
$ 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 executar o MiNiFi:
Altere o diretório para o local onde você instalou o MiNiFi e execute-o.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh start
Visualize os logs localizados na pasta logs $ tail -F ~/example-minifi-deploy/logs/minifi-app.log
Para obter ajuda na criação do seu primeiro fluxo de dados e no envio de dados para uma instância do NiFi, consulte o Guia de Administração do Sistema localizado na pasta docs ou use o minifi-toolkit, que auxilia na adaptação de modelos do NiFi para o formato de arquivo de configuração YAML do MiNiFi.
Se você estiver testando o desenvolvimento em andamento, provavelmente desejará parar sua instância.
$ cd ~/example-minifi-deploy/minifi-*
$ ./bin/minifi.sh stop
Para compilar:
mvn -P docker clean install. Isso executará o build completo, criará uma imagem docker baseada nele e executará os testes de integração docker-compose. Após a conclusão bem-sucedida, você terá uma imagem apacheminifi:${minifi.version} que pode ser iniciada com o seguinte comando (substituindo ${minifi.version} pela versão maven atual do seu branch):docker run -d -v YOUR_CONFIG.YML:/opt/minifi/minifi-${minifi.version}/conf/config.yml apacheminifi:${minifi.version}
O Registry — um subprojeto do Apache NiFi — é um aplicativo complementar que fornece um local central para armazenamento e gerenciamento de recursos compartilhados em uma ou mais instâncias do NiFi e/ou MiNiFi.
ou
Compile apenas o subprojeto Registry:
cd nifi/nifi-registry
mvn clean install
Se você desejar habilitar as verificações de estilo e licença, especifique o perfil contrib-check:
mvn clean install -Pcontrib-check
2) Inicie o Registry
cd nifi-registry/nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
./bin/nifi-registry.sh start
Observe que o servidor web do aplicativo pode levar um tempo para carregar antes de ficar acessível.
Com as configurações padrão, a interface do aplicativo estará disponível em http://localhost:18080/nifi-registry
Se você desejar testar a API REST do aplicativo, poderá acessá-la diretamente. Com as configurações padrão, a URL base da API REST estará em http://localhost:18080/nifi-registry-api. Uma interface para testar a API REST estará disponível em http://localhost:18080/nifi-registry-api/swagger/ui.html
Os logs estarão disponíveis em logs/nifi-registry-app.log
Para garantir que o NiFi Registry funcione corretamente com diferentes bancos de dados relacionais, os testes de integração existentes podem ser executados contra diferentes bancos de dados usando o framework Testcontainers.
Perfis (profiles) do Spring são usados para controlar a fábrica de DataSource que será disponibilizada ao contexto do aplicativo Spring. São fornecidas fábricas de DataSource que usam o framework Testcontainers para iniciar um contêiner Docker para um determinado banco de dados e criar um DataSource correspondente. Se nenhum perfil for especificado, um DataSource H2 será usado por padrão e nenhum contêiner Docker será necessário.
Supondo que o Docker esteja em execução no sistema onde o build está sendo executado, os seguintes comandos podem ser executados:
| Banco de Dados Alvo | Comando de Build |
|---|---|
| Todos os suportados | mvn verify -Ptest-all-dbs |
| H2 (padrão) | 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 obter uma lista completa das fábricas de DataSource disponíveis, consulte o módulo nifi-registry-test.
Se você tiver dúvidas, entre em contato com nossa lista de e-mails: [email protected] (arquivo). Para discussões mais interativas, os membros da comunidade podem ser encontrados com frequência nos seguintes locais:
Apache NiFi Slack Workspace: https://apachenifi.slack.com/
Novos usuários podem entrar no workspace usando o seguinte link de convite.
Para enviar uma solicitação de recurso ou relatório de bug, registre um Jira em https://issues.apache.org/jira/projects/NIFI/issues. Se for um relatório de vulnerabilidade de segurança, envie um e-mail diretamente para [email protected] e revise primeiro os processos de Divulgação de Vulnerabilidade de Segurança do Apache NiFi e de Segurança da Apache Software Foundation.
Consulte https://nifi.apache.org/ para obter a documentação mais recente do NiFi.
Consulte https://nifi.apache.org/minifi e https://cwiki.apache.org/confluence/display/MINIFI para obter a documentação mais recente específica do MiNiFi.
Consulte https://nifi.apache.org/registry para obter a documentação mais recente específica do Registry.
Exceto quando indicado de outra forma, este software é licenciado sob a Apache License, Versão 2.0
Licenciado sob a Apache License, Versão 2.0 (a "Licença"); você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença em:
A menos que seja exigido pela lei aplicável ou acordado por escrito, o software distribuído sob a Licença é distribuído "NO ESTADO EM QUE SE ENCONTRA" ("AS IS"), SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, expressas ou implícitas. Consulte a Licença para obter as permissões específicas e as limitações que regem o uso do software.
Esta distribuição inclui software criptográfico. O país em que você reside atualmente pode ter restrições quanto à importação, posse, uso e/ou reexportação de software de criptografia para outro país. ANTES de usar qualquer software de criptografia, verifique as leis, regulamentos e políticas do seu país relativos à importação, posse, uso e reexportação de software de criptografia, para verificar se isso é permitido. Consulte https://www.wassenaar.org/ para obter mais informações.
O Departamento de Comércio do Governo dos EUA, Bureau of Industry and Security (BIS), classificou este software como Export Commodity Control Number (ECCN) 5D002.C.1, que inclui software de segurança da informação que usa ou executa funções criptográficas com algoritmos assimétricos. A forma e o modo desta distribuição da Apache Software Foundation a tornam elegível para exportação sob a exceção License Exception ENC Technology Software Unrestricted (TSU) (consulte os Regulamentos de Administração de Exportação do BIS, Seção 740.13), tanto para código objeto quanto para código-fonte.
A seguir, são fornecidos mais detalhes sobre o software criptográfico incluído:
O Apache NiFi utiliza BouncyCastle, JCraft Inc. e as bibliotecas de criptografia integradas do Java para SSL, SSH e a proteção de parâmetros de configuração confidenciais. Consulte
para obter mais detalhes sobre os recursos de criptografia de cada uma dessas bibliotecas.