
Exploit de prueba de concepto para el bypass de autenticación en OPC UA mediante la política de seguridad None, que incluye un servidor simulado para demostrar el acceso no autorizado de lectura/escritura a datos de control industrial.
# opcua_server_sim.py - OPC UA server accepting None security policy
from asyncua import Server
import asyncio
async def main():
server = Server()
await server.init()
server.set_endpoint('opc.tcp://0.0.0.0:4840/freeopcua/server/')
server.set_security_policy([ua.SecurityPolicyType.NoSecurity]) # Allows unencrypted, unauthenticated
async with server:
while True:
await asyncio.sleep(1)
asyncio.run(main())
Un servidor OPC UA está configurado con la política de seguridad None, que no proporciona cifrado ni autenticación. Un atacante en la red puede conectarse e interactuar con las etiquetas del sistema de control industrial, causando daños físicos.
pip install asyncua
python opcua_server_sim.py
python exploit_opcua_none.py
El cliente se conecta correctamente.