Fast DDS is a C++ implementation of the DDS (Data Distribution Service) standard of the OMG (Object Management Group
). ParticipantGenericMessage is the DDS Security control-message container that carries not only the handshake but also on
going security-control traffic after the handshake, such as crypto-token exchange, rekeying, re-authentication, and token
delivery for newly appearing endpoints. On receive, the CDR parser is invoked first and deserializes the `message_data` (i
.e., the `DataHolderSeq`) via the `readParticipantGenericMessage → readDataHolderSeq` path. The `DataHolderSeq` is parsed
sequentially: a sequence count (`uint32`), and for each DataHolder the `class_id` string (e.g. `DDS:Auth:PKI-DH:1.0+Req`),
string properties (a sequence of key/value pairs), and binary properties (a name plus an octet-vector). The parser operat
es at a stateless level and does not know higher-layer state (for example, whether the handshake has already completed), s
o it fully unfolds the structure before distinguishing legitimate from malformed traffic. Because RTPS permits duplicates,
delays, and retransmissions, a receiver must perform at least minimal structural parsing to check identity and sequence n
umbers before discarding or processing a message; the current implementation, however, does not "peek" only at a minimal
header and instead parses the entire `DataHolderSeq`. As a result, prior to versions 3.4.1, 3.3.1, and 2.6.11, this parsi
ng behavior can trigger an out-of-memory condition and remotely terminate the process. Versions 3.4.1, 3.3.1, and 2.6.11 p
atch the issue.
Fast DDS versions prior to 3.4.1, 3.3.1, and 2.6.11 contain a critical out-of-memory vulnerability in the ParticipantGenericMessage parser that can be remotely exploited to terminate DDS processes. The vulnerability stems from improper parsing of DataHolderSeq structures without validating message state, allowing attackers to craft malicious DDS Security control messages that consume excessive memory. This affects industrial control systems, IoT platforms, and distributed real-time systems commonly deployed in Saudi critical infrastructure.
IMMEDIATE ACTIONS:
1. Identify all Fast DDS deployments in your environment using network scanning and software inventory tools
2. Isolate or restrict network access to DDS endpoints from untrusted networks
3. Implement network segmentation to limit DDS traffic to authorized participants only
PATCHING GUIDANCE:
1. Upgrade Fast DDS to version 3.4.1, 3.3.1, or 2.6.11 immediately
2. For Debian systems (11, 12, 13), apply security updates from official repositories
3. Test patches in non-production environments before deployment
4. Prioritize patching for systems in critical infrastructure (SCADA, healthcare, telecom)
COMPENSATING CONTROLS (if immediate patching not possible):
1. Implement firewall rules to restrict DDS RTPS traffic (UDP/TCP ports 7400-7409) to known trusted endpoints
2. Deploy DDS traffic inspection at network boundaries to detect malformed ParticipantGenericMessage structures
3. Monitor process memory usage for DDS applications and set resource limits (ulimit)
4. Implement application-level monitoring to detect unexpected process terminations
DETECTION RULES:
1. Monitor for DDS processes with abnormal memory growth patterns
2. Alert on unexpected DDS process crashes or restarts
3. Log and analyze DDS Security control messages for oversized DataHolderSeq structures
4. Track failed DDS handshake attempts from external sources
الإجراءات الفورية:
1. تحديد جميع نشرات Fast DDS في بيئتك باستخدام أدوات المسح والمخزون
2. عزل أو تقييد الوصول إلى نقاط نهاية DDS من الشبكات غير الموثوقة
3. تنفيذ تقسيم الشبكة لتحديد حركة DDS للمشاركين المصرح لهم فقط
إرشادات التصحيح:
1. ترقية Fast DDS إلى الإصدار 3.4.1 أو 3.3.1 أو 2.6.11 فوراً
2. لأنظمة Debian (11، 12، 13)، تطبيق التحديثات الأمنية من المستودعات الرسمية
3. اختبار التصحيحات في بيئات غير الإنتاج قبل النشر
4. إعطاء الأولوية لتصحيح الأنظمة في البنية التحتية الحرجة
الضوابط البديلة (إذا لم يكن التصحيح الفوري ممكناً):
1. تنفيذ قواعد جدار الحماية لتقييد حركة RTPS إلى نقاط نهاية موثوقة معروفة
2. نشر فحص حركة DDS على حدود الشبكة
3. مراقبة استخدام ذاكرة تطبيقات DDS وتعيين حدود الموارد
4. تنفيذ المراقبة على مستوى التطبيق لاكتشاف إنهاء العمليات غير المتوقع
قواعد الكشف:
1. مراقبة عمليات DDS بأنماط نمو ذاكرة غير طبيعية
2. التنبيه على أعطال أو إعادة تشغيل عمليات DDS غير المتوقعة
3. تسجيل وتحليل رسائل التحكم الأمني DDS للهياكل الكبيرة
4. تتبع محاولات المصافحة الفاشلة من مصادر خارجية