Skip to main content

Acerca de la seguridad de la cadena de suministro

          GitHub ayuda a proteger la cadena de suministro, desde comprender las dependencias de su entorno hasta conocer las vulnerabilidades de esas dependencias y aplicarles revisiones.

Acerca de la seguridad de la cadena de suministro en GitHub

Al desarrollar un proyecto de software, es probable que use otro software para compilar y ejecutar la aplicación, como bibliotecas de código abierto, marcos u otras herramientas. Estos recursos se conocen colectivamente como "dependencias", ya que el proyecto depende de ellos para funcionar correctamente. El proyecto podría basarse en cientos de estas dependencias, formando lo que se conoce como "cadena de suministro".

La cadena de suministro puede suponer un problema de seguridad. Si una de las dependencias tiene una vulnerabilidad de seguridad conocida o un error, los actores malintencionados podrían aprovechar esta vulnerabilidad para, por ejemplo, insertar código malintencionado ("malware"), robar datos confidenciales o provocar algún otro tipo de interrupción en el proyecto. Este tipo de amenaza se denomina "ataque de cadena de suministro". Tener dependencias vulnerables en la cadena de suministro pone en peligro la seguridad de su propio proyecto y también pone en riesgo a los usuarios.

Una de las cosas más importantes que puede hacer para proteger su cadena de suministro consiste en revisar sus dependencias vulnerables y reemplazar cualquier malware.

Las dependencias se agregan directamente a la cadena de suministro cuando se especifican en un archivo de manifiesto o en un archivo de bloqueo. Las dependencias también se pueden incluir de forma transitiva, es decir, incluso si no especifica una dependencia concreta, pero se usa en una dependencia propia, también dependerá de esa dependencia.

          GitHub ofrece una variedad de características que le ayudarán a comprender las dependencias de su entorno, conocer las vulnerabilidades de esas dependencias y aplicarles revisiones.

Las características que ofrece la cadena de suministro en GitHub son: * Gráfico de dependencias * Revisión de dependencias

  • Dependabot alerts
  • Dependabot updates
    • Dependabot security updates
    • Dependabot version updates

El gráfico de dependencias es fundamental para la seguridad de la cadena de suministro. En el gráfico de dependencias se identifican todas las dependencias ascendentes y las dependencias descendentes públicas de un repositorio o paquete. El gráfico de dependencias del repositorio realiza un seguimiento y muestra sus dependencias y algunas de sus propiedades, como la información de vulnerabilidad.

Las siguientes características de la cadena de suministro en GitHub se basan en la información proporcionada por el gráfico de dependencias.

  • La revisión de dependencias usa el gráfico de dependencias para identificar los cambios de dependencias y ayudarle a comprender el impacto en la seguridad de estos cambios al revisar solicitudes de incorporación de cambios.
  •         Dependabot hace referencias cruzadas a los datos de dependencia proporcionados por el gráfico de dependencias con la lista de avisos publicados en GitHub Advisory Database, examina las dependencias y genera Dependabot alerts cuando se detecta una posible vulnerabilidad.
    
  •         Dependabot security updates use el gráfico de dependencias y Dependabot alerts para ayudarle a actualizar las dependencias con vulnerabilidades conocidas en el repositorio.
    
            Dependabot version updates no use el gráfico de dependencias y confíe en el control de versiones semántico de las dependencias en su lugar. 
            Dependabot version updates le ayudará a mantener actualizadas las dependencias, incluso cuando no tienen vulnerabilidades.
    

Para obtener guías de procedimientos recomendados sobre la seguridad de la cadena de suministro de un extremo a otro, incluida la protección de cuentas personales, código y procesos de compilación, consulte Protección de la cadena de suministro de un extremo a otro.

Introducción a las características

¿Cuál es el gráfico de dependencias?

