In this article
Cómo proteger tus flujos de trabajo de GitHub Actions con Snyk para reforzar la seguridad de JavaScript
Si administras tus repositorios de código fuente en GitHub, probablemente también aproveches GitHub Actions para los flujos de trabajo de CI/CD, lo que representa una buena oportunidad para proteger tus aplicaciones de JavaScript.
Algunos de los flujos de trabajo principales en los que los desarrolladores de software usan GitHub Actions giran en torno a la compilación y las pruebas del artefacto de software. Puede ser una aplicación de frontend que requiere transpilación y compilación de tipos de TypeScript, o una aplicación de backend con flujos de trabajo de pruebas de integración continua, como la ejecución de pruebas unitarias, de integración, etc.
También puedes usar flujos de trabajo auxiliares útiles de GitHub Actions, como verificar que tus archivos Markdown tengan el formato correcto o detectar enlaces rotos en tu README.
¿Y si agregas algunas pruebas de seguridad? Es mejor enterarte a tiempo y corregir el problema que descubrirlo demasiado tarde, después de una filtración de datos u otros incidentes de seguridad.
Agregar seguridad de Snyk a los flujos de trabajo de GitHub Actions
Snyk ofrece un flujo de trabajo de Snyk GitHub Actions personalizado y listo para usar que puedes agregar a tu CI. Así, no tendrás que administrar directamente los análisis de vulnerabilidades con Snyk CLI. El repositorio de código de GitHub Action está en snyk/actions en GitHub.
Obtén tu token de Snyk
Para empezar, necesitamos obtener tu token de Snyk para poder agregarlo a GitHub Action. Consulta la documentación de Snyk GitHub Actions sobre cómo obtener tu token de Snyk. Una vez que lo tengas, agrégalo a los secretos del repositorio de Actions desde la interfaz de configuración de GitHub:

Nota: si administras distintos entornos en tus flujos de trabajo de CI, es más seguro definir el token de Snyk como secreto para cada entorno que hacerlo a nivel del repositorio.
Configura el flujo de trabajo de Snyk GitHub Action
A continuación, podemos crear el archivo .github/workflows/security.yml, que contendrá el flujo de trabajo básico de análisis de seguridad de Snyk:
name: Security
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}Ejecuta el análisis de seguridad de Snyk
Una vez que agregues el archivo de flujo de trabajo security.yml, se ejecutará cuando un evento confirme e inserte actualizaciones en la rama main o cuando haya eventos de pull request. Luego, analizará el código abierto en busca de vulnerabilidades en paquetes de terceros:

¡Excelente!
No se encontraron vulnerabilidades de seguridad en mi pequeño proyecto de CLI.
Este análisis solo detecta vulnerabilidades de código abierto porque, de forma predeterminada, ejecuta el comando de línea de comandos snyk test. Asegurémonos también de que analice el código en busca de problemas de seguridad, por si agrego alguno sin querer.
Agregar análisis de seguridad SAST con Snyk
Snyk también puede analizar tu código fuente en busca de vulnerabilidades. Si escribiste código inseguro por error o no seguiste prácticas de codificación segura, Snyk detectará el flujo de código del origen al destino y te recomendará cómo corregirlo si usas la extensión de Snyk para IDE.
Agreguemos el análisis de seguridad del código a nuestro flujo de trabajo de GitHub Actions. Para ello, ampliemos la declaración del trabajo existente con lo siguiente:
code-security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- name: Run Snyk to check for vulnerabilities
uses: snyk/actions/node@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
command: code test Observa que agregamos específicamente el parámetro adicional command: code test a Snyk GitHub Action.
¿Cómo corregir las vulnerabilidades de seguridad del código?
Snyk puede detectar problemas de seguridad en tu código o dependencias. Veamos cómo solucionarlos.
Los siguientes registros de GitHub Action muestran cómo Snyk Action encontró una vulnerabilidad de inyección de comandos en mi proyecto. Snyk proporciona la siguiente información:
La ruta del archivo y el número de línea sirven para detectar una ruta de código insegura. La siguiente captura de pantalla del flujo de trabajo de seguridad muestra src/bin/cli.ts en la línea 8.
Descripción de la vulnerabilidad de seguridad detectada. Los resultados que aparecen a continuación detectaron una vulnerabilidad de inyección de comandos que va desde un argumento de línea de comandos hasta el módulo principal de Nthe ode.js child_process.

Si instalas la extensión de Snyk para IDE, como hice yo en VS Code, obtendrás lo siguiente:
Un informe más detallado sobre cómo se propaga el problema de seguridad del código en tu aplicación.
Detecta los problemas de seguridad antes, mientras programas, sin tener que esperar a que se ejecute el flujo de trabajo de CI.
Recibe recomendaciones para corregir el problema. En algunos casos, DCAI Fix de Snyk también ofrece correcciones automáticas con el motor de IA de Snyk.

Este proyecto de JavaScript es una aplicación de línea de comandos de Node.js que recibe el comando del usuario y lo ejecuta. La función principal de esta CLI de Node.js es iniciar comandos del sistema, por lo que se trata de un riesgo aceptable, no de una vulnerabilidad de seguridad.
Para evitar que Snyk lo detecte como un problema de seguridad, agregaremos un comentario encima de la línea de código vulnerable (la línea 8, que Snyk había señalado antes) para indicarle a Snyk que ignore este problema:
8: // file deepcode ignore IndirectCommandInjection: <accepted user input for the CLI is part of how this program works>
9: const result = await runCommandAndNotify(commandToRun)Lo que sigue en seguridad de aplicaciones para CI
Como material complementario a este artículo, te recomiendo estas lecturas:
Si tu equipo trabaja con Java, te recomiendo compartir este artículo: Cómo crear un pipeline de CI/CD seguro con GitHub Actions para tu aplicación Java
Si mantienes paquetes npm y los publicas en el registro de npm, te recomiendo este artículo: Cómo publicar paquetes npm de forma segura con GitHub Actions.
¿Cómo ignorar problemas de Snyk si algunos son falsos positivos o si quieres aceptar el riesgo?
¡Compite en Fetch the Flag 2026!
Pon a prueba tus habilidades de seguridad en nuestro evento Capture the Flag, del 12 al 13 de febrero, de 12 p. m. ET a 12 p. m. ET.