
Apache NiFi CVE-2023-34468 用のエクスプロイトで、バージョン 1.21.0 以前の脆弱性を標的とし、データアクセスとシステム侵害を実証します。
Apache NiFi は、データの処理と配布を簡単かつ強力かつ信頼性高く行うためのシステムです。
Apache NiFi はデータフローのために作られました。データのルーティング、変換、システム仲介ロジックの高度に設定可能な有向グラフをサポートします。主な機能は以下のとおりです。
開発のためのクイックスタートガイドをお読みください。 ソースのローカルコピーを入手する方法、課題追跡に関する情報、開発環境でよくある問題についての注意事項などが含まれています。
開発に関するより包括的なガイドとプロジェクトへの貢献については、 NiFi 開発者ガイドをお読みください。
mvn clean install を実行するか、並列ビルドの場合は mvn -T 2.0C clean install を実行します。
並列ビルドは、最新のハードウェアで約15分かかります。
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 がインストールされた OS で生成された認証情報を検索できます。
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
NiFi は生成された認証情報を次のようにログに記録します。
Generated Username [USERNAME]
Generated Password [PASSWORD]
USERNAME は36文字のランダムな UUID です。PASSWORD は32文字のランダムな文字列です。生成された認証情報は conf/login-identity-providers.xml に保存され、パスワードは bcrypt ハッシュで保存されます。これらの認証情報を安全な場所に記録して、NiFi にアクセスしてください。
ランダムなユーザー名とパスワードは、次のコマンドでカスタム認証情報に置き換えることができます。
./bin/nifi.sh set-single-user-credentials <username> <password>
Web ブラウザで次のリンクを開いて NiFi にアクセスします: https://localhost:8443/nifi
Web ブラウザは、初期化中に NiFi が生成した自己署名証明書による潜在的なセキュリティリスクを示す警告メッセージを表示します。初期の開発インストールでは、潜在的なセキュリティリスクを受け入れてインターフェースのロードを続行するオプションがあります。本番環境では、信頼できる認証局から証明書をプロビジョニングし、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 は現在のプロジェクトバージョン)。別の場所にデプロイするには、tarball または zipfile を使用して、任意の場所に展開します。配布物はバージョン名の共通の親ディレクトリに配置されます。
$ 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 フォルダにある System Admin Guide を参照するか、minifi-toolkit を使用してください。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 のサブプロジェクトであり、1つ以上の 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
アプリケーションの Web サーバーは、アクセス可能になるまでに時間がかかる場合があることに注意してください。
デフォルト設定では、アプリケーション UI は http://localhost:18080/nifi-registry で利用できます。
アプリケーションの REST API をテストしたい場合は、REST API に直接アクセスできます。デフォルト設定では、REST API のベース URL は http://localhost:18080/nifi-registry-api です。REST API をテストするための UI は http://localhost:18080/nifi-registry-api/swagger/ui.html で利用できます。
ログは logs/nifi-registry-app.log で確認できます。
NiFi Registry が異なるリレーショナルデータベースで正しく動作することを確認するために、 Testcontainers フレームワーク を活用して、既存の統合テストを異なるデータベースに対して実行できます。
Spring プロファイルを使用して、Spring アプリケーションコンテキストに提供される DataSource ファクトリを制御します。 Testcontainers フレームワークを使用して、特定のデータベース用の Docker コンテナを起動し、対応する DataSource を作成する 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 ワークスペース: https://apachenifi.slack.com/
新規ユーザーは以下の招待リンクを使用してワークスペースに参加できます。
機能リクエストやバグ報告を提出するには、Jira で https://issues.apache.org/jira/projects/NIFI/issues に登録してください。セキュリティ脆弱性の報告の場合は、直接 [email protected] にメールを送り、まず Apache NiFi セキュリティ脆弱性開示 および Apache ソフトウェア財団セキュリティ のプロセスを確認してください。
最新の NiFi ドキュメントは https://nifi.apache.org/ を参照してください。
最新の MiNiFi 固有のドキュメントは https://nifi.apache.org/minifi および https://cwiki.apache.org/confluence/display/MINIFI を参照してください。
最新の Registry 固有のドキュメントは https://nifi.apache.org/registry を参照してください。
特に明記されていない限り、本ソフトウェアは Apache License, Version 2.0 の下でライセンスされています。
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
この配布物には暗号化ソフトウェアが含まれています。お住まいの国では、暗号化ソフトウェアの輸入、所有、使用、および他国への再輸出に制限がある場合があります。暗号化ソフトウェアを使用する前に、暗号化ソフトウェアの輸入、所有、使用、および再輸出に関する自国の法律、規制、方針を確認し、許可されているかどうかを確認してください。詳細については https://www.wassenaar.org/ を参照してください。
米国政府商務省産業安全保障局 (BIS) は、本ソフトウェアを輸出管理番号 (ECCN) 5D002.C.1 に分類しています。これには、非対称アルゴリズムを使用する暗号化機能を利用または実行する情報セキュリティソフトウェアが含まれます。この Apache ソフトウェア財団の配布の形式と方法は、オブジェクトコードとソースコードの両方について、ライセンス例外 ENC テクノロジーソフトウェア無制限 (TSU) 例外 (BIS 輸出管理規則、セクション 740.13 を参照) の対象となり、輸出が許可されています。
以下に、含まれる暗号化ソフトウェアの詳細を示します。
Apache NiFi は、BouncyCastle、JCraft Inc.、および組み込みの Java 暗号化ライブラリを使用して、SSL、SSH、および機密設定パラメータの保護を行っています。各ライブラリの暗号化機能の詳細については、以下を参照してください。