Executive brief
Systerel S2OPC is an OPC UA (industrial communications) client library used to integrate manufacturing and automation systems. A malicious OPC UA server—or an attacker intercepting network traffic—can crash the client application by sending a specially crafted response with mismatched result counts, causing the library to read memory beyond allocated bounds. This results in denial of service to any application using the affected S2OPC client wrapper.
Technical details
The vulnerability is an out-of-bounds read in the DeleteMonitoredItemsResponse message handler (LockedStaMac_ProcessMsg_DeleteMonitoredItemsResponse in state_machine.c). The client wrapper processes the server's response using the `NoOfResults` field as a loop bound to iterate over results, but does not validate that this count matches the number of monitored item IDs stored in the corresponding client request. A malicious server can send more results than originally requested, causing the loop to read beyond the allocated array bounds. The attack is network-reachable via normal OPC UA session workflow (CreateSession, ActivateSession, CreateSubscription, CreateMonitoredItems, DeleteMonitoredItems) and reliably crashes the process. The vulnerability affects S2OPC up to version 1.7.3; vendor response status unknown.
Affected products
- Systerel S2OPC up to 1.7.3
Timeline
- 2026-08-04: disclosed
- other: Public exploit available (PoC shared on GitHub)