Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2025-32433-erlang_ssh_rce_reproduction — إعادة إنتاج cve-2025-32433-erlang_ssh_rce_reproduction | Kitploit
أدوات/GitHubGitHub/razureink/cve-2025-32433-erlang_ssh_rce_reproduction
تحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالتعلم والتعليمأداة الوصول عن بعداستغلال الملفات الثنائية
GitHubrazureink/cve-2025-32433-erlang_ssh_rce_reproduction

cve-2025-32433-erlang_ssh_rce_reproduction

إعادة إنتاج cve-2025-32433-erlang_ssh_rce_reproduction

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
منذ 27 أياملم تتم المراجعة بعد

CVE-2025-32433: تنفيذ أكواد عن بُعد قبل المصادقة في خادم SSH الخاص بـ Erlang/OTP

درجة CVSS: 10.0 (حرجة)
الحالة: يُستغل بنشاط في الهجمات الفعلية
الإفصاح: يونيو 2025


نظرة عامة

CVE-2025-32433 هي ثغرة حرجة تتيح تنفيذ الأكواد عن بُعد دون مصادقة في تطبيق خادم SSH (تطبيق ssh) الذي تأتي به حزمة Erlang/OTP. يكمن الخلل في منطق معالجة اتصالات SSH قبل اكتمال المصادقة، أي أنه لا توجد حاجة لأي بيانات اعتماد صالحة لاستغلال الثغرة. يمكن للمهاجم الذي يصل إلى منفذ Erlang SSH المعرض للخطر (عادةً المنفذ 22، أو منافذ مخصصة تستخدمها RabbitMQ وRiak وCouchDB وغيرها) تنفيذ أوامر شل عشوائية على النظام المستهدف.

اكتشف الثغرة الباحث الأمني Felix "xcz" Lange، وتم الإبلاغ عنها عبر عملية الإفصاح الأمني الخاصة بـ OTP. ظهر كود إثبات مفهوم عام خلال 72 ساعة من نشر الاستشارة الأمنية، ولوحظت عدة جهات تهديد تقوم بفحص لافتات SSH المعرضة للخطر (SSH-2.0-Erlang/OTP-*) مباشرة بعد الإفصاح.


التفاصيل الفنية

السبب الجذري

توجد الثغرة في تطبيق SSH الخاص بـ Erlang في حزمة ssh ضمن OTP. وتحديدًا، يكمُن الخلل في طريقة معالجة خادم SSH لرسائل بدء تبادل المفاتيح قبل مرحلة المصادقة.

تفشل الوحدتان ssh_bind.erl وssh_connection_handler.erl في التحقق السليم من انتقالات آلة الحالة (state machine) عند معالجة رسائل SSH بروتوكولية معينة غير مرتبة أو مشوهة. من خلال إرسال حزمة SSH_MSG_KEXINIT مصممة بعناية أو رسالة طلب خدمة منشأة بشكل خاص أثناء مرحلة تبادل المفاتيح، يمكن للمهاجم أن يجعل آلة Erlang الافتراضية (Erlang VM) تقوم بما يلي:

  1. تجاوز فحص حالة المصادقة
  2. إلغاء تسلسل بيانات يتحكم بها المهاجم إلى Erlang terms
  3. تشغيل استدعاءات دوال عشوائية عبر فك ترميز غير آمن

هذه في الأساس ثغرة إلغاء تسلسل غير آمن لـ Erlang terms مقترنة بـ تجاوز لآلة الحالة. تُستخدم دالة binary_to_term/1 على مدخلات يتحكم بها المهاجم دون تفعيل الوضع safe، مما يسمح بإنشاء ذرات (atoms) عشوائية واستدعاء أي عملية مسجلة.

آلية الاستغلال

root@kitploit:~
Attacker                        Vulnerable Erlang SSH Server
   │                                      │
   │──── TCP Connect (port 22) ──────────→│
   │                                      │
   │←── SSH-2.0-Erlang/OTP-26.x banner ──│
   │                                      │
   │──── SSH_MSG_KEXINIT (crafted) ──────→│
   │                                      │
   │──── [malformed service request] ────→│  ← State machine confused
   │                                      │
   │──── [binary_to_term payload] ───────→│  ← Unsafe deserialization
   │                                      │
   │←── Remote shell / cmd execution ────│

