submessageId: DATA (0x15)
Flags: 0x05, Data present, Endianness bit
octetsToNextHeader: 48
0000 0000 0000 0000 = Extra flags: 0x0000
Octets to inline QoS: 16
readerEntityId: 0x00000104 (Application-defined reader (no key): 0x000001)
writerEntityId: 0x00000103 (Application-defined writer (no key): 0x000001)
[Topic Information (from Discovery)]
writerSeqNumber: 1
serializedData
encapsulation kind: Unknown (0x00ff)
encapsulation options: 0x0000
serializedData: 000000000d0000004d65737361676520697320310000000
Note: encapsulation kind is 0xff (should have been 0x01).
$ ./DDSSecureHelloWorldExample subscriber
Starting
Waiting for Data, press Enter to stop the DataReader.
Subscriber matched.
terminate called after throwing an instance of 'eprosima::fastcdr::exception::BadParamException'
what(): Unexpected CDR type received in Cdr::read_encapsulation
[1] 1931236 abort ./DDSSecureHelloWorldExample subscriber
This can remotely crash any Fast DDS process.
Summary
This was reported as #3422.
Opening an advisory for CVE assignment as per the request of Miguel.
Details
BadParamException
thrown by Fast CDR is not caught in Fast DDS, crashing Fast DDS processes.PoC
Note: encapsulation kind is 0xff (should have been 0x01).
Fast DDS crashes:
Please refer to the attached tcpdump fastdds-assert.pcap.zip for further details. Packet 358 triggers this.
Impact
This can remotely crash any Fast DDS process.