Saltar al Contenido Principal

Buenas prácticas de adopción del CRA

Desarrollo seguro de componentes FOSS

Cómo pueden los proyectos de código abierto integrar la seguridad a lo largo del ciclo de vida, gobernarse con transparencia y gestionar las vulnerabilidades en proporción al riesgo, para que los integradores aguas abajo puedan cumplir sus propias obligaciones del CRA.

En esta página

Facilitar la gestión del riesgo aguas abajo

Para los desarrolladores y mantenedores de componentes FOSS, el enfoque basado en el riesgo del CRA se traduce en facilitar la gestión del riesgo aguas abajo, en lugar de asumir una responsabilidad reglamentaria directa.

La Oficina Federal de Seguridad de la Información de Alemania (BSI) ha publicado la guía TR-03185-2 Secure Software Lifecycle for Open Source Software, un marco de referencia práctico sobre cómo abordar el desarrollo de software de código abierto desde el punto de vista de la seguridad. Los principios que siguen se basan en ella.

Orientación basada en el riesgo

La filosofía basada en el riesgo es el motor central del CRA. En lugar de imponer controles rígidos y uniformes, el análisis debe incluir criterios orientados a resultados que puedan aplicarse en función de:

Criticidad y uso

La criticidad del proyecto y su contexto de uso.

Impacto de un fallo

El impacto potencial de los fallos de seguridad.

Madurez de la comunidad

La madurez y los recursos de la comunidad.

Exposición en la cadena de suministro

La exposición del software dentro de las cadenas de suministro.

Esta proporcionalidad es esencial para el FOSS, donde los proyectos van desde pequeñas bibliotecas mantenidas por voluntarios hasta componentes de infraestructura ampliamente desplegados.

Seguridad a lo largo del ciclo de vida

La seguridad desde el diseño exige que las consideraciones de ciberseguridad estén integradas en todo el ciclo de vida del software. En un modelo basado en el riesgo y alineado con el CRA, la seguridad no es una actividad aparte, sino un proceso continuo y proporcionado en el que cada fase contribuye a la resiliencia global de un componente FOSS y respalda las obligaciones de cumplimiento aguas abajo.

  1. Diseño Requisitos relevantes para la seguridad y consideración de las amenazas.
  2. Implementación Gestión controlada de los cambios, revisión por pares y herramientas de análisis adecuadas.
  3. Pruebas y validación Verificación de la funcionalidad relevante para la seguridad.
  4. Publicación y distribución Integridad y autenticidad de lo que se entrega.
  5. Mantenimiento Gestión estructurada de vulnerabilidades y divulgación responsable.
  6. Fin de vida Comunicación transparente del estado de soporte y de la retirada.

Diseño

En la fase de diseño, la integración de la seguridad comienza con:

  • La identificación de los requisitos relevantes para la seguridad
  • La consideración del uso indebido previsible
  • El análisis de las superficies de ataque
  • Decisiones de arquitectura que reduzcan la exposición

Para los componentes con mayor criticidad funcional (por ejemplo, autenticación, criptografía o mecanismos de actualización), puede ser conveniente un análisis de amenazas más estructurado. Como mínimo, la funcionalidad relevante para la seguridad debe documentarse con claridad para permitir su evaluación aguas abajo.

Implementación

Durante la implementación, la seguridad del ciclo de vida requiere:

  • Una gestión controlada de los cambios
  • Repositorios con control de versiones
  • Prácticas de revisión por pares
  • Disciplina de codificación segura

Los proyectos más maduros pueden integrar herramientas automatizadas de análisis estático o de escaneo de dependencias. El objetivo no es imponer herramientas concretas, sino lograr prácticas de desarrollo coherentes y trazables.

Pruebas y validación

Las pruebas y la validación confirman que la funcionalidad relevante para la seguridad funciona según lo previsto. Las medidas habituales incluyen:

  • Pruebas funcionales de la autenticación y de los controles de acceso
  • Comprobaciones de validación de entradas
  • Pruebas de seguridad básicas antes de cada publicación

