Seguridad y Fiabilidad en un Sistema de Control Industrial (ICS)

  • Posted on: 8 August 2022
  • By: ReYDeS

Una de las principales distinciones operativas en la zona de Campo, en comparación con la zona Empresarial, son los estrictos requerimientos para la fiabilidad y seguridad, especialmente para el control de infraestructuras críticas. Por ejemplo los dispositivos de Campo en infraestructura críticas están diseñados como sistemas tolerantes a fallos y críticos en seguridad. Estos requisitos de seguridad y fiabilidad tienen un profundo impacto en múltiples aspectos de los ICSs, desde el diseño (ejemplo, sistemas redundantes) hasta el mantenimiento (ejemplo, actualizar y parchar). Por esto se tiene especial atención para describir requerimientos específicos, los cuales surgen como resultado de los requerimientos para seguridad y fiabilidad en los dispositivos y redes de campo.

Los sistemas de Campo en infraestructuras críticas son requeridos proporcionen muy altos niveles de disponibilidad, fiabilidad bajo demanda, y en algunos casos seguridad bajo un amplio rango de condiciones operacionales. Debido a las consecuencias potenciales de una falla en un sistema crítico, estos sistemas deben reducir la probabilidad de se produzcan incluso fallos de baja probabilidad. Los sistemas donde las consecuencias de una falla son elevadas deben ser sistemas fiables, los cuales tengan la capacidad de evitar fallas de servicios los cuales son más frecuentes y más severos de aquello aceptable para el usuario o usuarios, además de también tener la capacidad de entregar servicios los cuales sean justificablemente confiables. Los sistemas fiables frecuentemente utilizan una de las siguientes perspectivas para mejorar la fiabilidad y seguridad de los sistemas en la presencia de fallas.

  • Evitar fallos: Evitar fallas mediante el diseño, por ejemplo construir el sistema correctamente desde el inicio
  • Eliminación de fallos: Reducir por verificación y prueba la presencia de fallos
  • Tolerancia a fallos: Proporcionar un funcionamiento correcto aunque existan fallos

La tolerancia a fallos es la única la cual se activa en la fase operacional. Por esto para las técnicas sobre tolerancia a fallos trabajen efectivamente, es importante entender los tipos de fallas los cuales pueden experimentar los sistemas. Tradicionalmente los métodos y técnicas para tolerancia a fallos se han sido utilizado para dos clases de fallas. La primera son fallas de hardware, las cuales podrían ser permanentes o transitorias por naturaleza. La segunda son fallas de software, las cuales se activan cuando se suscitan entradas inusuales o condiciones de estado. Tanto las técnicas para tolerancia de fallos en hardware y software utilizan redundancia para superar los efectos de las fallas.

Los métodos y técnicas para la tolerancia a fallos de hardware, utilizan técnicas como votación, códigos EDC, duplicación y comparación para detectar y corregir los efectos de las fallas. Estas técnicas funcionan para fallas de hardware porque se supone estos fallos se producen de manera aleatoria, independientemente de uno del otro. Los fallos en software usualmente no se producen de manera aleatoria o independiente el uno del otro, pues ocurren cuando condiciones de entrada/estado desencadenan una falla de software. Como tal, meramente la replicación y redundancia no funcionan.

Las técnicas para tolerancia a fallos de software, frecuentemente emplean una diversidad de técnicas y defensa en profundidad, para detectar y corregir fallas de software en tiempo de ejecución. Esto incluye: diversas formas de software ejecutándose sobre diferentes procesadores, programación de N versiones donde las diferentes versiones del programa son escritas por diversos equipos de programación, vigilancia en tiempo de ejecución donde una “vigilancia segura” verifica las salidas para ver si son razonables o una violación de las propiedades. En general los sistemas tolerantes a fallos se basan en diseños resistentes y en el conocimiento o vigilancia continua del estado. En estos sistemas las caracterísicas de autovigilancia y autoprueba son prominentes, como las pruebas cíclicas de hardware, análisis de temporización para detectar procesos colgados, temporizadores de vigilancia independientes, desconexión cableada en caso de falla, verificaciones para la integridad de datos, y en caso de falla, mensajes de falla y señales son utilizados por la detección de errores a nivel de aplicación, para reforzar la operación a prueba de fallo.

Otra característica importante de los sistemas fiables es ser frecuentemente en tiempo real. Un sistema en tiempo real se caracteriza por su continua interacción con su entorno, continuamente aceptando peticiones desde el entorno y continuamente produciendo reacciones. En los sistemas en tiempo real, la corrección o la seguridad del sistema reactivo está relacionado con su comportamiento en el tiempo mientras interactúa con su entorno. Así la corrección del resultado también depende de la puntualidad en la entrega.

Aunque los métodos para tolerancia a fallos en software y hardware son suficientes para los fallos aleatorios suscitándose o fallas de diseño, no son suficientes cuando las fallas son maliciosas e intencionales en naturaleza, como fallas causadas por ciberataques. En el contexto de CPSs, la verdadera resiliencia debe considerar aquello lo cual representa una operación adecuada de la aplicación del proceso, al frente de muchas condiciones adversas, incluidas aquellas atribuibles a las amenazas desde interacciones humanas no deseadas, como los ciberactores maliciosos. Las ciberfallas en CPSs caen en dos clases:

  • Fallas no maliciosas: Introducidos sin propósitos maliciosos
  • Fallas maliciosas o ciberataques: Introducidos durante ya sea el desarrollo del sistema, con la intención de causar daño al sistema durante su utilización, o directamente durante su uso

Mientras las fallas no maliciosas son mayormente introducidas por errores involuntarios y malas decisiones operacionales, las fallas maliciosas o ciberataques son introducidas por un adversario humano inteligente, o agente de amenaza con un propósito malicioso, para alterar el funcionamiento de un sistema. Por ejemplo un adversario podría lanzar un ataque externo en el cual un atacante intercepta mensajes, inyecta datos falsos, o niega acceso hacia ciertos módulos. Aunque estas acciones pueden ciertamente alterar la operación de un sistema, pueden ser detectadas y mitigadas con tecnologías actuales, como cortafuegos, encriptación, y autenticación. En otros casos un atacante podría comprometer y completamente controlar algunos componentes del sistema. En este escenario el atacante podría modificar o descartar mensajes críticos, inyectar información falsa de reporte o vigilancia, generar eventos falsos, deshabilitar medidas críticas de seguridad, coordinar ataques involucrando múltiples componentes, y mucho más.

Fuentes:

https://www.arcweb.com/events/videos-webcasts/safety-reliability-industr...
https://www.fortinet.com/resources/cyberglossary/ics-security

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero