
PoC مستقل لـ CVE-2026-90782: إلغاء مرجع NULL عبر status-clobbering في S2OPC alloc_notification_message_items() (يفشل DataChange، وينجح Event)
إثبات مفهوم (PoC) مستقل لـ 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 — يحاكي منطق التخصيص المعرّض للثغرة والمُصلَح