
Автономный PoC для CVE-2026-90782: разыменование NULL с затиранием статуса в S2OPC alloc_notification_message_items() (DataChange завершается сбоем, Event — успешно)
Автономный proof-of-concept для CVE-2026-90782 в S2OPC (Safe & Secure OPC).
В alloc_notification_message_items() (S2OPC 1.7.3 и более ранние версии):
status используется как для выделения памяти под DataChange, так и под Event.status перезаписывается значением SOPC_STATUS_OK.dataChangeNotif → разыменование NULL / падение.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
Рекомендуется с AddressSanitizer:
gcc -fsanitize=address -g -o s2opc_poc reproducer.c
./s2opc_poc 2
Отслеживайте статусы выделения памяти независимо и выполняйте ранний выход / пропускайте разыменование, когда выделение под DataChange завершилось неудачей. Повторяет шаблон из коммита 8848f051.
reproducer.c — повторяет уязвимую и исправленную логику выделения памяти