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