Skip to main content

Cómo crear el plugin gulp-snyk: una entrevista con Doug Wade

Escrito por
Headshot of Tim Kadlec

Tim Kadlec

26 de enero de 2017

0 minutos de lectura

Doug Wade es ingeniero sénior de front-end en Indeed. Doug creó el fantástico plugin gulp-snyk, que permite integrar Snyk sin complicaciones en tu proceso de compilación con Gulp. Nos entusiasmó mucho encontrar el plugin, así que quisimos conversar con Doug para conocer más sobre él.

Terminal que muestra una compilación exitosa de Gulp con los parches de Snyk aplicados y la compilación completada en 26 μs.

¿Por qué empezaste a usar Snyk?

El año pasado, cuando fui mentor en Node Summit, tuve la oportunidad de asistir a la excelente charla de Guy y a su demostración en vivo sobre cómo explotar algunos avisos de seguridad de minimatch que había estado ignorando en mis proyectos. Fue una experiencia reveladora y aterradora.

Durante la hora feliz, hablé con Guy sobre por qué debería cambiar de nsp a Snyk, y me contó cuál considero que es la «función estrella» de Snyk: snyk protect.

Durante mucho tiempo, me molestó tener que publicar .nsprcs en Github para que mis compilaciones de Travis pasaran. En proyectos como React Server, sentía que estaba publicando un manifiesto de vulnerabilidades que los atacantes podían usar para explotar sitios como www.redfin.com. ¡Eso era lo contrario de lo que quería hacer! Pero, en realidad, así era como tenía que ser.

Al principio de la historia de npm, Isaac Z. Schlueter (creador y CEO de npm) tomó una decisión que, en mi opinión, fue fundamental tanto para la explosión de paquetes de npm disponibles como para hacer que el acceso al desarrollo de código abierto en npm fuera la manera más accesible de empezar a contribuir. Isaac decidió evitar el infierno de dependencias al estilo Java haciendo que cada paquete dependiente tuviera su propia copia independiente de las dependencias declaradas.

Esto significa que, como desarrollador independiente que escribe módulos para npm —como hago con muchos de mis módulos de código abierto—, puedo iterar muy rápido cambiando y actualizando mis dependencias, sin preocuparme de que mis clientes se queden con una versión antigua mientras esperan una resolución coherente de las dependencias.

La desventaja es que, para los desarrolladores de aplicaciones que necesitan eliminar dependencias vulnerables de su árbol de dependencias —como me pasa en el trabajo—, no basta con actualizar las dependencias directas; también hay que asegurarse de que cada dependencia se actualice a una versión segura. Después de que un desarrollador a quien respeto mucho me reprendiera por enviar un reporte de problema y una solicitud de cambios para actualizar una dependencia vulnerable en un proyecto de Node Foundation, entendí que el método de nsp —usar archivos nsprc y esperar a que las correcciones se propagaran por el ecosistema— no era sostenible.

El enfoque de Snyk lo resuelve al aplicar parches a mi aplicación mediante un script postinstall, así no tengo que esperar a que el cambio se propague por el ecosistema y mi manifiesto deja de ser una lista de vulnerabilidades existentes para convertirse en una lista de vulnerabilidades que ya se corrigieron.

¿Por qué terminaste creando gulp-snyk?

Desarrollo con Node desde los días de la versión 0.8, principalmente porque era el único entorno de desarrollo que logré configurar correctamente en mi computadora con Windows cuando estaba aprendiendo a programar. Por eso, todavía tengo por ahí varios módulos que usan Gulp como sistema de compilación.

Creo que el propósito principal de los sistemas de compilación es hacer que las tareas comunes sean estándar y fáciles de encontrar. En vez de esperar que los nuevos colaboradores descubran tareas dispersas entre un package.json y un gulpfile, quería tener una sola lista de tareas. No hacía falta escribir mucho código repetitivo para incluir mis tareas de Snyk en Gulp, pero sí lo suficiente como para no querer copiarlo y pegarlo entre proyectos. Por eso lo publiqué en npm.

Hice la gran mayoría del desarrollo en dos noches después del trabajo. Resulta que hay una API programática sin documentar que gulp-snyk usa para ejecutar el objetivo de prueba.

Abrí un reporte de problema para intentar coordinar esto con Snyk, pero, para mí, demuestra una de las cosas que más me gustan de trabajar con un lenguaje dinámico. No necesitaba saber nada sobre Snyk. Bastaba con iniciar un REPL (bucle de lectura, evaluación e impresión) y empezar a explorar.

¿Cómo usas gulp-snyk actualmente?

Uso gulp-snyk para proteger Clefs y name-suffixes, y planeo agregarlo a React Server. Uso Snyk en 17 de mis módulos de Node y planeo ampliarlo a los 33.

¡Treinta y tres módulos de NPM! ¿Qué te impulsa a contribuir así?

Creo que, como desarrolladores, tenemos la obligación ética de contribuir a la comunidad porque recibimos mucho de ella. Aunque, para ser sincero, creo que gran parte de lo que me motiva es profundamente egoísta.

Cuando envío una solicitud de cambios a Node, npm o Lerna, tengo la oportunidad de explorar el código y recibir una revisión de código de algunas de las mentes más brillantes del desarrollo de software. Cuando publico por primera vez un proyecto que escribí en Reddit o Hacker News, recibo comentarios sobre el diseño de la API, la arquitectura y la documentación que se ajustan más a mi área de especialización que los que recibo en la oficina.

En cierto modo, supongo que también es mi forma de no retirar la escalera después de subir. Mi carrera se ha construido sobre la base del trabajo con software libre y de código abierto (FOSS) y el aprendizaje que este ofrece. Así que, en un sentido muy real y significativo, sin FOSS no estaría donde estoy ahora.

Y, hablando de eso, si alguien quiere ayudar a contribuir a gulp-snyk, ¿adónde debe ir?

El plugin gulp-snyk está disponible en npm y puedes instalarlo con npm (npm install --save-dev gulp-snyk) o yarn (yarn add --dev gulp-snyk). Si alguien quiere ayudar a contribuir, el código está disponible en GitHub.

Empieza con los desafíos de Capture the Flag

Aprende a resolver desafíos de captura la bandera con nuestro taller virtual introductorio a pedido.

Leer más

illustration hero ai
Blog

PHP corrige dos vulnerabilidades críticas de RCE sin autenticación (CVE-2026-109618, CVE-2026-109619): actualiza ahora

Dos fallas críticas en el ciclo de solicitudes de PHP pueden permitir la ejecución remota de código sin autenticación. Actualiza a una versión corregida o instala una corrección retroportada por un proveedor para las versiones anteriores.

blog feature ai lilac
Blog

Convierte tu backlog de vulnerabilidades en pull requests con la remediación agéntica

Evo Remediation Agent ya está disponible en Open Preview e incorpora la resolución automatizada de dependencias a Evo Agentic AppSec. Ahora, los equipos de AppSec pueden ejecutar campañas de remediación continuas

AI Background min crop
Blog

La IA activa todos los riesgos que has aceptado: siete ideas del panel de seguridad de IA sin filtros

La IA hace que los ataques sean más baratos y rápidos, y deja al descubierto riesgos que las organizaciones ya enfrentan. Cuatro líderes de seguridad explican por qué la defensa a velocidad de máquina y la corrección más rápida son esenciales.