Marked is a markdown parser and compiler. From 18.0.0 to 18.0.1, a critical Denial of Service (DoS) vulnerability exists in marked. By providing a specific 3-byte input sequence a tab, a vertical tab, and a newline (\x09\x0b\n)—an unauthenticated attacker can trigger an infinite recursion loop during parsing. This leads to unbounded memory allocation, causing the host Node.js application to crash via Memory Exhaustion (OOM). This vulnerability is fixed in 18.0.2.
CVE-2026-41680 is a critical Denial of Service vulnerability in the Marked markdown parser (versions 18.0.0-18.0.1) that allows unauthenticated attackers to crash Node.js applications through a 3-byte input sequence triggering infinite recursion and memory exhaustion. The vulnerability is easily exploitable with publicly available proof-of-concept code and affects any web application or service processing untrusted markdown content. Organizations using affected Marked versions must immediately upgrade to 18.0.2 or implement input validation controls to prevent application crashes and service disruption.
IMMEDIATE ACTIONS:
1. Identify all Node.js applications using Marked versions 18.0.0-18.0.1 by reviewing package.json and npm audit outputs
2. Upgrade Marked to version 18.0.2 or later immediately: npm update marked@latest
3. If immediate patching is not possible, implement input validation to reject markdown containing the sequence \x09\x0b\n (tab + vertical tab + newline)
PATCHING GUIDANCE:
1. Test the upgrade in development/staging environments first
2. Verify application functionality after upgrade
3. Deploy to production with monitoring enabled
4. For applications with strict change control, prioritize this as emergency patch
COMPENSATING CONTROLS (if patching delayed):
1. Implement input sanitization: strip or reject vertical tab characters (\x0b) from all markdown inputs
2. Add request size limits to prevent large payload attacks
3. Implement rate limiting on markdown processing endpoints
4. Monitor Node.js process memory usage and set OOM kill thresholds
5. Deploy application behind load balancer with health checks to auto-restart crashed instances
DETECTION RULES:
1. Monitor for HTTP requests containing \x09\x0b\n sequences in POST/PUT bodies
2. Alert on Node.js process crashes with OOM errors
3. Track memory usage spikes during markdown processing
4. Log all requests to markdown processing endpoints for forensic analysis
الإجراءات الفورية:
1. تحديد جميع تطبيقات Node.js التي تستخدم إصدارات Marked 18.0.0-18.0.1 من خلال مراجعة package.json ومخرجات npm audit
2. ترقية Marked إلى الإصدار 18.0.2 أو أحدث فوراً: npm update marked@latest
3. إذا لم يكن من الممكن الترقية الفورية، قم بتطبيق التحقق من الإدخال لرفض markdown الذي يحتوي على التسلسل \x09\x0b\n (tab + vertical tab + newline)
إرشادات الترقية:
1. اختبر الترقية في بيئات التطوير/التجريب أولاً
2. تحقق من وظائف التطبيق بعد الترقية
3. نشر في الإنتاج مع تفعيل المراقبة
4. للتطبيقات ذات التحكم الصارم في التغييرات، أعطها الأولوية كرقعة طوارئ
عناصر التحكم البديلة (إذا تأخرت الترقية):
1. تطبيق تنظيف الإدخال: إزالة أو رفض أحرف الجدولة العمودية (\x0b) من جميع مدخلات markdown
2. إضافة حدود حجم الطلب لمنع هجمات الحمولة الكبيرة
3. تطبيق تحديد معدل على نقاط نهاية معالجة markdown
4. مراقبة استخدام ذاكرة عملية Node.js وتعيين عتبات قتل OOM
5. نشر التطبيق خلف موازن تحميل مع فحوصات صحية لإعادة تشغيل الحالات المتعطلة تلقائياً
قواعد الكشف:
1. مراقبة طلبات HTTP التي تحتوي على تسلسلات \x09\x0b\n في أجسام POST/PUT
2. تنبيه على أعطال عملية Node.js مع أخطاء OOM
3. تتبع ارتفاعات استخدام الذاكرة أثناء معالجة markdown
4. تسجيل جميع الطلبات إلى نقاط نهاية معالجة markdown للتحليل الجنائي