Red de Respuestas Legales - Conocimientos legales - Investigación sobre herramientas de protección de la seguridad de la cadena de suministro de software

Investigación sobre herramientas de protección de la seguridad de la cadena de suministro de software

Wu Wen Jiang Wei, ingeniero, Departamento de Computación en la Nube, Instituto de Computación en la Nube y Big Data, Academia de Tecnología de la Información y las Comunicaciones de China

Con el rápido desarrollo de 5G, computación en la nube, inteligencia artificial, big data y blockchain y otras tecnologías, El proceso de transformación digital avanza paulatinamente y el software se ha convertido en uno de los elementos esenciales de la producción y la vida diaria, penetrando en diversas industrias y campos. La evolución de tecnologías como contenedores, middleware y microservicios ha promovido el rápido desarrollo de la industria del software. También ha hecho que el diseño y el desarrollo de software sean cada vez más complejos, la cadena de suministro de software se ha vuelto cada vez más compleja y la protección de seguridad de enlace completo se ha vuelto más compleja. cada vez más difícil. En los últimos años, los incidentes de seguridad de la cadena de suministro de software han ocurrido con frecuencia, lo que representa una gran amenaza para la privacidad de los usuarios, la seguridad de la propiedad e incluso la seguridad nacional. Las herramientas de seguridad automatizadas son uno de los medios necesarios para proteger la seguridad de la cadena de suministro de software. Estudiar la seguridad de las herramientas y las cadenas de suministro de software es de gran importancia y tiene un efecto de gran alcance en el mantenimiento de la seguridad nacional en el ciberespacio, la protección de la privacidad de los usuarios y la seguridad de la propiedad.

1. Descripción general de la seguridad de la cadena de suministro de software

La definición de cadena de suministro de software se amplía desde el concepto de cadena de suministro tradicional. En general, en la industria se cree que la cadena de suministro de software se refiere a un sistema que compila software a través de una o más etapas de diseño y desarrollo de software, y envía el software desde los proveedores de software a los usuarios de software a través de canales de entrega de software. La seguridad de la cadena de suministro de software se refiere a la seguridad del proceso de codificación, herramientas, equipos o códigos, módulos y servicios desde el principio de la cadena de suministro, así como la seguridad de los canales de entrega de software en cada etapa del diseño y desarrollo en la cadena de suministro de software. Los ataques a la cadena de suministro de software se caracterizan por su bajo costo y alta eficiencia. Según su definición, en comparación con los ataques tradicionales dirigidos a vulnerabilidades de seguridad en el propio software, para la cadena de suministro del software, la superficie de ataque se extiende desde el propio software hasta todos los códigos, módulos y servicios dentro del propio software y las cadenas de suministro relacionadas con estos módulos. y servicios Los procesos de codificación, las herramientas de desarrollo y los equipos de los proveedores reducen significativamente la dificultad de los ataques para los atacantes. Al mismo tiempo, cualquier problema de seguridad causado por el diseño y desarrollo de software afectará directamente la seguridad de todo el software posterior en la cadena de suministro, amplificando el impacto de los ataques.

En los últimos años, la defensa de la seguridad del software en sí se ha fortalecido continuamente. Los atacantes han desplazado sus objetivos de ataque del software objetivo a los eslabones más débiles de la cadena de suministro de software, lo que ha provocado frecuentes incidentes de seguridad en el suministro de software. cadena y afectando la privacidad y seguridad de los usuarios. La seguridad de la propiedad e incluso la seguridad nacional representan una amenaza importante. El ejemplo más típico es que, de junio a febrero de 2020, los productos de software de gestión de seguridad de red de un proveedor de software de gestión de seguridad de red de EE. UU. fueron atacados por un ataque a la cadena de suministro altamente sofisticado organizado por una APT nacional, que afectó directamente a más de 18.000 clientes, incluidos Las principales empresas estadounidenses, la infraestructura, los ejércitos y los gobiernos están completamente controlados por los atacantes.

