malware · cryptomining · rootkit · linux · kernel · monero · privilege-escalation · cve-2026-31431 · container-escape
Rootpacket: عُدّة تعدين عملات على Linux تختبئ في النواة
حلّلت Kinryū Labs عُدّة Rootpacket، وهي عُدّة تعدين عملات على Linux تحمل جذر اختراق على مستوى النواة لتزييف استخدام المعالج والذاكرة، وترفع امتيازها إلى root عبر CVE-2026-31431 (خلل في ذاكرة صفحات AF_ALG يهرب أيضاً من الحاويات إلى المضيف)، وتتنكّر كمشغّل تعريف من Intel، وتعطّل الخدمات المكشوفة ذاتها التي يدخل منها عمّال التعدين المنافسون.
بقلم Davis Zheng·
TLP:CLEAR. أُجيز للنشر العام. هذا تحليل ساكن فقط: لم تُشغَّل أي عيّنة، وكل استنتاج يأتي من استخراج السلاسل، والتفكيك، ومراجعة الشيفرة المصدرية. محفظة مونيرو والتجمّع والبنية التحتية للمهاجم تُنشَر كمؤشرات دفاعية.
ملخص تنفيذي
- ~45%ما يعرضه top من المعالج بينما يعمل قرب 100%
- 3آليات استمرارية
- 7.8CVSS، CVE-2026-31431 (رفع امتياز محلي عبر page-cache في AF_ALG)
- المضيفroot من حاوية بلا امتياز
Rootpacket عُدّة تعدين عملات متعددة المكوّنات على Linux. تجمع جذر اختراق على مستوى النواة للتخفّي، واستغلالاً لرفع الامتياز لـ CVE-2026-31431 في واجهة التشفير AF_ALG في Linux، وعامل تعدين مونيرو XMRig 6.26.0 مُغلَّفاً بـ UPX ومُعاد تسميته إلى xrandom، وبرنامج إزالة منافسين. الشيفرة مكتوبة بمعظمها بالتركية (أسماء المتغيرات، التعليقات، سلاسل الحالة)، ما يشير إلى مشغّل ناطق بالتركية.
تعمل العُدّة بأحد وضعين. في وضع root تحمّل جذر اختراق من نوع وحدة نواة قابلة للتحميل (LKM) متنكّراً باسم intel_uncore_freq_aux، وتثبّته عبر DKMS كي ينجو من ترقيات النواة، وتسجّل خدمة systemd، وتنظّف الجهاز من المنافسين. وحين تعجز عن نيل root، ترتدّ إلى وضع فضاء المستخدم الذي يستمرّ عبر crontab ويشغّل عامل التعدين كعفريت (daemon). يتصل عامل التعدين بـ pool.supportxmr.com:443 عبر stratum+ssl ويعدّن مونيرو بخوارزمية RandomX.
المكوّن الجدير بالتمعّن هو جذر الاختراق. بينما يثبّت عامل التعدين المعالج قرب مئة بالمئة، يعيد جذر الاختراق كتابة /proc/stat بحيث يبلّغ top وhtop عن 40 إلى 50 بالمئة هادئة، ويُذبذب ذلك الرقم باستخدام jiffies كي يبدو الحمل حقيقياً لا ثابتاً عند قيمة واحدة. ويفعل الأمر ذاته بـ /proc/meminfo، ويصفّي قوائم الأدلّة ليخفي عملياته وملفاته.
التقييمات الرئيسية
- الهدف هو تعدين العملات (ثقة عالية). تحمل العُدّة XMRig 6.26.0، ومحفظة مونيرو مُضمَّنة بالكود، وإعداد تعدين على
pool.supportxmr.com، مع إطفاء التبرّع لمطوّر XMRig كي تذهب كل العائدات إلى المشغّل. - رفع الامتياز هو CVE-2026-31431 (“Copy Fail”)، كتابة حتمية في ذاكرة الصفحات على مسار
algif_aeadفي AF_ALG في Linux (CVSS 7.8، أُفصح عنها في أبريل 2026). ولأن ذاكرة الصفحات مشتركة على مستوى المضيف كله، فإن الكتابة ذاتها تهرب من الحاوية لتنال root على المضيف، فالحاوية المصابة هي مضيف مخترَق (ثقة عالية). - المشغّل أعلى بكثير من طاقم «أسقِط وعدّن» النمطي (ثقة عالية). جذر اختراق LKM مخصّص بخطّافات ftrace، واستمرارية DKMS تعيد البناء تلقائياً للنوى الجديدة، واستغلال page-cache عامل لـ CVE-2026-31431، واستمرارية متعددة الطبقات systemd/DKMS/cron، كلها مستوى هندسي لا يبلغه معظم عمّال تعدين العملات أبداً.
- المشغّل على الأرجح ناطق بالتركية (ثقة متوسطة). أسماء متغيرات وتعليقات ورسائل حالة بالتركية مثل
ROOT ele gecirildi!تسري في العُدّة كلها. - صُمّمت Rootpacket لتملك مضيفاً حصرياً وتحتفظ به. يزيل
killservice.shالخاص بها عمّال التعدين المنافسين ثم يعطّل الخدمات المكشوفة للخارج التي يستخدمها عمّال تعدين العملات للوصول الأولي، بما فيها Docker API على 2375/2376، الناقل ذاته الذي وثّقناه في مقال RedTail. هذه الطواقم تتقاتل على الأجهزة المُهيّأة بسوء نفسها.
بنية العُدّة
Rootpacket أداة مُسقِطة معيارية. أجزاؤها:
setup.sh Entry point. Checks privilege level, picks a deployment mode.
getroot Privilege escalation. Exploits CVE-2026-31431 (AF_ALG) for local root.
xrandom UPX-packed XMRig 6.26.0, renamed to dodge name-based detection.
kernel/
stealth.c LKM rootkit, compiled via DKMS, disguised as an Intel driver.
install.sh DKMS persistence engine.
killservice.sh Competitor elimination and "hardening".
rootpacket.tar.gz An inner copy of the whole toolkit, packaged for redistribution.
وضع root. يشغّل setup.sh الأمر getroot إن لم يكن بالفعل root، وينسخ xrandom إلى /opt/kernel-kd/، وينشئ خدمة systemd، ويشغّل kernel/install.sh ليجمّع جذر الاختراق ويحمّله عبر DKMS، ويشغّل killservice.sh لإخلاء المنافسة، ويبدأ عامل التعدين كخدمة دائمة.
ارتداد فضاء المستخدم. حين يكون root بعيد المنال، ينسخ setup.sh الأمر xrandom إلى ~/.xrandom/، ويكتب مُشغّلاً بقفل PID، ويثبّت مدخل crontab يُطلَق عند إعادة التشغيل وكل دقيقة، ويبدأ عامل التعدين بـ setsid كي ينجو من الصدفة الأم.
| الميزة | وضع root | وضع فضاء المستخدم |
|---|---|---|
| موقع عامل التعدين | /opt/kernel-kd/xrandom | ~/.xrandom/xrandom |
| الاستمرارية | systemd (kernel-kd.service) | crontab (@reboot + */1 * * * *) |
| جذر الاختراق | نعم (LKM عبر DKMS) | لا |
| قتل المنافسين | نعم (killservice.sh) | لا |
| يعمل بصفة | root (systemd) | المستخدم الحالي (عفريت setsid) |
getroot: CVE-2026-31431، root عبر إفساد ذاكرة الصفحات
getroot ثنائي ELF64 x86-64 مربوط ساكناً وغير مُجرَّد (not stripped)، مبني من getroot.c. يستغلّ CVE-2026-31431 (“Copy Fail”)، خللاً منطقياً في واجهة algif_aead في AF_ALG في نواة Linux أُفصح عنه في 29 أبريل 2026 (CVSS 7.8). يمنح الخلل كتابة حتمية بطول 4 بايت يتحكم فيها المهاجم في ذاكرة صفحات النواة، ويستخدمها getroot ليرقّع ثنائي SUID في الذاكرة ويخرج بصفة root.
| الخاصية | القيمة |
|---|---|
| النوع | ELF 64-bit LSB executable، x86-64، مربوط ساكناً، غير مُجرَّد |
| CVE | CVE-2026-31431 “Copy Fail” (CVSS 7.8، AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| النظام الفرعي | AF_ALG algif_aead، قالب AEAD authencesn(hmac(sha256),cbc(aes)) |
| المتأثر | Linux 4.14 إلى 6.19.11 (وصل الخلل في 2017، الإيداع 72548b093ee3)؛ أُصلح في 6.18.22 و6.19.12 و7.0+ |
| الهدف | /usr/bin/su — يُرقَّع .text الخاص به في الذاكرة داخل ذاكرة الصفحات |
| الموثوقية | حتمي، بلا حالة سباق |
| الاستخدام / الارتداد | ./getroot <cmd> [args...]؛ إن لم يُصِب الاستغلال، يشغّل الأمر بالامتيازات الحالية على أي حال |
الآلية. ترك تحسينٌ في مكانه عام 2017 في شيفرة AEAD صفحاتِ ذاكرة الصفحات التي جرى عليها splice قابعةً في كلٍّ من قائمة المبعثرات المصدر والوجهة. حين يكتب قالب authencesn قيمته المؤقتة ESN بطول 4 بايت عند الإزاحة التي يختارها المهاجم assoclen + cryptlen، تهبط تلك الكتابة داخل صفحة ذاكرة الصفحات لملف يقرأه المستخدم. عندئذ يفشل فحص HMAC ويُرجِع recvmsg() الخطأ EBADMSG، لكن النواة لا تتراجع عن الكتابة أبداً. يحلّل getroot رؤوس ELF لـ /usr/bin/su ليحسب إزاحة ملف نقطة دخوله، ثم يكرّر splice ← sendmsg (حاملاً البايتات الأربع المراد كتابتها في الـ AAD) ← recvmsg، مرة لكل مقطع 4 بايت من الشِفرة، مرقّعاً /usr/bin/su في ذاكرة الصفحات. ثم ينفّذ execve لـ /usr/bin/su: تحمّل النواة الصفحة المُفسَدة الآن، تعمل الشِفرة بصفة SUID-root، ويؤكّد getroot أن getuid() == 0 قبل تشغيل أمر المشغّل (طابعاً التركية [+] ROOT ele gecirildi!). لا يُمسّ الملف على القرص قط، فلا ترى مراقبةُ سلامة الملفات شيئاً.
الهروب من الحاوية إلى المضيف. ذاكرة صفحات Linux عامة على مستوى المضيف؛ لا تملك الحاويات واحدةً خاصة بها. العملية داخل حاوية بلا امتياز التي تُجري splice على /usr/bin/su الخاص بالمضيف تُفسد النسخة المُخزَّنة للمضيف، فيمنح execve root على المضيف، لا داخل الحاوية فقط. لذا فالحاوية المصابة مضيف مخترَق، ويمضي setup.sh ليحمّل جذر اختراق النواة في المضيف. إيقاف الحاوية وإزالتها لا يكفي؛ يجب إعادة بناء المضيف.
شغّلنا getroot مرة واحدة في جهاز افتراضي معزول (Kali، نواة 6.6.15). نفّذ تسلسل AF_ALG كاملاً لكنه لم ينل root على ذلك البناء وارتدّ إلى تشغيل الأمر بلا امتياز، وهو ما يتوافق مع استغلال يستهدف تخطيطات نواة محددة. لم نشغّل عامل التعدين.
xrandom: عامل التعدين
xrandom نسخة مُعاد تسميتها ومُغلَّفة بـ UPX من XMRig 6.26.0، عامل تعدين مونيرو مفتوح المصدر.
| الخاصية | القيمة |
|---|---|
| الهوية الحقيقية | XMRig 6.26.0 |
| التغليف | UPX 4.2.4 (2.8 ميغابايت مُغلَّفاً، 10.1 ميغابايت بعد فك التغليف) |
| الخوارزمية | RandomX (rx/0) |
| التجمّع | pool.supportxmr.com:443 عبر stratum+ssl |
| المحفظة | 46NVDFL6v5STw5Qw4j77PoBSHRTYnHZGZ8WRoGvHmpaMX7ZyhNUP2u24TLV9pNgncz1bZF2Vm8KkaNTzU7SXqrnFUx5zgHQ |
| مستوى التبرّع | 0 (تبرّع مطوّر XMRig مُعطَّل) |
التعدين عبر المنفذ 443 مع TLS يدع حركة المرور تمتزج للوهلة الأولى بـ HTTPS عادي، رغم أن مصافحة stratum لها بصمة TLS مختلفة لمن ينظر عن قرب.
stealth.c: جذر اختراق النواة
هذا أكثر أجزاء العُدّة تطوّراً. إنه جذر اختراق LKM يستخدم خطْف دوال ftrace لاعتراض دوال النواة ومحو أثر البرمجية الخبيثة، ويتنكّر طوال الوقت كمشغّل عتاد من Intel.
| الخاصية | القيمة |
|---|---|
| اسم الوحدة | intel_uncore_freq_aux |
| بيانات وصفية مزيّفة | MODULE_AUTHOR("Intel Corporation")، MODULE_DESCRIPTION("Intel Uncore Frequency Control Driver")، MODULE_VERSION("1.2.0") |
| الخطْف | ftrace عبر kallsyms_lookup_name (يُحلّ عبر kprobe في النوى 5.7 فأحدث) |
| التحكم | sysfs عند /sys/kernel/intel_uncore_freq/ (enabled، cpu_lo، cpu_hi، mem_lo، mem_hi، hide_tag) |
ما الذي يخطفه ولماذا:
- تقنيع المعالج. يخطف
show_statليعيد كتابة/proc/stat، مزيّفاً الاستخدام بين حدّين قابلين للضبط (40 إلى 50 بالمئة افتراضياً) ويُذبذب بـ jiffies كي يتحرك الرقم كحمل حقيقي لا أن يقبع ثابتاً. - تقنيع الذاكرة. يخطف
meminfo_proc_showليعيد كتابة/proc/meminfo، مزيّفاًMemFreeوMemAvailableوBuffersوCachedوActiveوInactive. - إخفاء العمليات. يخطف
iterate_dirليصفّي قوائم/proc، مخفياً معرّفات العمليات (PID) التي تطابق أسماؤها مجموعة مُضمَّنة بالكود:stealth،masscan،sshruns،ransomx،cpumask،xrandom،cpm_،kcpm،mask_helper،ftrhook،kintel_aux. ويستطيع المشغّل إضافة أسماء وقت التشغيل عبر/sys/kernel/intel_uncore_freq/hide_tag. - إخفاء الملفات. يخفي المسارات المطابقة لـ
stealthوcpumaskوkintel_auxوintel_uncore_freq_aux، ودليل sysfs نفسه. - إخفاء الذات. عند التحميل يزيل نفسه من
/proc/modulesو/sys/module/بـlist_del_init، ويحذف كائن sysfs الخاص به، ويزيد عدّاد مراجعه بـtry_module_getكي لا يستطيعrmmodتفريغه.
تلك القائمة المخفية أيضاً دليل: إلى جانب عامل التعدين يخفي masscan وsshruns وransomx، فالمشغّل على الأرجح يشغّل ماسحاً وقد يكون في العُدّة أكثر من مجرد عامل تعدين.
الأثر العملي أن المسؤول الذي يراقب top يرى جهازاً مشغولاً لكنه طبيعي، لا يجد عملية مارقة، ولا يستطيع رؤية وحدة النواة التي تكذب. الدلائل مادية وخارج النطاق: يسخن الجهاز، وتدور المراوح، ويرتفع سحب الطاقة، ولا شيء من ذلك يستطيع جذر الاختراق تزييفه.
الاستمرارية: ثلاث آليات، مقسومة بحسب الوضع
تعتمد استمرارية Rootpacket على الوضع الذي تهبط فيه. في وضع root تُطبّق آليتين تعزّز كلٌّ منهما الأخرى؛ وفي وضع فضاء المستخدم ترتدّ إلى ثالثة.
| # | الآلية | الوضع | التفصيل |
|---|---|---|---|
| 1 | خدمة systemd | root | kernel-kd.service، Type=simple، Restart=always، RestartSec=3 |
| 2 | وحدة DKMS | root | تثبّت جذر الاختراق تحت /lib/modules/$(uname -r)/extra/؛ ينجو من ترقيات النواة |
| 3 | crontab | user | @reboot بالإضافة إلى كل دقيقة (* * * * *)، بقفل PID وsetsid |
مدخل DKMS هو العنيد: يثبّت جذر الاختراق عبر نظام بناء وحدات النواة نفسه، فترقية نواة روتينية تعيد بناءه وتسليحه بدل إزالته.
killservice.sh: إخلاء الجهاز وإغلاقه
يسمّي البرنامج نفسه “cryptojacker hardening” (“تحصين عامل تعدين العملات”) في لافتته، وذلك الوصف دقيق من وجهة نظر المشغّل. يعمل في ثلاث مراحل.
المرحلة 1: إطفاء الخدمات المكشوفة. يستهدف خدمات تنصت على 0.0.0.0 وهي نقاط دخول شائعة لتعدين العملات، موقِفاً ومعطِّلاً ومُقنِّعاً كلاً منها، وضابطاً chmod 000 على الثنائيات، ومضيفاً قواعد DROP في iptables:
| الخدمة | المنفذ |
|---|---|
| Redis | 6379 |
| Docker | 2375/2376 |
| PostgreSQL | 5432 |
| MongoDB | 27017 |
| Elasticsearch | 9200/9300 |
| Memcached | 11211 |
| Hadoop YARN | 8088 |
| Jenkins | 8080 |
| Confluence | 8090 |
سطر Docker هو النسيج الرابط بـ تقرير RedTail لدينا: تغلق Rootpacket بالضبط باب 2375/2376 الذي يدخل منه RedTail. المشغّل الذي يهبط أولاً يعدّن على المضيف ثم يقفل الباب أمام الطاقم التالي، محصّناً الجهاز ضد التقنيات التي كانوا سيستخدمونها.
المرحلة 2: إزالة عمّال التعدين المنافسين. يقتل العمليات، ويحذف الملفات، وينظّف مهام cron، ويطهّر مفاتيح SSH المرتبطة بعائلات تعدين عملات معروفة، منها XMRig وKinsing (kdevtmpfsi) وTeamTNT (tntrecht، mdrfckr) وsustes وwatchdogs وminerd، إضافة إلى ماسحات مثل masscan وpnscan وzgrab.
المرحلة 3: إزالة جذور اختراق فضاء المستخدم. ينتزع مدخلات LD_PRELOAD الخبيثة المعروفة (libprocesshider.so، libjdk.so، libpamx.so، وlibselinux.so.3 مزيّف، وxhide) من /etc/ld.so.preload ويحذف المكتبات، مخلياً جذور اختراق فضاء المستخدم للمنافسين التي قد تتداخل مع جذره.
العزو
أسماء المتغيرات والتعليقات وسلاسل الحالة التركية في العُدّة (مثل ROOT ele gecirildi!، “تمّ الاستيلاء على root”) تشير بثقة متوسطة إلى مشغّل ناطق بالتركية. وجدنا رابط توزيع أو تحضير على linuxutil5.pages[.]dev، مُستضافاً على Cloudflare Pages، وهو ما يناسب نمط تحضير الحمولات على بنية تحتية مجانية وذات سمعة للامتزاج. والـ rootpacket.tar.gz الداخلي، نسخة مكتفية ذاتياً من العُدّة كلها، يمنح المشغّل حزمة جاهزة لدفعها إلى المضيف التالي.
مؤشرات الاختراق
الشبكة
| المؤشر | السياق |
|---|---|
pool.supportxmr.com / pool.supportxmr.com:443 | تجمّع تعدين مونيرو الأساسي، stratum+ssl |
linuxutil5.pages[.]dev | توزيع / تحضير (Cloudflare Pages) |
api.xmrig.com، randomx.xmrig.com:443 | نقاط نهاية API وقياس أداء XMRig |
donate.v2.xmrig.com، donate.ssl.xmrig.com | تجمّعات تبرّع مطوّر XMRig (موجودة، التبرّع معطَّل) |
stratum+ssl:// إلى المنفذ 443 | حركة تعدين TLS صادرة |
محفظة مونيرو: 46NVDFL6v5STw5Qw4j77PoBSHRTYnHZGZ8WRoGvHmpaMX7ZyhNUP2u24TLV9pNgncz1bZF2Vm8KkaNTzU7SXqrnFUx5zgHQ
الملفات (SHA-256)
| الملف | SHA-256 | MD5 |
|---|---|---|
rootpacket.tar.gz (خارجي) | e2d0dab6b29df89d123fe8581047a03ac9b89ae8fa0d1f334b5aefbb93152857 | |
getroot | dda96d8a4bcc39dc7679347a4386bf1024152d2ccc46d333725ad0cda855d952 | |
xrandom (مُغلَّف) | ec3ef3dce99fa6cbc480f0f0b0c292676afed68704c44396271c7dc6afea2937 |
Build ID: getroot 148d8d902efd93ed892a541972fbcea3a99d05a3، xrandom d7a91225bdd2e3ab67cabded9d7809bcc724401f.
آثار على المضيف
| المسار | السياق |
|---|---|
/opt/kernel-kd/xrandom | ثنائي عامل التعدين (وضع root) |
~/.xrandom/xrandom، ~/.xrandom/run.sh | عامل التعدين والمُشغّل (وضع فضاء المستخدم) |
/tmp/.xrandom.lock | قفل PID (وضع فضاء المستخدم) |
/etc/systemd/system/kernel-kd.service | وحدة systemd خبيثة |
/usr/src/intel_uncore_freq_aux-1.2.0/ | مصدر DKMS لجذر الاختراق |
/sys/kernel/intel_uncore_freq/ | واجهة تحكم جذر الاختراق في sysfs |
/lib/modules/*/extra/intel_uncore_freq_aux.ko | وحدة جذر الاختراق المُجمَّعة |
سلوكية
- عملية باسم
xrandomتعمل بصفة root أو المستخدم الحالي. - أرقام معالج في
/proc/statلا تتفق مع عدّادات أداء العتاد (perf stat)، أو مع سرعة المراوح وسحب الطاقة. - خدمة systemd باسم
kernel-kd(مُفعَّلة،Type=simple،Restart=always). - مدخل cron موسوم بـ
# xrandom-userland-autostart. - وحدة نواة
intel_uncore_freq_auxتُحمَّل عند الإقلاع لكنها غائبة عنlsmod.
الكشف
إذا لم يكن جذر الاختراق محمّلاً
systemctl status kernel-kd.service
ls -la /opt/kernel-kd/ ~/.xrandom/
dkms status | grep intel_uncore_freq
crontab -l | grep xrandom
lsmod | grep intel_uncore
إذا كان جذر الاختراق محمّلاً
عروض فضاء المستخدم مخترَقة، فيجب أن يأتي الكشف من تحت جذر الاختراق أو من جانبه:
- قارن معالج
/proc/statبعدّادات العتاد عبرperf stat. الفجوة الكبيرة هي الدليل. - راقب خطّافات ftrace على
show_statوmeminfo_proc_showوiterate_dir. - عامل أي تناقض بين المعالج المُبلَّغ عنه والطاقة أو الحرارة أو سرعة المراوح الحقيقية كإشارة قوية.
اصطياد رفع الامتياز
- مقبس
AF_ALG،SOCK_SEQPACKETتفتحه عملية ليست أداة تشفير معروفة (cryptsetup،openssl،gpg،systemd-cryptsetup) هو الدليل الأساسي. الترتيب الكامل هوsocket(AF_ALG)←bind←setsockopt(SOL_ALG)←accept←pipe←splice←sendmsg←splice←recvmsg(متكرّر)، ثمexecve(/usr/bin/su). - قارن بايتات كل ثنائي SUID على القرص بعرضها في ذاكرة الصفحات. يقرأ
sha256sumعبر الذاكرة المؤقتة ويُظهر النسخة المُفسَدة، فاقرأ القرص مباشرةً بـdd if=<file> iflag=directواحسب بصمته، ثم قارن. عدم تطابق في ثنائي SUID هو إفساد لذاكرة الصفحات.
قاعدة YARA مرشّحة
rule Rootpacket_Cryptojacker
{
meta:
description = "Rootpacket Linux cryptojacking toolkit"
reference = "Kinryu Labs CTI 2026-06-16"
strings:
$wallet = "46NVDFL6v5STw5Qw4j77PoBSHRTYnHZGZ8WRoGvHmpaMX7ZyhNUP2u24TLV9pNgncz1bZF2Vm8KkaNTzU7SXqrnFUx5zgHQ" ascii
$svc = "kernel-kd" ascii
$cron = "xrandom-userland-autostart" ascii
$mod = "intel_uncore_freq_aux" ascii
condition:
$wallet or 2 of ($svc, $cron, $mod)
}
المعالجة
- أزل جذر الاختراق من حالة نظيفة معلومة. أقلِع من وسيط حيّ أو وسيط استرداد. احذف
/lib/modules/*/extra/intel_uncore_freq_aux.ko*وشغّلdkms remove intel_uncore_freq_aux/1.2.0 --all، ثم احذف/usr/src/intel_uncore_freq_aux-1.2.0/وأعد بناء initramfs (update-initramfs -uأوdracut -fأوmkinitcpio -P). مدخل DKMS يجب أن يزول وإلا أُعيد بناؤه. - أزل الخدمة:
systemctl stop kernel-kd; systemctl disable kernel-kd; rm /etc/systemd/system/kernel-kd.service; systemctl daemon-reload. - أزل عامل التعدين:
rm -rf /opt/kernel-kd/ ~/.xrandom/ /tmp/.xrandom.lock، ثمpkill -9 -f xrandom. - نظّف cron من أسطر
# xrandom-userland-autostart. - استعد ما كسره killservice.sh. يضبط
chmod 000على Redis وDocker وPostgreSQL وMongoDB وثنائيات أخرى ويضيف قواعد DROP في iptables. أعد تثبيت الحزم المتأثرة وراجع جدار الحماية. - اصطد جانبياً. الـ
rootpacket.tar.gzالداخلي مبني لإعادة التوزيع، ففحص مضيفين آخرين بحثاً عن المؤشرات ذاتها، وراجع السجلات بحثاً عن استغلال خدماتkillservice.shلإيجاد طريق الدخول. - أغلق CVE-2026-31431. رقّع إلى نواة مُصلَحة (6.18.22 أو 6.19.12 أو 7.0+ أو النقل الخلفي لتوزيعتك). وحيث لا تستطيع الترقيع دفعةً واحدة، عطّل الواجهة المعرَّضة:
echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.confثمrmmod algif_aead. للحاويات، احجبAF_ALG(family 38) في ملف seccomp. - افترض اختراق المضيف من حاوية. لأن كتابة ذاكرة الصفحات تعبر حدّ الحاوية، عامل أي مضيف شغّل
setup.sh، ولو من داخل حاوية، كمخترَق بالكامل. أعد بناء المضيف بدل إزالة الحاوية فحسب.
مخطط MITRE ATT&CK
| التكتيك | التقنية |
|---|---|
| Initial Access | T1190 Exploit Public-Facing Application (Redis، Docker، MongoDB، Elasticsearch، Jenkins، Hadoop YARN، ضمنياً) |
| Execution | T1059.004 Unix Shell |
| Privilege Escalation | T1068 Exploitation for Privilege Escalation (CVE-2026-31431، AF_ALG algif_aead); T1611 Escape to Host (ذاكرة صفحات مشتركة) |
| Persistence | T1543.002 Systemd Service; T1053.003 Cron; T1547.006 Kernel Modules (DKMS) |
| Defense Evasion | T1014 Rootkit; T1036.005 Masquerading: Match Legitimate Name; T1027.002 Software Packing (UPX); T1070.004 File Deletion; T1564.001 Hidden Files |
| Discovery | T1057 Process Discovery (مطاردة المنافسين) |
| Lateral Movement | T1570 Lateral Tool Transfer (حزمة إعادة توزيع داخلية) |
| Impact | T1496 Resource Hijacking (تعدين مونيرو) |
المنهجية وملاحظات المحلل
- كان التحليل ساكناً بمعظمه (استخراج السلاسل، التفكيك، مراجعة الشيفرة المصدرية، التحليل البنيوي) على Kali Linux x86-64. كما شغّلنا
getrootمرة واحدة في جهاز افتراضي معزول (نواة 6.6.15) لمراقبة سلوكه: حاول تسلسل AF_ALG، لم ينل root على ذلك البناء، وارتدّ إلى تشغيل الأمر بلا امتياز. لم يُشغَّل عامل التعدين، ولم يُرفَع أي شيء. - مكوّن رفع الامتياز هو CVE-2026-31431، حُدِّد من قالب
authencesn(hmac(sha256),cbc(aes))المربوط بمقبس AF_ALG، وهدف ذاكرة الصفحات/usr/bin/su، وحلقة الكتابةsplice/sendmsg/recvmsgفي الثنائي. - العيّنات (العُدّة ومكوّناتها) متاحة للباحثين والمدافعين الآخرين عند الطلب. راسل [email protected] مع ملاحظة قصيرة عمّن أنت وما حاجتك إليها.