Para generar el gráfico de dependencias, GitHub examine las dependencias explícitas de un repositorio declaradas en el manifiesto y los archivos de bloqueo. Cuando se habilita, el gráfico de dependencias analiza automáticamente todos los archivos de manifiesto de paquete conocidos del repositorio y los usa para construir un gráfico con versiones y nombres de dependencia conocidos.

  • El gráfico de dependencias incluye información sobre las dependencias directas y las transitivas.
  • El gráfico de dependencias se actualiza automáticamente al insertar una confirmación en GitHub que cambia o agrega un manifiesto o un archivo de bloqueo admitidos a la rama predeterminada y cuando cualquier usuario inserta un cambio en el repositorio de una de las dependencias.
  • El gráfico de dependencias también puede incluir información que proporcione a medida que se compila el proyecto mediante GitHub Actions. Algunos ecosistemas de paquetes extraen la mayoría de sus dependencias transitivas en tiempo de compilación, por lo que enviar información de dependencia a medida que se está produciendo la compilación proporciona una vista más completa de la cadena de suministro.
  • Para ver el gráfico de dependencias, abra la página principal del repositorio en GitHuby vaya a la pestaña Conclusiones .
  • Si tienes al menos acceso de lectura al repositorio, puedes exportar el gráfico de dependencias del repositorio como una la lista de materiales de software (SBOM) compatible con SPDX, a través de la interfaz de usuario de GitHub o la API REST de GitHub. Para más información, consulta Exportación de una lista de materiales de software para el repositorio.

Puede usar API de envío de dependencias para enviar dependencias desde el administrador de paquetes o el ecosistema de su elección, aunque ese ecosistema no sea compatible con el gráfico de dependencias para el análisis de archivos de manifiesto o de bloqueo. Las dependencias enviadas a un proyecto mediante la API de envío de dependencias mostrarán qué detector se ha usado para su envío y cuándo se han enviado. Para obtener más información sobre API de envío de dependencias, consulte Uso de la Dependency submission API.

Para más información sobre el gráfico de dependencias, consulta Sobre el gráfico de dependencias.

¿Qué es la revisión de dependencias?

La revisión de dependencias ayuda a los revisores y colaboradores a comprender los cambios de dependencia y su impacto en la seguridad en cada solicitud de incorporación de cambios.

  • La revisión de dependencias indica qué dependencias se han agregado, quitado o actualizado en una solicitud de incorporación de cambios. Puede usar las fechas de lanzamiento, la popularidad de las dependencias y la información de vulnerabilidad para ayudarle a decidir si quiere aceptar el cambio.
  • Puede ver la revisión de dependencias de una solicitud de incorporación de cambios si muestra la diferencia enriquecida en la pestaña Archivos cambiados.

Para más información sobre la revisión de dependencias, consulta Acerca de la revisión de dependencias.

¿Qué es Dependabot?

          Dependabot mantiene actualizadas las dependencias informándole de las vulnerabilidades de seguridad de las dependencias y abriendo automáticamente las solicitudes de incorporación de cambios para actualizar las dependencias. 
          Dependabot Las solicitudes de incorporación de cambios tendrán como destino la siguiente versión segura disponible cuando se desencadene una Dependabot alerta o a la versión más reciente cuando se publique una versión.

El término "Dependabot" abarca las siguientes características: * Dependabot alerts: se muestra la notificación en la Security pestaña del repositorio y en el gráfico de dependencias del repositorio. La alerta incluye un enlace al archivo afectado en el proyecto e información acerca de la versión arreglada. * Dependabot updates: * Dependabot security updates: actualizaciones desencadenadas para actualizar las dependencias a una versión segura cuando se desencadena una alerta. * Dependabot version updates: actualizaciones programadas para mantener las dependencias actualizadas con la versión más reciente.

          Dependabot security updates y Dependabot version updates requieren GitHub Actions que se ejecute en GitHub Enterprise Server. 
          Dependabot alerts no requieren GitHub Actions. Para más información, consulta [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise).



          Dependabot security updates puede corregir dependencias vulnerables en GitHub Actions. Cuando se habilitan las actualizaciones de seguridad, Dependabot generará automáticamente una solicitud de cambios para actualizar los datos vulnerables GitHub Actions usados en los flujos de trabajo a la versión con revisión mínima. Para obtener más información, consulte [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates).

¿Qué son las alertas de Dependabot?

          Dependabot alerts resalte los repositorios afectados por una vulnerabilidad recién detectada en función del gráfico de dependencias y GitHub Advisory Database, que contiene avisos de vulnerabilidades conocidas.