El impacto en la seguridad de la cadena de suministro de software es enorme. Los países le otorgan gran importancia y han implementado políticas y regulaciones para promover la protección de la seguridad de la cadena de suministro de software. El 12 de mayo de 2021, el presidente estadounidense Biden firmó y emitió la "Orden ejecutiva para mejorar la ciberseguridad nacional", que proponía claramente mejorar la seguridad de la cadena de suministro de software y requería el establecimiento de estándares de seguridad básicos para el desarrollo de software vendido al gobierno. No solo debe proporcionar aplicaciones, también debe proporcionar una lista de materiales de software para mejorar la transparencia de los componentes que componen la aplicación, construir un entorno de cadena de suministro de software más flexible y seguro y garantizar la seguridad nacional de los Estados Unidos. En julio del mismo año, los Estándares y Tecnología Nacionales de EE. UU. (NIST) publicaron las "Directrices para desarrolladores sobre estándares mínimos para la verificación de software". Para fortalecer la seguridad de la cadena de suministro de software, se presentan claramente 11 recomendaciones para la verificación de software, que incluyen pruebas automáticas de coherencia, minimizar las pruebas manuales, utilizar análisis de código estático para encontrar vulnerabilidades importantes y resolver el código incluido (bibliotecas, paquetes, servicios).

China también concede gran importancia a la seguridad de la cadena de suministro de software. 2065438 En junio de 2007, mi país promulgó e implementó las "Medidas para la revisión de la seguridad de los productos y servicios de red", centrándose en los riesgos de seguridad de la cadena de suministro durante las pruebas, la entrega y el soporte técnico de productos de software. El 1 de diciembre de 2019, se implementó oficialmente la versión 2.0 de los "Requisitos básicos para la protección del nivel de seguridad de la red de la tecnología de seguridad de la información", que requiere claramente la selección de proveedores de servicios y la gestión de la cadena de suministro en los requisitos generales y las extensiones de computación en la nube.

2. Desafíos de seguridad de la cadena de suministro de software

En la actualidad, la seguridad de la cadena de suministro de software es muy valorada, pero aún enfrenta múltiples desafíos prácticos, que se pueden resumir en los siguientes. cinco categorías.

1. La complejidad del diseño y desarrollo de software se ha convertido en una tendencia inevitable.

Con la evolución de nuevas tecnologías como contenedores, middleware y microservicios, la industria del software se está desarrollando rápidamente y los requisitos para las funciones y el rendimiento del software también aumentan constantemente. La complejidad del diseño y desarrollo de software se ha convertido en una tendencia inevitable. Al mismo tiempo, esta situación ha provocado un fuerte aumento en la dificultad del diseño, desarrollo y mantenimiento del software, lo que inevitablemente conducirá a vulnerabilidades de seguridad en el proceso de diseño y desarrollo, poniendo peligros ocultos para la seguridad de la cadena de suministro de software.

2. El código abierto se ha convertido en el modelo de desarrollo predominante.

En la actualidad, el código abierto se ha convertido en uno de los modelos de desarrollo predominantes. El código fuente del software es principalmente código fuente mixto, que consta de código fuente desarrollado independientemente por la empresa y código fuente abierto. Según el informe "Análisis de riesgos y seguridad de código abierto 2021" de Xinsi Technology, en los últimos cinco años, la proporción de código fuente abierto en las aplicaciones ha aumentado del 40% a más del 70%. La introducción del código abierto ha acelerado la eficiencia de la investigación y el desarrollo de software, pero también ha introducido los problemas de seguridad del software de código abierto en la cadena de suministro de software, lo que ha llevado a la diversificación de los problemas de seguridad en la cadena de suministro de software.

3. La entrega rápida es la primera prioridad.

Debido a la feroz competencia en la industria, la rápida implementación de funciones y la rápida entrega de software siguen ocupando el primer lugar en comparación con la seguridad. Aunque el software suele cumplir con requisitos funcionales básicos de seguridad, como autenticación de identidad, cifrado y descifrado, auditoría de seguridad de registros, etc. , el mecanismo general de protección de la seguridad está relativamente rezagado y la protección en la última etapa es el foco principal. A menudo se ignora la construcción temprana y simultánea de la propia seguridad, y también existen deficiencias en la eliminación temprana de las vulnerabilidades de seguridad en el propio software.

4. El mecanismo de entrega de software enfrenta riesgos de seguridad.

La entrega de software se refiere al proceso de transferencia de software desde los proveedores de software a los usuarios de software. La entrega de software tradicional se basa en CD-ROM y otros dispositivos de almacenamiento. Con el desarrollo de tecnologías como Internet, la distribución rápida de software a través de Internet se ha convertido en un modelo básico, y los canales de distribución inseguros también tendrán un impacto significativo en la seguridad de la cadena de suministro de software.

