Introducción
La protección de la información en el ámbito industrial
no es, generalmente, una de las principales preocupaciones de los departamentos
de ingeniería, operación o mantenimiento. De hecho, es posible que cualquier
medida que se establezca en términos de seguridad en los accesos a los
elementos que componen un sistema de automatización industrial, se observe como
un posible escollo o inconveniente que podría entorpecer, ralentizar o, en
último término, impedir las operaciones de restauración de actividad en caso de
fallo del sistema.
Hay que considerar que los programas
desarrollados para dispositivos como PLCs, HMIs, … suponen la máxima expresión
del conocimiento aplicado del proceso industrial sobre el que actúan. En estos
programas pueden encontrarse, de forma implícita, las características de
fabricación que hacen, por ejemplo, un producto diferencial de la competencia.
Por lo tanto, y desde la perspectiva de negocio, esta información es un activo
que debe ser protegido.
La realidad, sin embargo, pone de relieve que
efectivamente se prima principalmente la disponibilidad (mínimo tiempo de
parada) frente a la confidencialidad (la salvaguarda de los programas en sí
mismo) y a la integridad (modificación no autorizada de los programas que puede
llegar a causar una anomalía en el funcionamiento del proceso industrial) de
los programas.
Localización de programas
Program-at-rest. Los programas se encuentran en el almacenamiento local o en recursos de compartición de ficheros en la red de los ordenadores empleados para su desarrollo y/o mantenimiento. Los programas se modifican con herramientas específicas diseñadas para este fin, bien proporcionadas por los fabricantes de los propios elementos industriales o bien por terceros que soportan dispositivos finales multifabricante. Los ordenadores pueden ser estaciones de ingeniería de tipo sobremesa, pero también podemos encontrarnos con portátiles o maletas de programación para los casos en los que la transmisión de los programas se realiza fuera de oficina o a pie de máquina.
Program-in-transit. Es el momento en el que el programa es transferido al dispositivo industrial a través de algún medio de comunicación. La transferencia del programa puede realizarse a través de la propia red corporativa a la que se encuentre conectado el ordenador origen, ser trasladado mediante un dispositivo de almacenamiento USB a un puesto de máquina desde donde se realizará la transferencia, o a través de la conexión directa del ordenador al dispositivo mediante un puerto serie, entre otros.
Program-in-use. En este caso se trata del propio programa que se encuentra ejecutándose en el dispositivo, y que se encuentra almacenado en el sistema de ficheros local o bien en la propia memoria RAM del dispositivo.
Escenarios de amenaza
En base a lo detallado en el apartado
anterior, es posible identificar una serie de escenarios de amenaza que podrían
permitir a un tercero no autorizado el acceso a los programas:
Program-at-rest |
Program-in-transit |
Program-in-use |
▫
Compromiso del ordenador con
acceso a almacenamiento local. ▫
Acceso no autorizado a recurso
de almacenamiento compartido en la red. |
▫
Interceptación de tráfico de red
durante la transmisión de los programas a través de técnicas de sniffing. ▫
Extravío de dispositivos de
almacenamiento removibles. |
▫
Acceso no autorizado al elemento
industrial (conexión “online” contra el dispositivo), bien mediante la red o
bien mediante conexión directa. |
Medidas de protección
Cada escenario detallado en la tabla anterior
requiere de la aplicación de una serie de medidas de seguridad, que deberán ser
adecuadas y proporcionadas en función de la confidencialidad de los programas
que deseamos proteger, considerando que no todos requieren el mismo nivel de
protección.
Localización del programa |
Descripción |
Program-at-rest |
Al margen de las medidas generales que deberían encontrarse implementadas en los ordenadores corporativos (antimalware, actualizaciones y parches, …) asignados al tratamiento de los programas, así como las relativas a la gestión de permisos de acceso a recursos en red (servidores de ficheros, servidores PLMs), las medidas de protección más efectivas serían las encaminadas a la propia protección del acceso a los ficheros que componen el programa (código fuente/compilado, librerías, etc.). Nos encontramos, por lo tanto, con medidas de protección a dos niveles: ▫
Control de acceso al programa
mediante la definición de usuarios en las herramientas de programación con
diferentes roles y permisos (solo lectura, control total, …). ▫
Cifrado de los ficheros del
programa: o
Proporcionado de forma nativa
por la herramienta empleada para la programación. En estos casos es posible
encontrar dos opciones para el cifrado: 1) empleo de contraseña, y 2) empleo
de certificados digitales. Ambas alternativas requieren de la aplicación de
una política de custodia adecuada, y que garantice un almacenamiento seguro
de las credenciales /certificado, así como la disponibilidad y accesibilidad
de los mismos en caso de que sea necesario. o
Proporcionado por herramientas
externas (por ejemplo, IRM) que actúan como intermediarios entre los ficheros
cifrados y el programa que requiere el acceso a los mismos. |
Program-in-transit |
▫
En el caso del uso de la red
como medio para la conexión y transmisión de los programas a los dispositivos
finales, nos encontramos con la necesidad de cifrar el tráfico entre los dos
extremos para evitar que los datos viajen en texto plano. Algunos fabricantes
ya permiten de forma nativa la implementación del cifrado en los protocolos
de red empleados para la gestión de los programas, aunque esta funcionalidad
depende de la compatibilidad de los dispositivos afectados. ▫
También es habitual encontrarse
con conversores de medios serie-ethernet para facilitar la carga de programas
de forma remota sin necesidad de realizar una conexión física de tipo serie
ordenador-dispositivo. En estos casos, la posibilidad de cifrar este tipo de
conexiones es menor o, en muchos caso, no posible, por lo que será necesario
plantearse medidas compensatorias en la red como, por ejemplo, el
establecimiento de túneles VPN internos entre el ordenador y el dispositivo
conversor de medios, ▫
Si los programas se trasladan en
dispositivos de almacenamiento removibles, se recomienda el cifrado de los
mismos para que en caso de extravío no sea posible acceder a su contenido. |
Program-in-use |
En este caso, las medidas a aplicar son únicamente las que disponen
de forma nativa los propios dispositivos. En equipamiento con cierta
antiguedad, generalmente no hay posibilidad de establecer controles de acceso
de ningún tipo, por lo que: 1) Hay que primar las medidas de protección física en el acceso a los dispositivos, en el caso de los que requieran de conexiones físicas directas. 2) En los dispositivos que se encuentren conectados a la red, establecer niveles de segmentación adecuados, y la limitación/filtrado/monitorización del tráfico de red a través de elementos cortafuegos, tanto en capa 4 como en capa 7, aplicando políticas de mínimo privilegio. Además de las medidas anteriores, recomendables en cualquier caso, en
dispositivos más actuales, es posible establecer dos tipos de limitaciones
adicionales: ▫
Limitación de las conexiones
únicamente a determinadas IPs origen autorizadas. ▫
El establecimiento de
contraseñas de acceso para la puesta en modo online contra el dispositivo. En caso de que fuera factible, se recomienda la implantación de
ambas. ¡Por cierto! no nos olvidemos de establecer el modo de funcionamiento
adecuado en los PLCs para evitar, al menos, la modificación del programa en
ejecución. |
AUTOR:
Hugo Llanos
Director Ciberseguridad Industrial en Secure&IT
No hay comentarios :
Publicar un comentario