
استغلال لـ Apache NiFi CVE-2023-34468، يستهدف ثغرة في الإصدارات 1.21.0 والإصدارات الأقدم لإظهار الوصول إلى البيانات واختراق النظام.
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 في إدارة تدفق البيانات، مع التركيز على جمع البيانات عند مصدر إنشائها.
تتمثل الأهداف المحددة لـ 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 أو ملف zip وفك ضغطهما أينما شئت. ستكون التوزيعة داخل مجلد رئيسي مشترك باسم الإصدار.
$ 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 أو استخدم minifi-toolkit، الذي يساعد في تكييف قوالب NiFi مع تنسيق ملف إعداد YAML الخاص بـ MiNiFi.
إذا كنت تختبر تطويرًا مستمرًا، فمن المرجح أنك ستحتاج إلى إيقاف مثيلك.
$ 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 — هو تطبيق تكميلي يوفر موقعًا مركزيًا لتخزين وإدارة الموارد المشتركة عبر مثيل واحد أو أكثر من 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
لاحظ أن خادم الويب الخاص بالتطبيق قد يستغرق بعض الوقت ليتم تحميله قبل أن يصبح متاحًا.
مع الإعدادات الافتراضية، ستكون واجهة التطبيق متاحة على http://localhost:18080/nifi-registry
إذا كنت ترغب في الاختبار مقابل REST API الخاص بالتطبيق، يمكنك الوصول إلى REST API مباشرةً. مع الإعدادات الافتراضية، سيكون عنوان URL الأساسي لواجهة REST API على http://localhost:18080/nifi-registry-api. ستتوفر واجهة لاختبار REST API على http://localhost:18080/nifi-registry-api/swagger/ui.html
ستكون السجلات متاحة في logs/nifi-registry-app.log
لضمان عمل NiFi Registry بشكل صحيح مع قواعد البيانات العلائقية المختلفة، يمكن تشغيل اختبارات التكامل الحالية ضد قواعد بيانات مختلفة بالاستفادة من إطار عمل Testcontainers.
تُستخدم ملفات تعريف Spring للتحكم في مصنع DataSource الذي سيتم توفيره لسياق تطبيق Spring. يتم توفير مصانع DataSource تستخدم إطار عمل Testcontainers لبدء حاوية Docker لقاعدة بيانات معينة وإنشاء DataSource مطابق. إذا لم يتم تحديد أي ملف تعريف، فسيتم استخدام DataSource من نوع H2 افتراضيًا ولن تكون هناك حاجة إلى حاويات 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 أولاً.
انظر https://nifi.apache.org/ لأحدث توثيقات NiFi.
انظر https://nifi.apache.org/minifi و https://cwiki.apache.org/confluence/display/MINIFI لأحدث التوثيقات الخاصة بـ MiNiFi.
انظر https://nifi.apache.org/registry لأحدث التوثيقات الخاصة بـ Registry.
ما لم يُذكر خلاف ذلك، هذا البرنامج مرخّص بموجب رخصة Apache، الإصدار 2.0
مرخص بموجب رخصة Apache، الإصدار 2.0 (يشار إليها باسم "الرخصة")؛ لا يجوز لك استخدام هذا الملف إلا بما يتوافق مع الرخصة. يمكنك الحصول على نسخة من الرخصة على:
ما لم يتطلب القانون المعمول به أو يُتفق عليه كتابيًا، يتم توزيع البرنامج بموجب الرخصة على أساس "كما هو" ("AS IS")، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الرخصة للاطلاع على الأحكام المحددة التي تحكم الأذونات والقيود بموجب الرخصة.
يتضمن هذا التوزيع برمجيات تشفير. قد يكون لدى البلد الذي تقيم فيه حاليًا قيود على استيراد أو حيازة أو استخدام و/أو إعادة تصدير برمجيات التشفير إلى بلد آخر. قبل استخدام أي برنامج تشفير، يرجى مراجعة قوانين بلدك وأنظمته وسياساته المتعلقة باستيراد أو حيازة أو استخدام أو إعادة تصدير برمجيات التشفير لمعرفة ما إذا كان ذلك مسموحًا به. راجع https://www.wassenaar.org/ لمزيد من المعلومات.
صنفت وزارة التجارة الأمريكية، مكتب الصناعة والأمن (BIS)، هذا البرنامج على أنه رقم ضبط تصدير السلع (ECCN) 5D002.C.1، والذي يشمل برمجيات أمن المعلومات التي تستخدم أو تؤدي وظائف تشفير باستخدام خوارزميات غير متماثلة. إن شكل وطريقة توزيع مؤسسة برمجيات Apache هذه يجعلها مؤهلة للتصدير بموجب استثناء الترخيص ENC Technology Software Unrestricted (TSU) (انظر لوائح إدارة الصادرات الخاصة بـ BIS، القسم 740.13) لكل من الكود البرمجي والكود المصدري.
فيما يلي مزيد من التفاصيل حول برمجيات التشفير المضمنة:
يستخدم Apache NiFi مكتبات BouncyCastle وJCraft Inc. ومكتبات Java cryptography المدمجة لـ SSL وSSH وحماية معلمات التكوين الحساسة. انظر
لمزيد من التفاصيل حول ميزات التشفير لكل من هذه المكتبات.