5. Se utiliza al atacar sitios web de parches de software.

Para proteger la seguridad de la cadena de suministro de software, el ciclo de vida del software no termina después de que se entrega, sino hasta que el software deja de funcionar. y se desconecta. Los defectos de seguridad son inevitables en el proceso de diseño y desarrollo de software, y la distribución e implementación de parches son las formas más comunes de corregir defectos y vulnerabilidades de software. La distribución y el despliegue de parches de software también se ven afectados por los canales de distribución, y los sitios web de descarga de parches contaminados también pueden causar problemas de seguridad en la cadena de suministro de software.

3. Herramientas de protección de la seguridad de la cadena de suministro de software

La seguridad de la cadena de suministro de software implica muchos elementos y eslabones. Haciendo referencia a las divisiones comunes en la industria, los eslabones de la cadena de suministro de software se pueden resumir en tres partes: desarrollo, entrega y uso. La protección de la seguridad de la distribución y el uso se logra principalmente garantizando la seguridad de los lugares de distribución y los canales de transmisión. El proceso de desarrollo está estrechamente relacionado con el código fuente del software y la protección de la seguridad es compleja, incluida la seguridad del proceso de codificación, herramientas, equipos y códigos, módulos y servicios en la fase anterior de la cadena de suministro. Implica cuatro tipos de herramientas de seguridad. incluyendo herramientas en el proceso de producción de software y herramientas de gestión de la cadena de suministro de software.

1. Herramienta de prueba de seguridad de aplicaciones estáticas

Las pruebas de seguridad de aplicaciones estáticas (SAST) se refieren únicamente a pasar el análisis o la inspección sin ejecutar el programa en sí. el programa fuente para comprobar la corrección del programa. El desarrollo de la tecnología de análisis estático del código fuente está estrechamente relacionado con el avance de la tecnología de compilación y los equipos de hardware informático. La tecnología de análisis de seguridad del código fuente se propone principalmente en base a tecnología de compilación o tecnología de verificación de programas. Al utilizar esta tecnología, se pueden descubrir automáticamente fallas de seguridad y violaciones de las reglas de seguridad en el código. Las principales tecnologías de análisis actuales incluyen: (1) Tecnología de análisis léxico, que solo hace coincidir el flujo de texto o token del código con patrones de defectos resumidos conocidos, y no analiza en profundidad la semántica ni el contexto del código. El análisis léxico tiene una alta eficiencia de detección, pero solo puede detectar defectos simples y tiene una alta tasa de falsos positivos.

(2) La tecnología de explicación abstracta se utiliza para demostrar que un determinado código no tiene errores, pero no garantiza la autenticidad de los errores informados. El principio básico de esta tecnología es asignar los valores de las variables del programa a dominios abstractos más simples y simular la ejecución del programa. Por lo tanto, la precisión y el rendimiento de esta técnica dependen de la aproximación del dominio abstracto al dominio de valor real del programa. (3) Tecnología de simulación de programas, la ejecución del programa simulado obtiene todos los estados de ejecución y los resultados del análisis son más precisos. Se utiliza principalmente para encontrar defectos con lógica compleja y condiciones de activación estrictas, pero es difícil mejorar el rendimiento. Incluye principalmente dos tecnologías: verificación de modelos y ejecución simbólica. La verificación de modelos construye el software como un modelo abstracto, como una máquina de estados o un gráfico dirigido, utiliza expresiones formales como fórmulas lógicas modales/temporales para describir las propiedades de seguridad y recorre el modelo para verificar si se cumplen estas propiedades. La ejecución simbólica utiliza valores simbólicos para representar valores de variables del programa y simula la ejecución del programa para encontrar situaciones que cumplan con las reglas de detección de vulnerabilidades. (4) La tecnología de demostración de teoremas describe la premisa de los errores del programa y el programa en sí como un conjunto de expresiones lógicas, y luego utiliza el solucionador de restricciones para encontrar rutas de ejecución que puedan causar errores del programa según la teoría de la satisfacibilidad. Este método es flexible, puede utilizar fácilmente fórmulas lógicas para describir defectos de software y puede ajustar restricciones de acuerdo con diferentes requisitos de rendimiento y precisión del análisis. Es eficaz para el análisis de software industrial a gran escala. (5) La tecnología de análisis de flujo de datos, basada en el gráfico de flujo de control, escanea cada instrucción en el gráfico de flujo de control de una manera determinada, tratando de comprender el comportamiento de la instrucción para determinar las vulnerabilidades de amenaza en el programa. El método general de análisis de flujo de datos es definir un conjunto de ecuaciones en el gráfico de flujo de control y resolverlo de forma iterativa, que generalmente se divide en propagación hacia adelante y propagación hacia atrás. La propagación hacia adelante significa que el estado se transfiere hacia adelante a lo largo de la ruta del flujo de control y el valor del bloque anterior se transfiere al siguiente bloque. La propagación hacia atrás significa que el valor del bloque posterior se transfiere nuevamente al bloque anterior contra el flujo de control; camino.

