A medida que aprendes a codificar, es normal introducir accidentalmente vulnerabilidades en los proyectos. Si estos problemas de seguridad no se solucionan antes de compartir el trabajo, los atacantes pueden usarlos para manipular el código y acceder a datos confidenciales, por lo que es importante identificarlos y aplicarles revisiones lo antes posible.
Afortunadamente, hay herramientas como code scanning que buscan, explican e incluso corrigen vulnerabilidades en los repositorios públicos. En este tutorial, aprenderás a proteger tu trabajo con code scanning.
Configuración del repositorio de demostración
Empecemos bifurcando un proyecto de demostración con una vulnerabilidad de seguridad. Este proyecto compila una página web sencilla, pero como no implementaremos el proyecto, no hay ningún riesgo de seguridad en este ejercicio.
- Vaya al repositorio de
new2code/code-scanning-demo. - En la parte superior derecha de la página, haz clic en Fork.
- En la página que aparece, haz clic en Crear bifurcación.
Búsqueda de vulnerabilidades en el código
Ahora que hemos configurado el proyecto, activemos code scanning para comprobar vulnerabilidades en el código de tu fork.
- De nuevo en GitHub, en la página de inicio de tu repositorio, haz clic en Seguridad.
- En la fila "Code scanning alerts", haga clic en Configurar code scanning.
- En la sección "Tools", junto a "CodeQL analysis", selecciona Set up y, a continuación, haz clic en Default.
- En la ventana emergente que aparece, haz clic en Enable CodeQL. Esto desencadenará un flujo de trabajo de GitHub Actions que examina el código para detectar vulnerabilidades.
- Para comprobar el estado del flujo de trabajo, en la barra de navegación, haz clic en Actions.
- Una vez completado el flujo de trabajo, en la barra de navegación, haz clic en Security.
- Para ver la alerta de code scanning detectada por el flujo de trabajo, en la navegación lateral, haz clic en Code scanning y, a continuación, haz clic en Reflected cross-site scripting.
Comprender una alerta de code scanning
Ahora que code scanning ha identificado una vulnerabilidad en el código, vamos a desglosar la información proporcionada en la alerta.
Ubicación
La alerta muestra una pequeña vista previa de un archivo, centrada en las líneas de código que crean la vulnerabilidad. En nuestro caso, la vulnerabilidad se detecta en la línea 8 de nuestro archivo index.js, donde implementamos la entrada proporcionada por el usuario en nuestro sitio.
Si observamos con más detalle, podemos ver que el problema subyacente se produce en la línea 7, cuando asignamos greet a la entrada del usuario sin comprobar si hay código malintencionado. Para ver una vista paso a paso de la vulnerabilidad en nuestro código, en la llamada debajo de las líneas vulnerables, haz clic en Mostrar rutas.

Descripción y recomendación
Debajo de la vista previa del archivo, code scanning proporciona una descripción más detallada de la vulnerabilidad. Para ver la corrección recomendada, así como ejemplos del código vulnerable y fijo, haz clic en Mostrar más .

En nuestro caso, la recomendación es sanear la entrada del usuario antes de usarla. Esto significa que necesitamos comprobar la entrada de código malintencionado y luego limpiarla si es necesario.
Sugerencia
Si no comprendes completamente la corrección recomendada, intenta pedir a chat de Copilot que la explique.
Escala de tiempo
Por último, puedes ver la escala de tiempo de la alerta en la parte inferior de la página. Nuestra escala de tiempo contiene la confirmación en la que se detectó por primera vez la vulnerabilidad y se actualizará automáticamente cuando se corrija la vulnerabilidad.

Corrección automática de una vulnerabilidad
Para proteger nuestro proyecto de forma rápida y sencilla, vamos a usar GitHub Copilot Corrección automática para code scanning.
-
Debajo del título de la alerta, en el cuadro que sugiere "Acelerar la corrección de esta alerta mediante Autofijo de Copilot para CodeQL", haz clic en Generar corrección.
-
Después de que Copilot genere la sugerencia de corrección, describirá los cambios que sugiere, representará una vista previa de los cambios y llamará a las dependencias agregadas. Dedica un momento a leer el trabajo de Copilot.
-
Para crear un pull request con corrección, haz clic en Confirmar nueva rama y, a continuación, haz clic en Confirmar cambio.
-
Una vez creada la solicitud de incorporación de cambios en borrador, en la parte inferior de la página, selecciona Listo para revisar para que se pueda fusionar.
-
Para aplicar la corrección, haz clic en Merge pull request y, a continuación, haz clic en Confirmar merge.
Una vez combinada la solicitud de incorporación de cambios y el flujo de trabajo de code scanning se ejecuta de nuevo, la alerta se cerrará automáticamente y la confirmación para corregir la vulnerabilidad se agregará a la escala de tiempo.
Nota:
En los proyectos reales, siempre debes revisar los cambios sugeridos por Copilot antes de confirmarlos en el código.
Pasos siguientes
Ahora que has probado code scanning en un repositorio de demostración, habilítalo en tus propios proyectos para encontrar y corregir rápidamente vulnerabilidades actuales y futuras.
Ahora que has protegido el código que has escrito, sigue el siguiente paso para un código seguro comprobando la seguridad de las dependencias. Consulta Búsqueda y corrección de la primera vulnerabilidad de dependencia.