
PJSIP cve-2026-25994 إثبات مفهوم (PoC) لتجاوز سعة المخزن المؤقت
CVE-2026-25994 هو ثغرة أمنية من نوع تجاوز سعة المخزن المؤقت للمكدس تؤثر على تنفيذ ICE (Interactive Connectivity Establishment) في pjsip ≤ 2.16، وتحديدًا داخل مكوّن PJNATH.
توجد الثغرة في الدالة:
pj_ice_sess_create_check_list()
الموجودة في:
pjnath/src/pjnath/ice_session.c
تنتج المشكلة عن معالجة غير آمنة للسلاسل النصية عند إنشاء اسم مستخدم ICE:
char buf[128]; // Fixed-size stack buffer
username.ptr = buf;
pj_strcpy(&username, rem_ufrag); // No bounds checking
pj_strcat2(&username, ":");
pj_strcat(&username, &ice->rx_ufrag);
يتم أخذ rem_ufrag مباشرةً من خاصية SDP:
a=ice-ufrag:
لا يتم إجراء أي تحقق من الطول قبل النسخ إلى مخزن مؤقت للمكدس بحجم 128 بايت
وهذا يسمح للمهاجم بتجاوز سعة المكدس، مما قد يؤدي إلى استبدال:
عنوان العودة
إطار المكدس
بيانات Canary / المحاذاة
يؤدي دعوة SIP خبيثة تحتوي على ice-ufrag طويل إلى تجاوز السعة
يحدث الاستغلال الموثوق مع حمولات يبلغ طولها ≥ ~130 بايت
عمليًا، توفر الحمولات التي تبلغ ~500+ بايت (مثل 520) سلوك تعطل ثابت
✅ المتأثرة: pjsip ≤ 2.16
❌ المُصلحة: pjsip ≥ 2.17
يضيف الإصلاح تحققًا مناسبًا من الحدود:
if (rem_ufrag->slen >= MAX_USERNAME_LEN ||
(rem_ufrag->slen + ice->rx_ufrag.slen + 1) >= 512)
{
return PJ_ETOOBIG;
}
رفض الخدمة (DoS) عبر خطأ تجزئة (segmentation fault) إمكانية تنفيذ التعليمات البرمجية عن بُعد (RCE) اعتمادًا على:
حمايات المكدس (ASLR، NX، canaries) تخطيط الذاكرة درجة تطور الاستغلال
1.200.000 جهاز متأثر
Shodan link : https://www.shodan.io/search?query=pjmedia
يرسل إثبات المفهوم المرفق دعوة SIP مصممة بعناية تحتوي على ice-ufrag ضخم لتشغيل تجاوز السعة.
متزامن بالكامل (بدون asyncio) قابل للتهيئة من سطر الأوامر إعادة محاولة تلقائية حمولة SDP واقعية كشف التعطل عبر المهلة الزمنية
ابدأ تشغيل pjsua مع تفعيل ICE:
pjsua-x86_64-unknown-linux-gnu --use-ice --local-port=5060 --log-level=5 --no-tcp --auto-answer=200
python3 pjsip.py -i <target_ip> -p 5060 -a 3
Arguments
Option Description Default
-i, --ip Target IP address 127.0.0.1
-p, --port SIP port 5060
-a, --attempts Number of attempts 3
Expected Behavior
Vulnerable Target
No response from server
قم بالترقية إلى pjsip ≥ 2.17
طبّق التحقق من صحة المدخلات لخصائص SDP
استخدم حمايات المكدس: كناري المكدس (Stack canaries) ASLR NX (مكدس غير قابل للتنفيذ)
يتم توفير إثبات المفهوم هذا لأغراض تعليمية وبحوث أمنية فقط.
لا تستخدم هذا الكود ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
V.Nos