Los proyectos con mayor exposición pueden integrar herramientas SAST o DAST automatizadas en sus pipelines de CI/CD. Las pruebas garantizan que las vulnerabilidades se detecten antes de la distribución.

Publicación y distribución

Las prácticas de publicación seguras son controles críticos de la cadena de suministro. Las prácticas clave incluyen:

  • Un versionado claro
  • Un registro de cambios documentado
  • La protección de la integridad de los artefactos publicados
  • La transparencia sobre las dependencias incluidas (por ejemplo, generación de SBOM)

Los proyectos más avanzados pueden recurrir a versiones firmadas o a compilaciones reproducibles mediante pipelines inmutables. Esta fase refuerza la confianza y la trazabilidad aguas abajo.

Mantenimiento

La integración de la seguridad no termina con la publicación. El mantenimiento requiere:

  • Vigilar las vulnerabilidades recién divulgadas
  • Una gestión estructurada de las vulnerabilidades
  • La aplicación oportuna de parches
  • Una comunicación clara de las actualizaciones

El mantenimiento continuo respalda directamente las obligaciones del CRA relativas al ciclo de vida y reduce el riesgo sistémico en la cadena de suministro.

Fin de vida

Comunicar de forma transparente el fin de vida es esencial para evitar riesgos no gestionados. Los proyectos deben:

  • Comunicar claramente el estado de soporte
  • Anunciar los plazos de retirada
  • Recomendar vías de migración cuando proceda

Esto permite a los usuarios aguas abajo, incluidas las pymes, planificar transiciones seguras y evitar dependencias sin soporte.

Gobernanza y transparencia como controles de riesgo

En los ecosistemas de código abierto, los mecanismos de gobernanza suelen actuar como herramientas principales de mitigación del riesgo. La transparencia, la documentación y los procesos comunitarios no son meras cuestiones administrativas, sino facilitadores esenciales de la seguridad. Hay cuatro elementos clave:

Flujos de trabajo documentados

Procedimientos claros y por escrito, desde la planificación hasta el despliegue. Garantizan la coherencia y reducen los errores.

Roles y responsabilidades definidos

Funciones asignadas y rendición de cuentas para las tareas de seguridad. Evitan ambigüedades y garantizan que cada tarea tenga un responsable.

Canales de notificación claros

Mecanismos establecidos y fáciles de usar para notificar posibles problemas de seguridad, tanto interna como externamente.

Comunicación pública

Divulgación transparente y oportuna de las vulnerabilidades y de las soluciones disponibles a los usuarios y las partes interesadas.

Estas medidas reducen el riesgo sistémico al mejorar la rendición de cuentas y permitir que los usuarios aguas abajo evalúen la fiabilidad de un proyecto.

Importancia para la seguridad de la cadena de suministro

Los componentes de código abierto están profundamente integrados en las cadenas de suministro de software modernas. Por ello, un enfoque del desarrollo FOSS basado en el riesgo debe tener en cuenta no solo los riesgos a nivel de proyecto, sino también los riesgos sistémicos que se propagan a través de la reutilización y la redistribución. La resiliencia de la cadena de suministro se refuerza fomentando:

  • Prácticas de publicación seguras
  • La trazabilidad de los cambios
  • Un estado de mantenimiento transparente
  • Un punto de contacto de seguridad claro

Estas prácticas mejoran la capacidad de los integradores aguas abajo, incluidas las pequeñas y medianas empresas, para realizar evaluaciones de riesgos y cumplir sus obligaciones reglamentarias o contractuales.

Atestaciones de seguridad voluntarias (artículo 25)

La seguridad de un producto final es inseparable de la integridad de sus componentes de origen. A medida que avanza la aplicación del CRA, el sector se enfrenta a un reto crucial: cómo verificar la seguridad de los millones de dependencias de código abierto que constituyen la columna vertebral de la infraestructura mundial sin asfixiar el modelo colaborativo que las ha hecho posibles.

