
PoC autônomo para CVE-2026-90782: desreferência NULL com sobrescrita de status em S2OPC alloc_notification_message_items() (DataChange falha, Event tem sucesso)
Prova de conceito autônoma para CVE-2026-90782 no S2OPC (Safe & Secure OPC).
Em alloc_notification_message_items() (S2OPC 1.7.3 e anteriores):
status compartilhada é usada tanto para alocações de DataChange quanto de Event.status é sobrescrito para SOPC_STATUS_OK.dataChangeNotif ainda NULL → desreferência NULL / crash.gcc -o s2opc_poc reproducer.c
# Teste 1 — ambas as alocações bem-sucedidas (sem crash)
./s2opc_poc 1
# Teste 2 — caminho vulnerável: DataChange falha, Event é bem-sucedido → desreferência NULL (crash)
./s2opc_poc 2
# Teste 3 — caminho corrigido: rastreamento de status independente, sem crash
./s2opc_poc 3
# Teste 4 — controle: apenas dados (sem alocação de Event para sobrescrever o status)
./s2opc_poc 4
Recomendado com AddressSanitizer:
gcc -fsanitize=address -g -o s2opc_poc reproducer.c
./s2opc_poc 2
Rastrear os status de alocação de forma independente e sair antecipadamente / pular a desreferência quando a alocação de DataChange falhar. Espelha o padrão do commit 8848f051.
reproducer.c — espelha a lógica de alocação vulnerável e corrigida