
استغلال لـ Apache NiFi CVE-2023-34468، يستهدف ثغرة في الإصدارات 1.21.0 والإصدارات الأقدم لإظهار الوصول إلى البيانات واختراق النظام.
[][nifi]
Apache NiFi هو نظام سهل الاستخدام وقوي وموثوق لمعالجة البيانات وتوزيعها.
صُمم Apache NiFi لتدفق البيانات. إنه يدعم رسومًا بيانية موجهة عالية التكوين لتوجيه البيانات وتحويلها ومنطق الوساطة بين الأنظمة. تتضمن بعض ميزاته الرئيسية ما يلي:
اقرأ دليل البدء السريع للتطوير. سيتضمن معلومات حول الحصول على نسخة محلية من المصدر، ويقدم إرشادات حول تتبع المشكلات، ويقدم بعض التحذيرات حول المشاكل الشائعة مع بيئات التطوير.
للحصول على دليل أكثر شمولاً للتطوير ومعلومات حول المساهمة في المشروع، اقرأ دليل مطوّري NiFi.
شغّل mvn clean install أو للبناء المتوازي نفّذ mvn -T 2.0C clean install.
يجب أن يستغرق البناء المتوازي حوالي خمس عشرة دقيقة على الأجهزة الحديثة.
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 مثبتًا:
laptop:nifi-1.0.0-SNAPSHOT myuser$ grep Generated logs/nifi-app*log
يسجّل NiFi بيانات الاعتماد المُنشأة على النحو التالي:
Generated Username [USERNAME]
Generated Password [PASSWORD]
سيكون USERNAME معرّفًا عشوائيًا (UUID) مكونًا من 36 حرفًا. وستكون PASSWORD سلسلة عشوائية مكونة من
32 حرفًا. سيتم تخزين بيانات الاعتماد المُنشأة في conf/login-identity-providers.xml مع تخزين كلمة المرور
باستخدام تجزئة bcrypt. سجّل بيانات الاعتماد هذه في مكان آمن للوصول إلى NiFi.
يمكن استبدال اسم المستخدم وكلمة المرور العشوائيين ببيانات اعتماد مخصصة باستخدام الأمر التالي:
./bin/nifi.sh set-single-user-credentials <username> <password>
افتح الرابط التالي في متصفح الويب للوصول إلى NiFi: https://localhost:8443/nifi
سيعرض متصفح الويب رسالة تحذير تشير إلى وجود خطر أمني محتمل بسبب الشهادة الموقّعة ذاتيًا التي أنشأها NiFi أثناء التهيئة. يعد قبول الخطر الأمني المحتمل ومتابعة تحميل الواجهة خيارًا متاحًا لبيئات التطوير الأولية. يجب على عمليات النشر في الإنتاج توفير شهادة من مرجع تصديق موثوق وتحديث إعدادات مخزن المفاتيح (keystore) ومخزن الثقة (truststore) في 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 في إدارة تدفق البيانات، مع التركيز على جمع البيانات عند مصدر إنشائها.