La solución más viable se encuentra en el artículo 25, que establece un marco para las atestaciones de seguridad voluntarias. Al pasar de la aplicación reactiva de parches a una transparencia proactiva y normalizada, permite a los administradores de código abierto (Open Source Stewards) sin ánimo de lucro ofrecer garantías escalonadas y basadas en el riesgo a cambio de una remuneración que cubra unos costes operativos transparentes, lo que convierte el cumplimiento normativo en un motor sostenible de resiliencia de la cadena de suministro. Esta resiliencia se apoya en tres pilares:

  1. Facilitar una diligencia debida eficiente mediante artefactos de confianza

    El CRA exige a los fabricantes una diligencia debida rigurosa sobre cada componente integrado, incluido el software libre y de código abierto. Normalizar las atestaciones como artefactos verificables y legibles por máquina elimina el «ataque de denegación de servicio» que sufren los mantenedores a causa de solicitudes de cumplimiento manuales y duplicadas, y proporciona a los fabricantes información coherente y fiable que pueden integrar directamente en sus evaluaciones de riesgos automatizadas.

  2. Incentivar el mantenimiento de la seguridad en toda la cadena de suministro

    La seguridad no es un estado estático, sino un proceso continuo de mantenimiento. Las atestaciones crean un puente tangible entre los requisitos reglamentarios y el apoyo económico necesario para sostener ese mantenimiento, y ofrecen a los fabricantes una vía estructurada para apoyar económicamente a los administradores y mantenedores de proyectos críticos cuyo trabajo de seguridad es esencial para su propio cumplimiento.

  3. Reforzar la gobernanza y la resiliencia impulsadas por la comunidad

    La fortaleza de la cadena de suministro de software reside en su diversidad. Un modelo de atestación estrictamente voluntario, proporcionado y basado en el riesgo respeta los modelos de gobernanza propios del código abierto, permite a las comunidades definir su propia postura de seguridad mediante garantías escalonadas y evita imponer una obligación uniforme para todos.

Actividades de ciberseguridad para el soporte durante todo el ciclo de vida

Comprometerse a mantener y proteger un producto durante toda su vida útil implica una responsabilidad continua sobre todos los componentes incorporados, incluidas las bibliotecas de código abierto de terceros. Los componentes de código abierto evolucionan de forma independiente: pueden aparecer vulnerabilidades años después de la integración, los mantenedores pueden retirarse y el ritmo de publicación puede ralentizarse. Sin una visibilidad estructurada de las dependencias, una vigilancia continua, disciplina en el control de versiones y políticas de actualización documentadas, las organizaciones corren el riesgo de heredar una deuda técnica no gestionada y vulnerabilidades latentes en la cadena de suministro. Medidas concretas:

Mantener un SBOM actualizado de forma continua

Garantizar la transparencia y la trazabilidad de las dependencias en todas las versiones del producto.

Institucionalizar la evaluación del riesgo de las dependencias

Utilizar criterios como el nivel de actividad del proyecto, el tiempo de respuesta ante vulnerabilidades, la transparencia de la gobernanza y la disciplina de publicación.

Adoptar una vigilancia continua de las vulnerabilidades

Hacer un seguimiento de las vulnerabilidades recién divulgadas que afectan a los componentes que distribuyes.

Más allá de los controles internos, implicarse aguas arriba

Cuando las dependencias son críticas para la actividad, las organizaciones deberían plantearse contribuir con correcciones, patrocinar a los mantenedores o participar en la gobernanza del proyecto para reducir el riesgo sistémico.

Combinando la transparencia (SBOM), la evaluación estructurada de riesgos, la vigilancia continua y la participación aguas arriba, los fabricantes pueden transformar las dependencias de código abierto de una exposición no gestionada en un activo gobernado estratégicamente que respalda la seguridad, el cumplimiento y la confianza a largo plazo.

Gestión de vulnerabilidades

