Una nueva forma de certificar software de código abierto. El desafío del proyecto AssureMOSS

(Para mateo mauri)
04/08/21

Europa depende en gran medida del software De código abierto diseñado principalmente en el extranjero. Dentro del mercado único digital europeo, la mayor parte del software se ensambla en línea y más de la mitad proviene de software (repositorios) De código abierto hecho al otro lado de la frontera.

Algunas universidades, pequeñas, medianas y grandes empresas, un grupo de interés especializado y un consejo asesor con competencias clave en el campo del software. De código abierto, se han unido en una asociación estratégica para crear nuevos métodos y enfoques para acelerar el desarrollo de software más eficiente y seguro.

En este artículo veremos brevemente el intento del proyecto AssureMOSS (Garantía y certificación en software y servicios abiertos multipartitos seguros - https://assuremoss.eu) para afrontar el desafío del software De código abierto “Diseñado en todas partes, pero garantizado en Europa”. El proyecto de tres años (octubre de 2020 - septiembre de 2023) está financiado por la Comisión Europea en el marco del programa HORIZONTE 2020 [1].

La prisa por el software ensamblado y el paradigma MOSS

En la última década, entre las muchas innovaciones, dos características principales en particular han cambiado radicalmente y condicionado los proyectos de desarrollo de software [2]. Primero, el acortamiento del ciclo de retroalimentación entre los equipos de desarrollo y la respuesta a los productos que lanzan estos equipos (por ejemplo, pruebas A / B, DevOps) ha llevado a un desarrollo frenético con cambios de producto más rápidos. En segundo lugar, los desarrolladores se han centrado cada vez más en diferenciar las características de sus productos finales, pero confían cada vez más en terceros para todo lo demás (implementación en la nube, uso extensivo de marcos abiertos como OpenSSL [3] o Node .js [4], o uso de más productos restringidos pero con protocolos, procedimientos, bibliotecas y API [5] de todos modos De código abierto). Todo esto ha llevado a un desarrollo que involucra a diferentes partes (llamado multi-stakeholders, del inglés: multi-stakeholders party): el resultado es un montaje operado por diferentes actores, cada uno con sus propias prácticas / políticas de seguridad y privacidad.

Ya podemos introducir aquí un acrónimo que usaremos en el resto del artículo. El software moderno se basa en un paradigma denominado Software y servicios abiertos multipartitos (MOSS). Por lo tanto, una empresa de software que desarrolla un producto representa solo uno de los protagonistas involucrados en el proceso de garantizar la seguridad del software en ese mismo producto.

Estas partes involucradas incluyen las comunidades de desarrollo de SO, por ejemplo, en la creación de actualizaciones de seguridad, o empresas que brindan nuevos servicios de seguridad o actualizaciones de interfaces existentes. El paradigma MOSS ciertamente se aplica al caso de las empresas más grandes, mientras que las empresas más pequeñas, como las pymes y las empresas emergentes, pueden tener una cadena de suministro más corta que se basa principalmente en software libre y de código abierto (FOSS - Free and Open Source Software).

Este último es la columna vertebral de la industria del software: casi el 80% de los productos comerciales de hoy contienen al menos un componente de software libre hasta el punto de que el Parlamento Europeo ha reconocido formalmente su papel clave. También es interesante notar la tendencia progresiva a reducir la porción de código producido internamente por las empresas de desarrollo de software. A finales de la década de 90, más del 95% de la pila de software consistía en código de desarrollo propio. Solo las bases de datos y los sistemas operativos provienen de proveedores de código cerrado con licencia. Observando la tendencia actual, se puede ver que en 2019, por otro lado, la porción de código producido internamente ha disminuido drásticamente para representar solo el 5% del pastel: navegadores, frameworks de UI, administradores de paquetes, servidores de aplicaciones, plataformas de microservicios, contenedores, sistemas que operan en contenedores, todos son generalmente componentes de software de terceros (en su mayoría De código abierto) que las empresas de software utilizan a diario [6-7-8].

Certificación y recertificación de software

Esta evolución del proceso de desarrollo de software en ciclos rápidos y fragmentados implicaría tantos procesos / ciclos de certificación y garantía de seguridad del software debido a los numerosos cambios que tienen consecuencias en la seguridad y privacidad (una nueva vulnerabilidad podría por ejemplo introducirse por el uso de una nueva biblioteca capaz de acceder a datos personales y posiblemente transmitirlos). Por tanto, el nuevo paradigma para garantizar la seguridad debe ser "ligero y continuo" en comparación con el paradigma anterior "rígido y fijo". Por tanto, no deberíamos hablar de certificación sino de certificación, recertificación y evaluación de riesgos.

El hecho de que el desarrollo de software sea, de hecho, una actividad de múltiples partes interesadas (donde algunas partes interesadas están ocultas en sub-subdependencias de bibliotecas de terceros) significa que las técnicas de aseguramiento deberían funcionar en un ecosistema fragmentado con múltiples fuentes de artefactos (p. Ej. de la comunidad De código abierto), diferentes tecnologías y lenguajes y diferentes dominios de decisión. Como resultado, un nuevo paradigma para el aseguramiento de la seguridad implica un enfoque "inteligente y flexible", uno que es capaz de aprender, adaptarse y mejorar con el tiempo con la disponibilidad de nuevos datos y comentarios adicionales.

A menos que se creen técnicas de garantía de seguridad innovadoras, ligeras e inteligentes que puedan integrarse con múltiples partes interesadas y desarrolladores de ritmo rápido, la seguridad seguirá siendo penalizada [9] por la carrera de productividad de los equipos de desarrollo. Se insta a implementar nuevas funciones a diario .

El desarrollo rápido de múltiples partes interesadas también plantea un desafío para asegurar la certificación de software. Esquemas de certificación de seguridad existentes, incluidos los de proyectos De código abierto, como el Programa Insignia de la Iniciativa de Infraestructura Central (CII) [10], se centran en certificar que los proyectos de software siguen ciertas mejores prácticas de seguridad. Esencialmente, estos esquemas se centran en el proceso de desarrollo de software. Sin embargo, en los proyectos de software modernos, el proceso de desarrollo se está volviendo más fluido y continuamente adaptado por los desarrolladores (en lugar de ser rígido y centralizado). Como resultado, las instalaciones involucradas en cada fase pueden no tener los recursos necesarios para adquirir y mantener estas certificaciones.

El desafío del proyecto AssureMOSS

Por lo dicho, seguramente se habrá percibido la necesidad de un cambio de perspectiva por parte de la Unión Europea, que ha tratado de desencadenar un nuevo enfoque financiando el proyecto AssureMOSS. El proyecto involucra a un equipo formado por 4 universidades (Delft, Gotheborg, Trento, Viena), 3 pymes innovadoras (Pluribus One, FrontEndArt, Search-Lab), 2 grandes empresas (SAP, Thales), la organización EU-VRi y un asesor Junta compuesta por figuras estratégicas del mundo de la industria y del Software de Código Abierto (OSS).

Específicamente, AssureMOSS propone implementar la transición de la evaluación de seguridad basada en procesos a la evaluación de seguridad basada en artefactos (modelos, código fuente, imágenes de contenedor, servicios), apoyando todas las fases del ciclo de vida continuo del software (diseño, desarrollo, implementación, evaluación y respaldo). .

AssureMOSS, por lo tanto, adopta un enfoque integral para el aseguramiento de la seguridad y la recertificación y tiene la ambición de contribuir en cada etapa del proceso de desarrollo de software, gracias a un conjunto coherente de técnicas automatizadas y ligeras que permiten a las empresas de software evaluar, administrar y recertificar la seguridad y la privacidad. riesgos asociados con el rápido desarrollo y la entrega continua de software y servicios abiertos de múltiples partes. En última instancia, el proyecto tiene como objetivo apoyar la creación de un software MOSS más seguro.

La idea clave es admitir mecanismos de detección ligeros y escalables que se puedan aplicar automáticamente a toda la población de componentes de software mediante:

• uso de Machine Learning para la identificación inteligente de problemas de seguridad entre artefactos;

• análisis y verificación de cambios mediante el seguimiento continuo de los efectos secundarios sobre la privacidad y la seguridad;

• Análisis de riesgo constante y evaluación de la seguridad del software (con especial atención a los impactos potenciales en el negocio causados ​​por productos potencialmente vulnerables).

El proyecto generará no solo una serie de métodos innovadores y herramientas de código abierto, sino también conjuntos de datos de referencia con miles de vulnerabilidades y código que pueden ser utilizados por otros investigadores.

Las herramientas AssureMOSS ayudarán, por ejemplo, a ahorrar tiempo en la búsqueda de errores y vulnerabilidades a través del cribado semiautomático de adiciones, eliminaciones y cambios en los repositorios de código (análisis de confirmación [11]), acelerando así también la evaluación y proceso de análisis del software.

El cambio de perspectiva (artefactos vs procesos) y el concepto de recertificación continua del software desarrollado, son por tanto la base de un desafío sumamente ambicioso: establecer las pautas que puedan ser utilizadas, por ejemplo, por los organismos de certificación y estandarización para fundar un Esquema de certificación centrado en artefactos para software MOSS.

La intuición básica está bien resumida en una práctica conocida en el campo de la salud médica [12] y que aquí adaptamos con el propósito: “El cribado se define como la identificación preventiva de una enfermedad en una población aparentemente sana y asintomática mediante pruebas (de componentes de software), exámenes u otros procedimientos que se pueden aplicar rápida y fácilmente a la población objetivo. [...] En el apoyo a los programas de detección, es importante evitar imponer modelos derivados de entornos altamente eficientes con sistemas de salud avanzados y esquemas de verificación (seguridad) sofisticados y costosos, en empresas, procesos (desarrolladores y usuarios) en países que sí lo hacen. no contar con la infraestructura y los recursos necesarios para lograr una adecuada prevención sobre la población ”.

1 El proyecto AssureMOSS está regulado por el Grant Agreement n ° 952647, y está financiado por un total de 4.689.425 Euros, www.pluribus-one.it/it/ricerca/progetti/asuremoss

2 de enero Bosch, Velocidad, datos y ecosistemas: sobresalir en un mundo impulsado por software, CRC Press, 2016

3 OpenSSL es una implementación de código abierto de los protocolos SSL y TLS, disponible para la mayoría de los sistemas operativos tipo Unix, incluidos GNU / Linux y macOS, y también para Microsoft Windows. www.openssl.org

4 Node.js es un sistema de tiempo de ejecución de código abierto multiplataforma orientado a eventos para ejecutar código JavaScript, construido en el motor JavaScript V8 de Google Chrome. Muchos de sus módulos principales están escritos en JavaScript y los desarrolladores pueden escribir nuevos módulos en JavaScript, https://nodejs.org/it/

5 API, acrónimo de Application Programming Interface, www.redhat.com/en/topics/api/what-are-application-programming-interfaces

6 Encuesta sobre el futuro del código abierto de Black Duck, 2015

7 Holger Mack, Tom Schröer, Security Midlife Crisis, Cumbre de seguridad de productos SAP 2019

http://www.europarl.europa.eu/oeil/popups/ficheprocedure.do?lang=en&refe...

9 Según CVE Details, 2017 rompió el récord de vulnerabilidades de los años anteriores (14714 en 2017 frente al récord anterior de 7946 en 2014). Desafortunadamente, 2018 lo ha hecho aún peor (16555 vulnerabilidades). https://www.cvedetails.com/browse-by-date.php

10 https://www.coreinfrastructure.org

11 https://wiki.ubuntu-it.org/Programmazione/Git/Commit

12 https://www.who.int/cancer/prevention/diagnosis-screening/screening/en/

13 Eoin Woods, Democratizing Software Architecture, Keynote en ICSA 2019, en línea en https://speakerdeck.com/eoinwoods/democratising-software-architecture

14 www.pluribus-one.it/it/chi-siamo/blog/88-cybersecomics/111-bug