Fast DDS is a C++ implementation of the DDS (Data Distribution Service) standard of the OMG (Object Management Group
). Prior to versions 3.4.1, 3.3.1, and 2.6.11, a remotely triggerable Out-of-Memory (OOM) denial-of-service exists in Fast
-DDS when processing RTPS GAP submessages under RELIABLE QoS. By sending a tiny GAP packet with a huge gap range (`gapList
.base - gapStart`), an attacker drives `StatefulReader::processGapMsg()` into an unbounded loop that inserts millions of s
equence numbers into `WriterProxy::changes_received_` (`std::set`), causing multi-GB heap growth and process termination.
No authentication is required beyond network reachability to the reader on the DDS domain. In environments without an RSS
limit (non-ASan / unlimited), memory consumption was observed to rise to ~64 GB. Versions 3.4.1, 3.3.1, and 2.6.11 patch t
he issue.
Fast DDS versions prior to 3.4.1, 3.3.1, and 2.6.11 contain a critical remote denial-of-service vulnerability in RTPS GAP submessage processing that triggers unbounded memory allocation, potentially consuming up to 64GB of heap memory and causing process termination. The vulnerability requires only network reachability to a DDS reader and no authentication, making it highly exploitable in networked industrial and IoT environments. Organizations using Fast DDS in critical infrastructure must immediately patch to mitigate service disruption risks.
IMMEDIATE ACTIONS:
1. Identify all Fast DDS deployments across your infrastructure using network scanning and software inventory tools
2. Isolate or restrict network access to DDS readers/writers to trusted networks only using firewall rules
3. Implement network segmentation to prevent untrusted sources from reaching DDS domains
4. Monitor system memory usage on DDS processes for anomalous growth patterns
PATCHING GUIDANCE:
1. Upgrade Fast DDS to version 3.4.1, 3.3.1, or 2.6.11 immediately
2. Test patches in non-production environments first, particularly for critical infrastructure
3. Plan maintenance windows for production systems to minimize service disruption
4. Verify patch application by checking version strings and restarting DDS services
COMPENSATING CONTROLS (if patching delayed):
1. Implement strict ingress filtering at network boundaries to block RTPS traffic from untrusted sources
2. Deploy DDS traffic inspection rules to detect and block malformed GAP submessages with suspicious gap ranges
3. Configure process-level resource limits (ulimit, cgroups) to prevent memory exhaustion beyond defined thresholds
4. Enable detailed logging of RTPS message processing to detect attack patterns
DETECTION RULES:
1. Alert on RTPS GAP submessages where (gapList.base - gapStart) exceeds 1,000,000 sequence numbers
2. Monitor DDS process memory growth exceeding 500MB per minute
3. Track RTPS protocol errors and malformed message rejections
4. Correlate memory spikes with specific source IP addresses sending RTPS traffic
الإجراءات الفورية:
1. تحديد جميع نشرات Fast DDS عبر البنية التحتية الخاصة بك باستخدام أدوات المسح الشبكي وجرد البرامج
2. عزل أو تقييد الوصول إلى الشبكة لقارئي/كاتبي DDS إلى الشبكات الموثوقة فقط باستخدام قواعد جدار الحماية
3. تنفيذ تقسيم الشبكة لمنع المصادر غير الموثوقة من الوصول إلى مجالات DDS
4. مراقبة استخدام ذاكرة النظام في عمليات DDS للكشف عن أنماط النمو الشاذة
إرشادات التصحيح:
1. ترقية Fast DDS إلى الإصدار 3.4.1 أو 3.3.1 أو 2.6.11 فوراً
2. اختبار التصحيحات في بيئات غير الإنتاج أولاً، خاصة للبنية التحتية الحرجة
3. التخطيط لنوافذ الصيانة لأنظمة الإنتاج لتقليل انقطاع الخدمة
4. التحقق من تطبيق التصحيح بفحص سلاسل الإصدار وإعادة تشغيل خدمات DDS
الضوابط البديلة (إذا تأخر التصحيح):
1. تنفيذ تصفية الدخول الصارمة على حدود الشبكة لحظر حركة RTPS من مصادر غير موثوقة
2. نشر قواعد فحص حركة DDS للكشف عن رسائل GAP المشوهة وحظرها برطولة فجوة مريبة
3. تكوين حدود موارد على مستوى العملية (ulimit، cgroups) لمنع استنزاف الذاكرة بما يتجاوز الحدود المحددة
4. تفعيل السجلات التفصيلية لمعالجة رسائل RTPS للكشف عن أنماط الهجوم
قواعد الكشف:
1. تنبيه رسائل RTPS GAP حيث (gapList.base - gapStart) يتجاوز 1,000,000 رقم تسلسلي
2. مراقبة نمو ذاكرة عملية DDS يتجاوز 500 ميجابايت في الدقيقة
3. تتبع أخطاء بروتوكول RTPS ورفض الرسائل المشوهة
4. ربط ارتفاعات الذاكرة بعناوين IP المصدر المحددة التي ترسل حركة RTPS