Cómo encontrar y corregir secretos codificados expuestos en tu proyecto de GitHub con Snyk
25 de junio de 2024
0 minutos de lecturaSnyk 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).

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.

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.

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.

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.

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`:

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.

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

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.

Crea un secreto llamado `SECRET_TOKEN` con el valor del código donde está codificado. Luego, haz clic en 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í:
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.
Selecciona el proyecto goof.

Selecciona la configuración dev:

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.
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.

