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, when the security mode is enabled, modifying the DATA Submessage within an
SPDP packet sent by a publisher causes a heap buffer overflow, resulting in remote termination of Fast-DDS. If the fields
of `PID_IDENTITY_TOKEN` or `PID_PERMISSIONS_TOKEN` in the DATA Submessage — specifically by tampering with the `str_size`
value read by `readString` (called from `readBinaryProperty`) — are modified, a 32-bit integer overflow can occur, causing
`std::vector::resize` to use an attacker-controlled size and quickly trigger heap buffer overflow and remote process term
ination. Versions 3.4.1, 3.3.1, and 2.6.11 patch the issue.
Fast DDS versions prior to 3.4.1, 3.3.1, and 2.6.11 contain a critical heap buffer overflow vulnerability in security-enabled mode when processing malformed SPDP packets. An attacker can trigger a 32-bit integer overflow by tampering with token size fields, causing remote denial of service through process termination. This vulnerability affects distributed real-time systems commonly deployed in critical infrastructure.
IMMEDIATE ACTIONS:
1. Identify all Fast DDS deployments in your environment, particularly those with security mode enabled
2. Assess network exposure — restrict SPDP packet sources to trusted publishers only
3. Implement network segmentation to isolate DDS communication channels
PATCHING:
1. Upgrade to Fast DDS 3.4.1, 3.3.1, or 2.6.11 immediately
2. Test patches in non-production environments first
3. Coordinate patching with operational windows to minimize downtime
COMPENSATING CONTROLS (if immediate patching not possible):
1. Disable DDS security mode temporarily if operationally feasible
2. Implement firewall rules to restrict SPDP traffic (UDP port 7400-7409) to authorized sources only
3. Deploy IDS/IPS rules to detect malformed SPDP packets with suspicious token size values
4. Monitor process crashes and memory errors in DDS applications
DETECTION:
1. Monitor for unexpected Fast DDS process terminations
2. Log and alert on SPDP packets with PID_IDENTITY_TOKEN or PID_PERMISSIONS_TOKEN modifications
3. Track heap memory allocation anomalies in DDS processes
4. Implement application-level monitoring for vector resize operations with suspicious parameters
الإجراءات الفورية:
1. تحديد جميع نشرات Fast DDS في بيئتك، خاصة تلك التي يكون وضع الأمان فيها مفعلاً
2. تقييم التعرض للشبكة - تقييد مصادر حزم SPDP للناشرين الموثوقين فقط
3. تنفيذ تقسيم الشبكة لعزل قنوات اتصال DDS
التصحيح:
1. الترقية إلى Fast DDS 3.4.1 أو 3.3.1 أو 2.6.11 فوراً
2. اختبار التصحيحات في بيئات غير الإنتاج أولاً
3. تنسيق التصحيح مع نوافذ التشغيل لتقليل وقت التوقف
الضوابط البديلة (إذا لم يكن التصحيح الفوري ممكناً):
1. تعطيل وضع أمان DDS مؤقتاً إذا كان ذلك ممكناً من الناحية التشغيلية
2. تنفيذ قواعد جدار الحماية لتقييد حركة SPDP (منافذ UDP 7400-7409) للمصادر المصرح بها فقط
3. نشر قواعد IDS/IPS للكشف عن حزم SPDP المشوهة بقيم حجم رموز مريبة
4. مراقبة أعطال العمليات والأخطاء في الذاكرة في تطبيقات DDS
الكشف:
1. مراقبة إنهاء عملية Fast DDS غير المتوقع
2. تسجيل والتنبيه على حزم SPDP مع تعديلات PID_IDENTITY_TOKEN أو PID_PERMISSIONS_TOKEN
3. تتبع شذوذ تخصيص الذاكرة في عمليات DDS
4. تنفيذ المراقبة على مستوى التطبيق لعمليات تغيير حجم المتجهات بمعاملات مريبة