
PoC independiente para CVE-2026-90782: desreferencia NULL por status-clobbering en S2OPC alloc_notification_message_items() (DataChange falla, Event tiene éxito)
Prueba de concepto independiente para CVE-2026-90782 en S2OPC (Safe & Secure OPC).
En alloc_notification_message_items() (S2OPC 1.7.3 y anteriores):
status compartida tanto para las asignaciones de DataChange como de Event.status se sobrescribe con SOPC_STATUS_OK.dataChangeNotif, que sigue siendo NULL → desreferencia NULL / fallo.gcc -o s2opc_poc reproducer.c
# Test 1 — both allocations succeed (no crash)
./s2opc_poc 1
# Test 2 — vulnerable path: DataChange fails, Event succeeds → NULL deref (crash)
./s2opc_poc 2
# Test 3 — fixed path: independent status tracking, no crash
./s2opc_poc 3
# Test 4 — control: data-only (no Event alloc to clobber status)
./s2opc_poc 4
Recomendado con AddressSanitizer:
gcc -fsanitize=address -g -o s2opc_poc reproducer.c
./s2opc_poc 2
Realizar un seguimiento independiente de los estados de asignación y salir anticipadamente / omitir la desreferencia cuando la asignación de DataChange falle. Replica el patrón del commit 8848f051.
reproducer.c — replica la lógica de asignación vulnerable y corregida