Inicio / Blog / CORBAsec: seguridad en el middleware CORBA

CORBAsec: seguridad en el middleware CORBA

Publicado el 20/01/2022, por INCIBE
CORBAsec seguridad en el middleware CORBA

CORBA (Common Object Request Broker Architecture) es un estándar muy representativo de una arquitectura distribuida basada en objetos, definido por el Grupo de Gestión de Objetos (OMG, Object Management Group). Permite el funcionamiento conjunto de componentes software escritos en distintos lenguajes informáticos, y que se ejecutan en distintos sistemas. A pesar de que el modelo CORBA simplifica la implementación de sistemas distribuidos, inicialmente no proporcionaba un soporte de confianza y seguridad. Debido a esta carencia, se han ido implementado medidas de seguridad en las herramientas que ofrece el middleware de CORBA.

Arquitectura de CORBA

El estándar CORBA es un middleware que utiliza la arquitectura denominada OMA (Object Management Architecture), también desarrollada por OMG. Un middleware se define como una capa de software que conecta dos o más aplicaciones heterogéneas separadas, proporcionando una homogeneidad entre las redes subyacentes, sistemas operativos y lenguajes de programación.

Para añadir seguridad en este protocolo, se ha incluido una capa extra con nuevas medidas de seguridad, todo ello definido en el documento, en la versión 1.8 del estándar CORBA. Este documento especifica un modelo de seguridad junto con una arquitectura, estableciendo de manera colectiva los límites de seguridad de CORBA.

Variaciones introducidas por CORBAsec

La arquitectura de seguridad de CORBAsec centraliza las funcionalidades de seguridad a un núcleo de confianza, encargado de hacer cumplir políticas de seguridad, como por ejemplo:

  • Asegurarse que las invocaciones que hacen los clientes a objetos, para poder obtener información o realizar funciones, estén protegidas, como requiere la política de seguridad.
  • Requerir que el control de acceso y la auditoría se realicen cuando se invoca a un objeto.
  • Prevenir que las aplicaciones de objetos interfieran entre ellas u obtengan accesos no autorizados.

Existen una serie de paquetes de funcionalidades que se utilizan para estructurar la especificación de seguridad y definir los requisitos de conformidad. Estos paquetes indican, por ejemplo, dónde y cómo se han de aplicar las políticas de seguridad de un sistema y las condiciones por las que una entidad puede acceder a un objeto. Uno de los paquetes más relevantes es el denominado Main Security Funcionality Packages que cuenta con dos niveles de seguridad:

  • Nivel 1: proporciona un nivel de seguridad inicial a las aplicaciones que no cuentan con mecanismos de seguridad y a aquellos que tienen que hacer cumplir sus medidas de seguridad relacionadas con controles de acceso y auditorias.
  • Nivel 2: permite que las aplicaciones controlen la seguridad proporcionada en las invocaciones del objeto y que gestionen la política de seguridad.

En la versión CORBAsec se indica que cualquier usuario que acceda a un objeto debe ser un principal, es decir, un usuario o una entidad del sistema previamente registrado y autenticado, o un cliente actuando en nombre de un principal. El principal cuenta con una serie de atributos de privilegios que son conocidos por el sistema y determinan a qué puede acceder.

Cuando un principal invoca a un objeto se le aplican las funcionalidades de seguridad descritas para ese objeto en la política de seguridad. Estas pueden ser:

  • Establecer una asociación segura entre el cliente y el objeto para que se compruebe que cada uno es quién dice ser.
  • Decidir si el principal o cliente, está autorizado para realizar la petición a través de la política de control de acceso.
  • Auditar esta petición en caso de que sea requerido.
  • Proteger las peticiones y respuestas de modificaciones en tránsito implementando medidas de protección.

Cuando se realiza una invocación a un objeto, CORBAsec utiliza una arquitectura basada en un modelo estructural, formado por cuatro niveles principales:

  • Componentes a nivel de aplicación.
  • Componentes, como servicios de seguridad o políticas de objetos definidas en la política de seguridad, que implementan los servicios de seguridad independientemente de cualquier tecnología de seguridad subyacente.
  • Componentes que implementan tecnología especifica de seguridad.
  • Protección básica y comunicación, generalmente proporcionada por la combinación de hardware y mecanismos del sistema operativo.

Especificaciones de seguridad de CORBAsec

- Modelo estructural. Fuente: Especificaciones de seguridad de CORBAsec -

Seguridad en CORBAsec

