Skip to main content
Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Mejores prácticas para asegurar el código en tu cadena de suministro

Orientación sobre cómo proteger el centro de tu cadena de suministro; el código que escribes y del cuál dependes.

Acerca de esta guía

Esta guía describe los cambios de más alto impacto que puedes hacer para mejorar la seguridad de tu código. Cada sección detalla un cambio que puedes hacer a tus procesos para mejorar la seguridad. Los cambios de más alto impacto se listan primero.

¿Cuál es el riesgo?

Los riesgos clave en el proceso de desarrollo incluyen:

  • Utilizar dependencias con las vulnerabilidades de seguridad que podría aprovechar una tacante.
  • Filtrar credenciales de autenticación o un token que pudiera utilizar un atacante para acceder a tus recursos.
  • Introducir una vulnerabilidad a tu propio código que pueda aprovechar un atacante.

Estos riesgos abren la posibilidad de que tus recursos y proyectos sufran un ataque y dichos riesgos se pasan directamente a cualquiera que utilice un paquete que crees. Las siguientes secciones explican cómo puedes proteger a tus usuarios y a ti mismo de estos riesgos.

Crear un programa de administración de vulnerabilidades para las dependencias

Puedes asegurar el código del que dependes si creas un programa de administración de vulnerabilidades para las dependencias. En un nivel alto, este debería incluir los procesos para garantizar que:

  1. Crees un inventario de tus dependencias.

  2. Sepas cuándo hay una vulnerabilidad de seguridad en una dependencia.

  3. Evalúes el impacto de dicha vulnerabilidad en tu código y decidas qué acción llevar a cabo.

Generación automática de inventario

Como primer paso, necesitas realizar un inventario completo de tus dependencias. La gráfica de dependencias de un repositorio te muestra las dependencias de los ecosistemas compatibles. Si ingresas tus dependencias o utilizas otros ecosistemas, necesitarás suplementar esto con los datos de las herramientas de terceros o listando las dependencias manualmente. Para obtener más información, consulta la sección "Acerca de la gráfica de dependencias".

Detección automática de las vulnerabilidades en las dependencias

Dependabot puede ayudarte monitoreando tus dependencias y notificándote cuando contengan una vulnerabilidad conocida. Para obtener más información, consulta las secciones "Acerca de las Las alertas del dependabot".

Valoración de la exposición a riesgos de una dependencia vulnerable

Cuando descubres que estás utilizando una dependencia vulnerable, por ejemplo, una librería o marco de trabajo, debes valorar el nivel de exposición de tu proyecto y determinar la acción a tomar. Las vulnerabilidades a menudo se reportan con una calificación de gravedad para mostrarte qué tan grave pudo haber sido el impacto. Esta calificación de gravedad es una guía útil, pero no puede decirte el impacto total de la vulnerabilidad en tu código.

Para valorar el impacto de una vulnerabilidad en tu código, también necesitas considerar cómo utilizas la librería y determinar cuánto riesgo real representa para tu sistema. Tal vez, la vulnerabilidad es parte de una característica que no utilizas y puedes actualizar la librería afectada y seguir con tu ciclo de lanzamiento normal. O tal vez tu código se expuso fuertemente a los riesgos y necesitas actualizar la librería afectada y enviar una actualización de compilación de inmediato. Esta decisión dependen de cómo utilizas la librería en tu sistema y es una decisión sobre la cuál solo tú tendrás conocimiento para realizar.

Asegurar tus tokens de comunicación

A menudo, el código necesita comunicarse con otros sistemas a través de una red y requiere secretos (como una contrasella o llave de API) para autenticarse. Tu sistema necesita acceso a estos secretos para ejecutarse, pero es la mejor práctica el no incluirlos en tu código fuente. Esto es especialmente importante en el caso de los repositorios públicos, pero también para los repositorios privados a los cuales tienen acceso muchas personas.

Detección automática de secretos confirmados a un repositorio

Nota: El Escaneo de secretos se encuentra disponible para los repositorios que pertenecen a organizaciones de GitHub Enterprise Server si tu empresa tiene una licencia de GitHub Advanced Security. Para obtener más información, consulta la sección "Productos de GitHub".

Nota: Tu administrador de sitio debe habilitar el escaneo de secretos para tu instancia de GitHub Enterprise Server antes de que puedas utilizar esta característica. Para obtener más información, consulta "Configurar el escaneo de secretos en tu aplicativo."

Puedes configurar el escaneo de secretos para que verifique si muchos proveedores de servicios emitieron secretos y para notificarte cuando estos se detecten. También puedes definir patrones personalizados para detectar secretos adicionales a nivel de repositorio, organización o empresa. Para obtener más información, consulta las secciones "Acerca del escaneo de secretos" y "Patrones del escaneo de secretos".

Mantener los patrones de código vulnerable fuera de tu repositorio

Nota: El Escaneo de código se encuentra disponible para los repositorios que pertenecen a organizaciones donde se habilitó el GitHub Advanced Security. Para obtener más información, consulta la sección "Acerca de GitHub Advanced Security".

Nota: Tu administrador de sitio debe habilitar el escaneo de código para tu instancia de GitHub Enterprise Server antes de que puedas utilizar esta característica. Para obtener más información, consulta "Configurar el escaneo de código en tu aplicativo."

Crear un proceso de revisión de solicitudes de cambio

Puedes mejorar la calidad y seguridad de tu código si te aseguras de que todas las solicitudes de cambio se revisen y prueben antes de que se fusionen. GitHub tiene muchas características que puedes utilizar para controlar el proceso de revisión y fusión. Para iniciar, consulta la sección "Acerca de las ramas protegidas".

Escanear tu código en busca de patrones vulnerables

A menudo, es difícil que los revisores identifiquen los patrones de código inseguro si no cuentan con ayuda para ello. Adicionalmente a escanear tu código en busca de secretos, puedes verificar si existen patrones asociados con vulnerabilidades de seguridad. Por ejemplo, una función que no sea segura para la memoria o que falle en escapar la entrada del usuario y pudiera dar como resultado una vulnerabilidad de inyección. GitHub ofrece varias formas diferentes de tratar tanto cómo como cuándo escanear tu código. Para iniciar, consulta la sección "Acerca del escaneo de código".

Pasos siguientes