Skip to main content

Cómo encontrar y corregir secretos codificados expuestos en tu proyecto de GitHub con Snyk

Escrito por
feature insights context

25 de junio de 2024

0 minutos de lectura

Snyk es una excelente herramienta para detectar vulnerabilidades en proyectos, incluidos los secretos codificados. En este blog, te mostraremos cómo usar Snyk para encontrar secretos y credenciales codificados y luego refactorizar nuestro código para almacenar esos secretos en Doppler. Usaremos el proyecto de código abierto Snyk goof como aplicación de plantilla de Node.js, así que puedes seguir los pasos con nosotros.

Primeros pasos con el proyecto Snyk goof

Para empezar, crea un fork de el proyecto Snyk goof en tu cuenta de GitHub. Este proyecto de ejemplo tiene muchas vulnerabilidades que podemos detectar con Snyk.

A continuación, crea una cuenta gratuita de Snyk desde la página de inicio de sesión de Snyk e inicia sesión con tu cuenta de GitHub (u otro proveedor de tu preferencia).

Pantalla de registro con “Comienza gratis”, “No se requiere tarjeta de crédito”, un botón de GitHub y opciones para Bitbucket, Google, Azure AD o Docker ID

Deberás permitir que Snyk acceda a la dirección de correo electrónico asociada a tu cuenta. Snyk la usará para enviarte información importante, incluidas notificaciones e informes de seguridad, sobre los proyectos que importes.

Si aún no has usado Snyk, también tendrás que configurar los ajustes de acceso para que Snyk pueda analizar tus proyectos con regularidad y generar automáticamente pull requests de corrección para tus repositorios. Para ello, deberás otorgar permisos adicionales desde tu cuenta de GitHub.

Selecciona GitHub como origen del código de tu proyecto (o la ubicación donde esté tu código). Después, puedes aceptar la configuración predeterminada, como se muestra en la captura de pantalla, para usar todas las funciones recomendadas de Snyk. Puedes desactivar estos permisos si lo prefieres, pero no podrás aprovechar las funciones más avanzadas y útiles de Snyk para crear pull requests de corrección que automatizan las correcciones de seguridad y las actualizaciones de dependencias.

Lista de funciones habilitadas que muestra verificaciones de pull request, nuevos pull requests con correcciones, pull requests para actualizar dependencias y Snyk Code.

A continuación, selecciona el proyecto Snyk goof en la lista de tus repositorios de GitHub para agregarlo como proyecto a tu cuenta de Snyk.

Interfaz de selección de repositorios que muestra el repositorio seleccionado “chandler767/nodejs-goof” y un enlace para ver todos los repositorios.

Para crear un gráfico de dependencias, Snyk analizará el archivo de manifiesto `package.json` del proyecto goof de Node.js. El gráfico incluirá tanto las dependencias directas que incorpora el proyecto goof como las dependencias transitivas de las que dependen esas dependencias directas. El proceso continúa hasta crear un gráfico de dependencias completo. Luego, Snyk compara estas dependencias con su base de datos de vulnerabilidades y genera un informe completo.

Panel de análisis de seguridad del proyecto chandler767/nodejs-goof, con la cantidad de problemas detectados en Dockerfile, package.json y el análisis de código.

El proyecto goof tiene bastantes problemas. Snyk puede ayudarte a corregir muchos de ellos al actualizar las dependencias directas a una versión sin vulnerabilidades o aplicar un parche. Analizaremos el código más de cerca para identificar los secretos codificados que debemos corregir.

Corregir secretos subidos a GitHub

Ve a la vista Code Analysis y filtra por Uso de credenciales codificadas y Secreto codificado.

Lista de tipos de vulnerabilidades que muestra las categorías marcadas Uso de credenciales codificadas de forma fija y Secreto codificado de forma fija, con el número de vulnerabilidades.

Tenemos que corregir varios secretos. Primero, agrega estos secretos a Doppler. Esto evitará que queden expuestos accidentalmente, centralizará su administración y nos permitirá configurar secretos distintos para los entornos de desarrollo y producción. Así, nunca más tendremos que preocuparnos por subirlos a GitHub.

Clona el proyecto Goof con Git para realizar los cambios necesarios en el código. Luego, sigue los pasos del README del proyecto Goof para ejecutar el proyecto localmente.

