
CVE-2026-90782 के लिए स्टैंडअलोन PoC: S2OPC alloc_notification_message_items() में status-clobbering NULL dereference (DataChange विफल, Event सफल)
S2OPC (Safe & Secure OPC) में CVE-2026-90782 के लिए स्टैंडअलोन प्रूफ़-ऑफ़-कॉन्सेप्ट।
alloc_notification_message_items() में (S2OPC 1.7.3 और उससे पहले):
status वेरिएबल का उपयोग किया जाता है।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 आवंटन विफल होने पर अर्ली-एग्ज़िट / डीरेफ़रेंस को छोड़ दें। यह commit 8848f051 में मौजूद पैटर्न को दर्शाता है।
reproducer.c — भेद्य और फ़िक्स्ड आवंटन लॉजिक को दर्शाता है