SetValue.NETSetValue.NET

Resumen de las características de seguridad publicadas en 2020 en GitHub

January 31, 2021

Entre las muchas novedades que se han incluido en GitHub durante el 2020, encontramos un importante conjunto de nuevas características o funcionalidades enmarcadas en el apartado de seguridad. Algunas de estas novedades las hemos ido comentando a lo largo del año pasado, no obstante, vamos a realizar un pequeño resumen.

Let's go

Durante este pasado 2020 se han publicado las siguientes novedades en el apartado de seguridad:

  • Code Scanning with CodeQL
  • Escaneado de tokens en repositorios privados y ficheros zip
  • Mantenimiento de dependencias actualizadas y seguras con Dependabot
  • Revisiones de seguridad que ayudan a prevenir la inclusión de dependencias con vulnerabilidades
  • GitHub Advisory Database incluye todas las advertencias de npm

Code Scanning with CodeQL

Code scanning es una característica que se puede habilitar en los repositorios públicos, que permite encontrar, clasificar y priorizar los fixes que se deben realizar sobre los problemas existentes en el código. Esto ayudará a que el código vaya mejorando y que puedan evitarse los mismos errores en el futuro.

El escaneo se puede desencadenar de forma periódica o a partir de cambios realizados en el repo con nuevos push o con la aceptación de pull requests, todo ello gracias a las GitHub Actions.

Más información acerca de cómo activarlo y ampliando información en este otro post.

Escaneado proactivo de secretos

Cuando los desarrollos utilizan servicios externos a la solución, se suele necesitar claves o tokens que permiten la autenticación con el servicio. Si estas claves son almacenadas en el repositorio, las personas que tienen acceso al repo pueden emplear estos secretos con los mismos privilegios que el propietario. Para evitar un problema que pueda suponer un mal uso de alguno de los servicios que utilizamos, lo mejor es siempre almacenar este tipo de secretos fuera del repositorio.

Si alguien realiza un commit de un secreto en un repositorio público o privado de organización con Advanced Security, Secret Scanning lo detecta y notifica a los administradores de que se ha incluido un secreto, para poder mitigar un potencial problema rápidamente. En paralelo, en los repositorios públicos, GitHub notifica al proveedor de servicios que ha emitido este secreto, éste valida las credenciales y decide si revoca, emite un nuevo secreto o se comunica con el propietario de las credenciales directamente. Esto dependerá de los riesgos asociados para el suscriptor o para el propio servicio.

Si un repositorio pasa de privado a público, también se desencadena automáticamente para evitar que se produzca ningún tipo de problema de seguridad con un uso indebido de credenciales.

Actualmente, se analizan tokens de los siguientes servicios:

Adafruit IO Alibaba Cloud Amazon Web Services
Atlassian Azure Clojars
CloudBees CodeShip Databricks Datadog (public repos)
Discord Doppler Dropbox
Dynatrace Finicity Frame.io
GitHub GoCardless Google Cloud
Hashicorp Terraform Hubspot Mailchimp
Mailgun MessageBird (public repos) npm
NuGet Palantir Plivo
Postman Proctorio Pulumi
Samsara Shopify Slack
SSLMate Stripe Tecent Cloud
Twilio JSON Web Token (private repos) OAuth Client Credential (private repos)

Dependabot version updates

Dependabot mantiene el repositorio actualizado de forma automática con las últimas versiones de paquetes y aplicaciones que se referencian en él. Apoyándose en los manifiestos o los ficheros de configuración de la solución, Dependabot utiliza esta información para localizar los elementos desactualizados, y determinar si hay una versión nueva que debe actualizarse.

Dependabot determina si hay una nueva versión de una dependencia observando el control de versiones semántico (semver) de la dependencia para decidir si debe actualizarse a esa versión. Cuando decide actualizar, realiza un pull request con las modificaciones y cambios pertinentes en el manifiesto, después se deberá comprobar que las pruebas pasan, revisar el changelog y las notas de la versión incluidas antes de completar el merge.

Si se habilitan las actualizaciones de seguridad, se generarán pull request para actualizar vulnerabilidades en los paquetes.

Dependency Graph: Dependency Review

Cuando se produce un pull request en la rama principal del repo y contiene cambios en los paquetes del manifiesto, se puede realizar un Dependency Review para ver qué ha cambiado o si hay alguna dependencia indirecta. También incluye información acerca de si algo de lo que se ha añadido o modificado incluye vulnerabilidades conocidas.

Dependency review está disponible para repositorios públicos, o para privados en organizaciones con licencia Advanced Security, y soporta los mismos lenguajes del ecosistema de Dependency Graph.

GitHub Advisory Database

Esta base de datos contiene una lista de vulnerabilidades de seguridad, tanto de las personas que mantienen los distintos paquetes como de terceros como la National Vulnerability Database.

Con esta nueva funcionalidad, como propietario o usuario puedes notificar una vulnerabilidad, ver el historial de resolución e incluso recibir públicamente el crédito de haber encontrado el fallo de seguridad.

Buy Me A Coffee