Empezaremos las correcciones con un token codificado en el archivo `app.js`:

El análisis de seguridad del código detecta un token secreto codificado de forma rígida en app.js según la regla CWE-547: secreto codificado de forma rígida.

Abre `app.js` en el editor de código que prefieras y busca la variable del token. Copia el token y luego ve a Doppler para crear una cuenta gratuita.

Interfaz de inicio de sesión oscura con botones para iniciar sesión con Google y GitHub, campo de correo electrónico laboral, enlace para restablecer la contraseña y botón morado para iniciar sesión

En tu cuenta de Doppler, crea un proyecto nuevo llamado `Goof`.

Página de proyectos que muestra un botón «Agregar proyecto» y un proyecto de ejemplo con secretos de muestra

Verás que los entornos se crean de forma predeterminada. Agrega todos los secretos a la configuración Development > Dev. Así podrás actualizar los secretos en todas las configuraciones derivadas. Haz clic en la configuración Development > Dev y luego en Add First Secret.

Botón desplegable morado con la etiqueta «Agregar el primer secreto»

Crea un secreto llamado `SECRET_TOKEN` con el valor del código donde está codificado. Luego, haz clic en guardar.

Panel de secretos que muestra un cambio sin guardar, un valor visible de SECRET_TOKEN y una flecha roja que apunta al botón Guardar

Ahora que agregamos el secreto a Doppler, podemos usarlo en el código. Reemplaza el valor del token codificado por una variable de entorno. Usaremos la CLI de Doppler para inyectar secretos en nuestra aplicación. El código debería verse así:

var token = process.env.SECRET_TOKEN;

La CLI de Doppler permite acceder a tus secretos en todos los entornos: desarrollo local, CI/CD, pruebas y producción. Es un binario ligero disponible para los principales sistemas operativos, administradores de paquetes y Docker.

Sigue los pasos para configurar la CLI de Doppler en tu sistema en la página de instalación de la CLI de Doppler. En Doppler, el acceso a los secretos de un proyecto se limita a un directorio específico del sistema de archivos. Esto te permite obtener secretos de varios proyectos en una sola máquina.

En la terminal, ve al directorio del proyecto Goof y configura Doppler.

# Login to your Doppler account (if you haven't already)
doppler login

# Change to your project's directory
cd ./your/project/directory/nodejs-goof

# Select project and config
doppler setup

Selecciona el proyecto goof.

Terminal que muestra la configuración de Doppler con el proyecto “a-goof-project” seleccionado.

Selecciona la configuración dev:

Indicador de terminal para seleccionar una configuración, que muestra dev_personal con las opciones dev, stg y prd.

Puedes usar tus secretos agregando el comando `‘doppler run’` al iniciar la aplicación. Este comando inyectará tus secretos en el entorno de la aplicación.

doppler run npm start

Recuerda agregar todos tus secretos y configurar los entornos para que se ajusten a las necesidades de tu aplicación y tu equipo. También podría interesarte configurar reinicios automáticos de la aplicación cuando edites secretos.

Protege tus secretos con Snyk y Doppler

Snyk y Doppler son excelentes ejemplos de herramientas para desarrolladores que funcionan mejor juntas. Empieza a integrar Snyk y Doppler hoy mismo y comprueba cómo estas potentes herramientas pueden agilizar tu proceso de desarrollo. Descubre Snyk y Doppler en acción y da el primer paso hacia un flujo de trabajo más seguro y eficiente.

Leer más

feature insights context
Blog

Los ataques autónomos ya están aquí. La defensa debe estar a su altura.

Los atacantes autónomos están reduciendo el tiempo disponible para defenderse. Descubre cómo el descubrimiento, la corrección, la validación y la prevención continuos pueden ayudar a los equipos de seguridad a seguirles el ritmo.

illustration hero ai
Blog

El huracán de la IA ha llegado

La IA está acelerando por igual la creación de software y los ciberataques. Los líderes deben proteger los agentes y el código desde el inicio, aplicar controles en tiempo de ejecución y validar las defensas de forma independiente.

feature insights context
Blog

¿La prevención es, en esencia, un problema ya resuelto?

La prevención en el código generado por agentes está resuelta desde el punto de vista arquitectónico, pero elegir controles que protejan la seguridad sin ralentizar el desarrollo sigue siendo el desafío.