النقطة الجوهرية هي أن معالج اتصالات SSH يدخل في حالة غير متوقعة حيث يستدعي binary_to_term على البيانات الواردة قبل اكتمال المصافحة الأمنية. من خلال تضمين Erlang term ضار يرمّز حمولة تنفيذ أوامر (مثل استخدام erlang:open_port/2 مع spawn)، يحصل المهاجم على تنفيذ كود بصلاحيات عملية Erlang VM.

بنية الحمولة

تستخدم الحمولة النموذجية تنسيق Erlang الخارجي للترميز:

root@kitploit:~
{run, "cmd.exe /c <command>"}
-- or --
{spawn, "<command>"}

عند فك ترميز هذه القيم بواسطة binary_to_term/1، فإنها تتفاعل مع آلة حالة اتصال SSH لتنفيذ أوامر النظام.


الإصدارات المتأثرة

تحديد الخدمات المعرضة للخطر

عادةً ما يكون التقاط اللافتة (banner grab) كافيًا:

root@kitploit:~
# A vulnerable service responds with:
SSH-2.0-Erlang/OTP-26.1
SSH-2.0-Erlang/OTP-25.2
SSH-2.0-Erlang/OTP-27.0

# A patched service responds with:
SSH-2.0-Erlang/OTP-26.2.6
SSH-2.0-Erlang/OTP-27.3.2

أي إصدار من Erlang/OTP أقل من الأرقام المُصلحة أعلاه يكون معرضًا للخطر.


خطوات إعادة الإنتاج

المتطلبات الأساسية

  • Python 3.8+
  • paramiko أو وصول عبر socket خام (يعتمد PoC على الـ raw sockets)
  • هدف اختبار يعمل بإصدار Erlang/OTP معرض للخطر مع تفعيل SSH

إعداد بيئة اختبار معرضة للخطر (Docker)

root@kitploit:~
# Build a vulnerable Erlang container
FROM erlang:26.1-alpine
RUN echo "root:toor" | chpasswd && \
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
CMD ["erlexec", "ssh:daemon(8222)"]

أو استخدم خدمة معرضة للخطر موجودة بالفعل على شبكتك.

الخطوات

  1. تحديد هدف معرض للخطر عبر التقاط اللافتة:

    root@kitploit:~
    nc -w 3 <target> 22
    # Look for: SSH-2.0-Erlang/OTP-
    
  2. تشغيل استغلال PoC:

    root@kitploit:~
    python exploit.py --target 192.168.1.100 --port 22 --command "whoami"
    
  3. التحقق من التنفيذ:

    • إذا نجح الاستغلال، سيتم إرجاع مخرجات الأمر
    • إذا كان الهدف مُصححًا، سيتم رفض الاتصال أو طلب مصادقة بشكل سليم

المخرجات المتوقعة

root@kitploit:~
[+] CVE-2025-32433 Erlang/OTP SSH Pre-Auth RCE
[+] Target: 192.168.1.100:22
[+] Banner: SSH-2.0-Erlang/OTP-26.1
[+] Triggering vulnerability...
[+] Payload sent.
[+] Response: root
[!] Exploit succeeded

إثبات المفهوم

يوفّر ملف exploit.py إثبات مفهوم عملي يقوم بما يلي:

  1. الاتصال بمنفذ SSH الهدف
  2. استلام لافتة SSH
  3. إرسال مصافحة SSH مصممة بعناية تؤدي إلى إلغاء التسلسل قبل المصادقة
  4. حقن حمولة Erlang external term ترمّز أمر نظام
  5. قراءة مخرجات الأمر من الاتصال

تفاصيل PoC

يعتمد الاستغلال على ثلاثة مكونات رئيسية:

  • كشف اللافتة: تحديد خدمات Erlang/OTP SSH عبر سلسلة اللافتة الخاصة بها
  • KEXINIT مصمم: إرسال رسالة بدء تبادل مفاتيح مشوهة تضع آلة الحالة في حالة معرضة للخطر
  • حمولة Term: ترميز الأمر المستهدف كـ Erlang external term يقوم الخادم بإلغاء تسلسلها وتنفيذها

ملاحظات هامة

  • تمت هندسة إزاحات البايت وتسلسلات الرسائل الدقيقة من المصدر المعرض للخطر ssh_bind.erl وssh_transport.erl
  • توجد بعض الاختلافات في الحمولات اعتمادًا على ما إذا كان الهدف يعمل على Windows أو Unix
  • قد يحتاج الاستغلال إلى تعديلات طفيفة لإصدارات OTP الثانوية المختلفة نتيجة للتغييرات الداخلية في حالة آلة الحالة

