OpenDDS is an open source C++ implementation of the Object Management Group (OMG) Data Distribution Service (DDS). OpenDDS also supports Java bindings through JNI.
In lines 122 to 137 of the Oppends_poc.cpp file, if we specify a value that is too large for the PC to manage during DataReader's QoS settings, the process will be forced to shut down.
This issue seems similar with #4388, and it was answered with one word: The responsiblity of the user. However, since fatal memory leaks can occur, I think OpenDDS, like other DDS software, should have at least a minimum guide.
Expected behavior
Process will exit or handle exceptions
Current Behavior
Process keeps trying to make DataReader, but it crash and got killed signal with high RAM usage, finally got exited with singal SIGKILL.
This allows a local attacker to cause a denial of service and obtain sensitive information via a crafted max_samples component.
Steps to produce
Download poc project below. DataReaderQos_poc.zip
stdout:
In lines 122 to 137 of the
Oppends_poc.cpp
file, if we specify a value that is too large for the PC to manage during DataReader's QoS settings, the process will be forced to shut down.OpenDDS Version
https://github.com/OpenDDS/OpenDDS/commit/b1c534032bb62ad4ae32609778de6b8d6c823a66
Platform
Ubuntu 22.04
Additional context
This issue seems similar with #4388, and it was answered with one word:
The responsiblity of the user
. However, since fatal memory leaks can occur, I think OpenDDS, like other DDS software, should have at least a minimum guide.