En virtud del CRA, los fabricantes deben identificar, gestionar y corregir las vulnerabilidades de forma oportuna y estructurada durante todo el ciclo de vida del producto. Aunque los proyectos de código abierto no están regulados directamente como tales, sus prácticas influyen de manera significativa en la capacidad de los fabricantes y las pymes aguas abajo para cumplir. En un modelo basado en el riesgo, la gestión de vulnerabilidades no se limita a aplicar parches de forma reactiva. Abarca:

  • Mecanismos de notificación accesibles
  • Triaje y evaluación de riesgos estructurados
  • Procesos de corrección transparentes
  • Prácticas de divulgación transparentes
  • Vigilancia continua de las vulnerabilidades conocidas

Puede que los proyectos más pequeños no dispongan de los recursos de los grandes proveedores comerciales, pero aun así deberían aplicar unas prácticas básicas que permitan a los integradores aguas abajo evaluar y gestionar el riesgo de forma eficaz.

Elementos esenciales de la gestión de vulnerabilidades

  1. Notificación y recepción

    • Un contacto de seguridad o canal de notificación públicamente disponible
    • Instrucciones claras para la divulgación responsable
    • Un procedimiento definido de recepción y acuse de recibo

    Los investigadores de seguridad y los usuarios pueden notificar problemas de forma controlada y transparente.

  2. Triaje y evaluación de riesgos

    • Evaluación de la gravedad y del impacto potencial
    • Identificación de las versiones afectadas
    • Evaluación de la explotabilidad y de la exposición

    La clasificación de la gravedad puede basarse en marcos ampliamente aceptados (por ejemplo, CVSS), manteniendo la proporcionalidad con el tamaño y el contexto del proyecto.

  3. Corrección y gestión de versiones

    • Desarrollo de parches correctivos
    • Proceso de publicación seguro
    • Versionado claro y registro de cambios documentado

    Cuando sea posible, las actualizaciones deberían ir acompañadas de una comunicación clara sobre las medidas de mitigación y las configuraciones afectadas.

  4. Divulgación y transparencia

    • Publicación de avisos públicos cuando proceda
    • Comunicación clara a los usuarios aguas abajo
    • Divulgación coordinada cuando intervienen varias partes interesadas

    Estas medidas refuerzan la confianza y favorecen la transparencia en la cadena de suministro.

Niveles de madurez proporcionados

Para reflejar el principio de proporcionalidad del CRA, las prácticas de gestión de vulnerabilidades pueden estructurarse en tres niveles de madurez.

Nivel 1

Práctica mínima viable

  • Canal público de notificación de vulnerabilidades
  • Triaje manual de los problemas notificados
  • Publicación de parches y actualización del registro de cambios

Permite una trazabilidad básica y la gestión del riesgo aguas abajo.

Nivel 2

Proceso estructurado

  • Política de gestión de vulnerabilidades documentada
  • Flujo de triaje definido y seguimiento interno
  • Publicación de avisos públicos
  • Tiempo de respuesta objetivo definido

Mejora la previsibilidad y la transparencia.

Nivel 3

Avanzado e integrado en la cadena de suministro

  • Política de divulgación coordinada de vulnerabilidades (CVD)
  • Asignación de CVE cuando proceda
  • Herramientas de vigilancia continua de vulnerabilidades
  • Seguimiento de la corrección basado en acuerdos de nivel de servicio (SLA)
  • Integración del escaneo de vulnerabilidades en los pipelines de CI/CD

Refuerza la resiliencia sistémica en toda la cadena de suministro de software.

Qué significa esto para las pymes que integran FOSS

Para las pymes que integran componentes FOSS en productos con elementos digitales, las prácticas de gestión de vulnerabilidades de los proyectos de origen afectan directamente a su propia situación de cumplimiento. Por ello, las pymes deberían evaluar:

  • Si el proyecto dispone de un canal público de divulgación de vulnerabilidades
  • Con qué rapidez se reconocen y resuelven los problemas
  • Si los avisos y los parches se comunican de forma transparente
  • Si el proyecto demuestra actividad de mantenimiento

Cuando un componente es funcionalmente crítico o está expuesto públicamente, las pymes deberían plantearse aplicar medidas de diligencia debida reforzada, incluida la vigilancia continua y, cuando estén disponibles, el recurso a las atestaciones de seguridad voluntarias del artículo 25.

Leer la guía de cumplimiento para pymes

Volver arriba