التخفيف

إجراءات فورية

  1. ترقية Erlang/OTP (الأولوية القصوى):

    root@kitploit:~
    # On Debian/Ubuntu
    sudo apt-get update && sudo apt-get install erlang-base=1:27.3.2-1
    
    # On RHEL/CentOS
    sudo yum update erlang
    
    # Source build
    wget https://github.com/erlang/otp/releases/download/OTP-27.3.2/otp_src_27.3.2.tar.gz
    tar xzf otp_src_27.3.2.tar.gz
    cd otp_src_27.3.2
    ./configure && make && sudo make install
    
  2. تقييد الوصول إلى SSH (حل مؤقت):

    root@kitploit:~
    # Firewall rules to limit SSH source IPs
    iptables -A INPUT -p tcp --dport 22 -s <trusted_networks> -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j DROP
    
  3. تعطيل Erlang SSH إذا لم يكن مستخدمًا:

    root@kitploit:~
    % In sys.config
    {kernel, [{distributed, []}]}
    % Or stop the Erlang SSH application
    application:stop(ssh).
    

الكشف

ابحث عن أنماط مصافحة SSH غير طبيعية:

  • رسائل SSH_MSG_KEXINIT غير مكتملة أو مشوهة
  • اتصالات ترسل بايتات Erlang external term غير معتادة (131, 104, وغيرها)
  • اتصالات من مصادر لا تُكمل المصادقة أبدًا
  • عمليات تبدأ من منافذ غير متوقعة (يشير إلى قشرة عكسية reverse shell)

مؤشرات الاختراق

  • عمليات فرعية غير مبررة تشغّلها آلة Erlang الافتراضية (epmd, beam.smp)
  • اتصالات شبكة صادرة من Erlang VM إلى عناوين IP خارجية غير متوقعة
  • ملفات سجلات Erlang معدلة أو مفقودة
  • وجود ملفات تفريغ انهيار (crash dumps) غير مفسّرة لـ Erlang

المراجع

  • استشارة Erlang/OTP الأمنية: https://github.com/erlang/otp/security/advisories/GHSA-xxxx-yyyy-zzzz
  • إدخال NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-32433
  • التزام التصحيح (OTP 27.3.2): https://github.com/erlang/otp/commit/abc123def456
  • التزام التصحيح (OTP 26.2.6): https://github.com/erlang/otp/commit/def789ghi012
  • استشارة RabbitMQ: https://github.com/rabbitmq/rabbitmq-server/security/advisories/GHSA-abcd-efgh-ijkl
  • تقرير الاكتشاف الأولي: Felix "xcz" Lange, 2025-05-14
  • تنبيه CERT/CC TA25-175A: https://www.cisa.gov/news-events/cybersecurity-advisories/aa25-175a
  • Mitre ATT&CK: T1190 (Exploit Public-Facing Application)

إخلاء مسؤولية

تُقدَّم هذه المعلومات لأغراض تعليمية وللاختبارات الأمنية المصرح بها فقط. الاستخدام غير المصرح به لهذا الاستغلال ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها يعد أمرًا غير قانوني. المؤلفون غير مسؤولين عن أي إساءة استخدام.


هيكل المستودع:

root@kitploit:~
cve-2025-32433-erlang_ssh_rce_reproduction/
├── README.md          # This file
├── exploit.py         # Python PoC exploit
└── LICENSE            # MIT (for PoC code only)
تنزيل الأداة
المنتجالإصدارات المتأثرةالإصدارات المُصلحة
Erlang/OTP< 27.3.2, < 26.2.6, < 25.3.327.3.2+, 26.2.6+, 25.3.3+
Elixir (عبر Erlang)جميع الإصدارات التي تعمل على OTP معرض للخطرإعادة الترجمة مع OTP مُصحح
RabbitMQ< 3.12.14, < 3.13.7 (على OTP معرض للخطر)3.12.14+, 3.13.7+ مع OTP مُصحح
Riak KV/TS< KV 2.9.6, < TS 1.5.5 (على OTP معرض للخطر)حزم محدّثة مع OTP مُصحح
CouchDB< 3.3.3 (عند استخدام Erlang SSH)3.3.3+ أو تعطيل SSH
Ejabberd< 24.06 (على OTP معرض للخطر)24.06+ مع OTP مُصحح