2. Herramienta de prueba de seguridad de aplicaciones dinámicas

La tecnología de pruebas de seguridad de aplicaciones dinámicas (DAST) analiza el estado de ejecución dinámica de la aplicación durante la fase de prueba o ejecución. Simula el comportamiento de un hacker que ataca dinámicamente una aplicación y analiza la respuesta de la aplicación para determinar si es vulnerable a un ataque. Tomando como ejemplo las pruebas de sitios web, presentamos las pruebas dinámicas de seguridad de aplicaciones, que incluyen principalmente tres aspectos: (1) Recopilación de información. Antes de comenzar la prueba, recopile todas las URL del sitio web que se va a probar, incluidos los recursos estáticos y las interfaces dinámicas. Cada URL debe contener la ruta y la información completa de los parámetros. (2) Proceso de prueba. Los evaluadores importan la lista de URL necesarias para las pruebas a la herramienta de pruebas. La herramienta de prueba proporciona una lista de selección de "elementos de riesgo de detección" y los evaluadores pueden seleccionar diferentes elementos de detección de riesgos de acuerdo con el plan de prueba. Durante la prueba, la herramienta de prueba controla la velocidad de acceso al sitio web de destino para garantizar que el sitio web de destino no se ralentice ni falle debido a demasiadas solicitudes simultáneas. Al configurar la información básica de la tarea de prueba, el evaluador completa el valor máximo de "Solicitudes por segundo" según el rendimiento del sitio web de destino. La herramienta de prueba garantiza que el número total de solicitudes enviadas por segundo durante la prueba no supere este valor. (3) Informe de prueba. Una vez completados todos los pasos de la prueba de seguridad, se genera un informe de prueba. El informe de prueba generalmente incluye una página de descripción general, que incluye un resumen de la seguridad del sitio web de destino basado en varios datos generados durante el proceso de prueba, el número total de vulnerabilidades descubiertas durante el proceso de prueba y datos de vulnerabilidad de acuerdo con diferentes dimensiones de nivel de seguridad; .

3. Herramienta interactiva de prueba de seguridad de aplicaciones

Las pruebas de seguridad de aplicaciones interactivas (IAST) pueden basarse en un análisis integral de la solicitud y el contexto del tiempo de ejecución, a través de instrumentación La tecnología identifica la seguridad de manera eficiente y precisa. fallas y vulnerabilidades y determina la ubicación del código de fallas y vulnerabilidades de seguridad. Funciona principalmente en tres aspectos: recopilación de tráfico, monitoreo de proxy y escaneo interactivo. (1) La recopilación de tráfico se refiere a la recopilación de tráfico de solicitudes HTTP/HTTPS durante la prueba de la aplicación. Puede recopilarse a través de la capa de proxy o del servidor proxy. El tráfico recopilado son datos válidos con información de autorización enviada por los evaluadores, lo que puede evitar en la mayor medida escaneos no válidos causados ​​por problemas de permisos de los objetivos de prueba y problemas de múltiples pasos en el escaneo tradicional; al mismo tiempo, la recopilación de tráfico puede preservar la funcionalidad de; el rastreador y evitar pruebas El problema de fuga de escaneo causado por la falla del rastreador de destino al rastrear.

(2) La supervisión del agente se refiere al programa del agente implementado en el servidor web, que generalmente es una extensión del lenguaje de programación del servicio web. El agente monitorea la ejecución de funciones durante la ejecución de la programación de aplicaciones web a través de extensiones, incluidas funciones de consulta SQL, funciones de ejecución de comandos, funciones de ejecución de código, funciones de deserialización, funciones de operación de archivos, funciones de operación de red, funciones de análisis XML y otras funciones que pueden desencadenar una vulnerabilidad. explotación. (3) Escaneo interactivo significa que el escáner de vulnerabilidades de la aplicación web, con la ayuda del monitoreo de proxy, solo necesita reproducir una pequeña cantidad del tráfico de solicitudes recopilado y puede completar la detección de vulnerabilidades de la aplicación web durante la reproducción. Por ejemplo, al detectar vulnerabilidades de inyección SQL, detección de un solo parámetro, el conocido programa de detección de inyección SQL de código abierto SQLMAP necesita enviar miles de paquetes de solicitud HTTP para escanear interactivamente y solo necesita usar una etiqueta de escáner para reproducir una solicitud; El agente puede monitorearlo en la función de consulta SQL para determinar si hay vulnerabilidades, lo que reduce en gran medida la cantidad de paquetes de escaneo.

4. El análisis de composición de software

(SCA) se dirige principalmente a componentes de código abierto. Puede escanear e identificar, obtener información sobre vulnerabilidades de seguridad, licencias y otra información de los componentes para evitar cuestiones legales y de seguridad. y riesgos regulatorios. Hay cinco tecnologías de escaneo de código abierto. (1) Identifique componentes y tipos de licencia comparando fragmentos de código fuente. (2) Extraiga los valores hash del nivel de archivo y compare los valores hash a nivel de archivo. Si todos los valores hash de los archivos coinciden correctamente, se identifica el componente de código abierto. (3) Leer información escaneando archivos de configuración de paquetes e identificar componentes para identificar componentes y tipos de licencia. (4) Analizar el directorio de archivos y la estructura de proyectos de código abierto, y analizar las rutas y dependencias de los componentes de código abierto. (5) Al compilar proyectos de código abierto y analizar las dependencias de los proyectos de código abierto compilados, se puede identificar información sobre los componentes de código abierto utilizados en los proyectos de código abierto.

4. Recomendaciones de investigación sobre seguridad de la cadena de suministro de software

1. Desarrollar tecnologías relacionadas para herramientas de seguridad de software.

La protección de la seguridad de la cadena de suministro de software es inseparable del desarrollo y uso de herramientas de seguridad. Desarrollar vigorosamente tecnología de herramientas de seguridad de software para resolver las difíciles necesidades del desarrollo de seguridad, llevar a cabo un posicionamiento previo de seguridad y lograr el avance simultáneo de las medidas de protección de seguridad y el diseño y desarrollo de software.

2. Mejorar la capacidad de proteger, detectar y responder a incidentes de seguridad en la cadena de suministro de software.

La protección de la seguridad de la cadena de suministro de software requiere un sistema integral de defensa de seguridad antes, durante y después del evento. Los ataques a la seguridad en la cadena de suministro de software se caracterizan por un alto ocultamiento, una fuerte propagación y un profundo impacto. Como sistema enorme y complejo, la cadena de suministro de software inevitablemente tiene nodos vulnerables. Por lo tanto, se debe mejorar la capacidad de proteger, detectar y responder a ataques de seguridad en la cadena de suministro de software para evitar el impacto significativo de los incidentes de seguridad.

3. Establecer y mejorar el sistema estándar relacionado con la seguridad de la cadena de suministro de software.

A través de institutos de investigación científica y organizaciones de estándares, mejorar el sistema estándar de seguridad de la cadena de suministro de software, popularizar la conciencia sobre la seguridad de la cadena de suministro de software, aumentar la importancia que las organizaciones empresariales otorgan a la seguridad de la cadena de suministro de software, invertir en seguridad de la cadena de suministro de software y promover la implementación de la seguridad.

4. Establecer un ecosistema de cadena de suministro de software seguro y confiable.

Lograr la seguridad en la cadena de suministro de software requiere el esfuerzo conjunto de empresas de todos los campos. Las empresas * * * construyen un ecosistema seguro y confiable que satisfará las necesidades de diferentes usuarios, diferentes industrias y diferentes escenarios, y mejorará el nivel de seguridad de la cadena de suministro de software general de la industria.

(Este artículo fue publicado en la revista "China Information Security", número 10, 2021).