* Dependabot realiza un examen para detectar dependencias no seguras y envía Dependabot alerts cuando:

  • Los nuevos datos de asesoramiento se sincronizan con la instancia cada hora desde GitHub.com. Para más información, consulta Exploración de los avisos de seguridad en GitHub Advisory Database.
  • El gráfico de dependencias para los cambios del repositorio
  •         Dependabot alerts se muestran en la **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security** pestaña del repositorio y en el gráfico de dependencias del repositorio. La alerta incluye un enlace al archivo afectado en el proyecto e información acerca de la versión arreglada.
    

Para más información, consulta Acerca de las alertas Dependabot.

¿Qué son las actualizaciones de Dependabot?

Hay dos tipos de Dependabot updates: actualizaciones de Dependabot_seguridad_ y actualizaciones de versión. Dependabot genera automáticamente solicitudes de incorporación de cambios para actualizar las dependencias en ambos casos, pero hay varias diferencias.

          Dependabot security updates:
  • Desencadenado por una Dependabot alerta

  • Actualizan las dependencias a la versión mínima que resuelve una vulnerabilidad conocida

  • Compatible con ecosistemas admitidos en el gráfico de dependencias

  • No requiere un archivo de configuración, pero puedes usar uno para invalidar el comportamiento predeterminado.

            Dependabot version updates:
    
  • Requiere un archivo de configuración

  • Se ejecutan según una programación que configure

  • Actualizan las dependencias a la versión más reciente que coincida con la configuración

  • Compatible con un grupo diferente de ecosistemas

Para obtener más información sobre Dependabot updates, vea Sobre las actualizaciones de seguridad de Dependabot y Acerca de las actualizaciones a la versión del Dependabot.

¿Qué son las versiones inmutables?

Los repositorios pueden habilitar versiones inmutables para evitar que los recursos y la etiqueta git asociada de una versión se cambien después de la publicación. Esto reduce el riesgo de ataques de cadena de suministro al impedir que los atacantes inserten vulnerabilidades en versiones que consume. Esto también significa que los proyectos que dependen de versiones concretas tienen menos probabilidades de que se interrumpan.

La creación de una versión inmutable genera automáticamente una atestación para la versión. Puede usar esta atestación para verificar que el lanzamiento y sus artefactos coinciden con la información publicada.

¿Qué son las atestaciones de artefactos?

Los proveedores de software pueden generar atestaciones para el software creado con GitHub Actions. Las atestaciones son declaraciones firmadas criptográficamente que establecen la procedencia de la compilación (el código fuente y la ejecución del flujo de trabajo utilizados para construirla) o la lista de materiales de software asociada (SBOM, Software Bill of Materials).

Puede aumentar la seguridad de la cadena de suministro comprobando las atestaciones de las dependencias. Aunque las atestaciones no garantizan la seguridad, proporcionan información sobre dónde y cómo se creó el software, por lo que puede estar más seguro de que las dependencias no se han alterado. Puede restringir las implementaciones mediante una herramienta como el controlador de admisiones de Kubernetes para evitar que se implementen compilaciones no atestiguadas.

Cuando usas GitHub Actions para generar atestaciones para las construcciones propias de la organización, los artefactos construidos se cargan automáticamente en el linked artifacts page. Esta plataforma permite ver los registros de almacenamiento e implementación de todos los artefactos vinculados, por lo que puede encontrar el código fuente y la ejecución de flujo de trabajo que se usan para crear un artefacto o filtrar alertas de seguridad basadas en el contexto de implementación.

Disponibilidad de funcionalidades

  •         **Gráfico de dependencias y Dependabot alerts:** no habilitado de forma predeterminada. El propietario de la empresa configura las dos características en un nivel empresarial. Para más información, consulta [AUTOTITLE](/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise) y [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise).
    
  •         **Revisión de dependencias:** Disponible cuando el gráfico de dependencias está habilitado para la instancia y GitHub Code Security or GitHub Advanced Security está habilitado para la organización o el repositorio. Para más información, consulta [AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security).
    
  •         **
            Dependabot security updates:** no está habilitado de forma predeterminada. Puede habilitar Dependabot security updates para cualquier repositorio que use Dependabot alerts y el gráfico de dependencias. Para obtener información sobre cómo habilitar las actualizaciones de seguridad, consulte [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates).
    
  •         **
            Dependabot version updates:** no está habilitado de forma predeterminada. Los usuarios con permisos de escritura en un repositorio pueden habilitar Dependabot version updates. Para obtener información sobre cómo habilitar las actualizaciones de versión, consulte [AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates).