4.3. Crashes

4.3.1. [Critical] Crash when using Monitoring Library 2.0 and logging.mode_mask set to SECURITY_TOPIC

When the logging.mode_mask property was set to SECURITY_TOPIC while Monitoring Library 2.0 was enabled, a crash occurred when a security event was logged in an application.

[RTI Issue ID SEC-2897]

4.3.2. [Critical] Potential undefined behavior after error acquiring mutex during remote identity validation or local Permissions Document Update *

In the unlikely scenario of failing to acquire a mutex used to protect against concurrent updates of security artifacts (specifically, Certificate Revocation Lists and Permissions Documents), the Builtin Security Plugins could have exhibited undefined behavior due to attempting to release the not-acquired mutex.

[RTI Issue ID SEC-2885]

4.3.3. [Critical] Invalid locking situation when creating DomainParticipant with Security enabled *

An unlikely crash or locked mutex escape could happen during the creation of a secure DomainParticipant, when using the Builtin Security Plugins. This could happen only during the creation of the secure DomainParticipant when facing additional issues, such as memory exhaustion.

[RTI Issue ID SEC-2883]

4.3.4. [Critical] Invalid read when simultaneously changing Certificate Revocation List and validating local DomainParticipant’s identity status *

Suppose you had OCSP (Online Certificate Status Protocol) enabled, through either the dds.sec.auth.ocsp_responder_uri property or the Identity Certificate’s authorityInfoAccess field. If you changed the contents of your Certificate Revocation List while validating the identity status of the local DomainParticipant, a race condition would have occurred because those two operations were not thread-safe with respect to each other. Validation of the local DomainParticipant identity status happens when:

  • There is a change in the Identity Certificate.

  • The Identity Certificate expiration date is closer than the value of the dds.participant.trust_plugins.expiration_advance_notice_duration.sec property.

  • The expiration date of the OCSP response is closer than the value of the dds.participant.trust_plugins.certificate_status_advance_update_duration property.

This race condition led to the reading of invalid memory. A memory-checking tool such as Valgrind™ would have reported invalid reads in a function due to accessing an address freed by a different function. Your application may have crashed with this log message:

100: ../crypto/x509/x509cset.c:82: OpenSSL internal error: refcount error

[RTI Issue ID SEC-2853]

4.3.5. [Critical] Problems on VxWorks when multiple threads tried creating the first DomainParticipant or deleting the last DomainParticipant

On VxWorks® platforms, a segmentation fault may have occurred if multiple threads concurrently tried to create the initial DomainParticipant. Additionally, a memory leak might have resulted from multiple threads simultaneously trying to delete the final DomainParticipant in an application.

[RTI Issue ID SEC-2810]

4.3.6. [Critical] Potential stack buffer read overflow in Builtin Security Plugins when registering local endpoint

An application using the Builtin Security Plugins may have attempted to read invalid memory during the creation of a local secure entity (DomainParticipant, DataWriter, or DataReader). This could have resulted in a segmentation fault. As a result of reading invalid data, there was also a low chance of a discovery incompatibility due to a mismatch of security algorithms.

[RTI Issue ID SEC-2849]

4.3.7. [Critical] Potential segmentation fault in Builtin Security Plugins when discovering a DomainParticipant

Assume that in the Governance Document, at least one protection_kind field, other than rtps_protection_kind, is set to a value other than NONE. When one DomainParticipant was discovering another, there was a race condition leading to a NULL pointer dereference in the internal function RTI_Security_Cryptography_registerEndpoint. This problem only affected versions 7.3.0 and above.

[RTI Issue ID SEC-2913]

4.3.8. [Major] Potential precondition failure when removing a remote DomainParticipant that has secure endpoints

Consider the following scenario:

  • DomainParticipant ParticipantA has endpoints that have data_protection_kind or metadata_protection_kind set to a value other than NONE in the Governance Document.

  • DomainParticipant ParticipantB was communicating with ParticipantA but is no longer doing so.

  • ParticipantB is using debug libraries.

While ParticipantB was removing ParticipantA, there was a race condition that made ParticipantB sometimes generate the following precondition error in the internal function RTI_Security_CryptographyKeyHandle_removeFromEndpointList:

!precondition: "self->entityType == RTI_SECURITY_ENDPOINT_TYPE_UNKNOWN && self->nextRemoteEndpointKey != ((void *)0)"

The precondition error was followed by invalid writes due to improper cleanup.

This problem did not affect release libraries and has been fixed by removing the incorrect precondition.

[RTI Issue ID SEC-2909]



* This bug does not affect you if you are upgrading from 7.3.x or earlier.