Las medidas de seguridad propuestas para mejorar CORBA se centran en asegurar los aspectos de transparencia, escalabilidad, reusabilidad de las infraestructuras de seguridad existentes, flexibilidad e interoperabilidad. Esta especificación intenta conseguir estos objetivos ofreciendo las siguientes funcionalidades de seguridad:

  • Identificación y autentificación: prueba la identidad de los usuarios o procesos del sistema, recuerda y transporta de manera segura la información de identidad y hace que esta información de identidad esté disponible cuando sea necesario.
  • Protección del mensaje: utilizando SSL y claves de cifrado simétricas para proteger la privacidad de los mensajes. Se evita de esta forma que un atacante reproduzca comunicaciones almacenadas previamente.
  • Autorización: el acceso a objetos y operaciones puede estar controlado mediante identificación y otras informaciones.
  • Auditoria de logs: recolectar, almacenar y distribuir información sobre las peticiones de llamadas y sus resultados. Los mecanismos de auditoria son capaces de identificar quién es el usuario, incluso después de una cadena de llamadas a través de muchos objetos.
  • No repudio: proporciona evidencias irrefutables de las acciones, como la veracidad del origen de datos al destinatario o la recepción de datos al remitente.
  • Delegación: ocurre cuando un usuario autoriza a otro para usar su identidad o privilegios con unas restricciones de uso. Esto requiere controlar y registrar las identidades involucradas en la ejecución de una solicitud CORBA.

Estas nuevas funcionalidades de seguridad de CORBAsec incluyen algunos aspectos que todavía pueden mejorarse:

  • Autenticación y autorización: antes de que un cliente y un servidor intercambien mensajes de una manera segura, deben conocer la identidad y otros atributos de seguridad de la otra parte. Los atributos predefinidos de CORBAsec son limitados y no describen todas las propiedades de un usuario.
  • Auditoria de logs: la funcionalidad de auditoría no es completa. Se carece de seguridad para registros de auditoría y faltan medios de filtrado efectivos o interfaces para un análisis apropiado. Además, no existe un formato estandarizado para registros de auditoría, por lo que es imposible lograr un procesamiento de auditoría centralizado.
  • No repudio: la especificación del servicio de no repudio en CORBAsec también está incompleta, faltando componentes, como la autoridad de entrega y el almacenamiento seguro.

En lugar de implementar todas estas funcionalidades, CORBAsec actúa como una API que se encarga de invocar a los mecanismos de seguridad subyacentes, como por ejemplo SSL. Es por ello que la eficacia proporcionada por CORBAsec está limitada por la funcionalidad que ofrecen estos mecanismos subyacentes.

La especificación CORBAsec intenta realizar una compensación entre dos aspectos muy relevantes como son la flexibilidad y la interoperabilidad. La flexibilidad se refiere al soporte de varias políticas de seguridad, mientras que la interoperabilidad hace referencia al funcionamiento simultáneo de diferentes sistemas SCADA. La interoperabilidad se logra estandarizando lo máximo posible las políticas de seguridad y los mecanismos de seguridad, para que los productos de diferentes proveedores proporcionen la misma funcionalidad, independientemente de la implementación interna.

CORBAsec en SCI

El uso de CORBAsec en los sistemas de control se focaliza en su integración en todos los sistemas que ya utilizan CORBA en ese momento, caracterizados por disponer de arquitecturas distribuidas y que cubren una amplia superficie.

Un ejemplo de la implementación de CORBAsec en un sistema de control es el caso de los hospitales. La información de los pacientes, que se considera crítica, se encuentra segmentada entre hospitales, redes comunitarias de información de salud y organizaciones para el cuidado de la salud, cada una con su respectivo software de gestión. Gracias a la aplicación de CORBAsec, el historial médico de un paciente puede ser organizado en un mismo informe de manera casi instantánea y segura, reduciendo costes burocráticos.

Conclusión

Dada la no compatibilidad en algunos casos entre sistemas de control industrial de diferentes proveedores, las organizaciones no pueden aprovechar la gran variedad de productos con características únicas que existente en el mercado. CORBA permite que diferentes sistemas puedan interoperar para sacar el máximo rendimiento al mercado y así no tener que depender del mismo proveedor desde la primera adquisición.

Las primeras versiones de CORBA en los años 90 no contemplaban ningún aspecto de seguridad, pero con la evolución de la seguridad industrial, se hizo necesaria una implementación de medidas que protegiesen el estándar frente a las nuevas amenazas que surgían. CORBAsec introduce dichas medidas de seguridad con un equilibrio entre la flexibilidad y la interoperabilidad, permitiendo la unión de diferente software de una manera segura y eficaz.