
يوضح تجاوز المصادقة في SNMPv3 الموثق في CVE-2026-11116 والناتج عن معرّفات EngineIDs الافتراضية القابلة للتخمين، مع محاكاة باستخدام Python pysnmp وإرشادات لاكتشاف الهجوم وفهمه.
# snmp_agent_sim.py - SNMPv3 agent using well-known EngineID
from pysnmp.hlapi import *
def snmp_get(engine_id=SnmpEngineID(hexValue='8000000001020304')):
iterator = getCmd(
SnmpEngine(engineID=engine_id),
CommunityData('public', mpModel=0), # not v3, but demo
UdpTransportTarget(('localhost', 161)),
ContextData(),
ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0))
)
errorIndication, errorStatus, errorIndex, varBinds = next(iterator)
print(varBinds)
# Vulnerability: EngineID is guessable; attacker can compute authentication keys offline.
print("SNMPv3 with default EngineID vulnerable to key derivation attacks.")
يستخدم جهاز SNMPv3 معرّف EngineID معروفًا أو سهل التخمين (على سبيل المثال، قيم صفرية بالكامل أو مشتقة من عنوان MAC). يمكن للمهاجم حساب مفاتيح المصادقة والخصوصية مسبقًا، متجاوزًا بذلك أمان SNMPv3 والحصول على وصول قراءة/كتابة إلى الجهاز.
تطبع المحاكاة تحذيرًا؛ يتضمن الهجوم الحقيقي التقاط EngineID وتخمين كلمات المرور بالقوة الغاشمة أو استخدام كلمات المرور الافتراضية. شغّل:
pip install pysnmp
python snmp_agent_sim.py