
Exploit de preuve de concept pour le contournement de l'authentification OPC UA utilisant la politique de sécurité None, incluant un serveur simulé pour démontrer un accès en lecture/écriture non autorisé aux données de contrôle industrielles.
# 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 serveur OPC UA est configuré avec la politique de sécurité None, qui n'offre ni chiffrement ni authentification. Un attaquant sur le réseau peut se connecter et interagir avec les tags du système de contrôle industriel, causant des dommages physiques.
pip install asyncua
python opcua_server_sim.py
python exploit_opcua_none.py
Le client se connecte avec succès.