Skip to main content

Búsqueda y corrección de la primera vulnerabilidad de código

Obtén información sobre los aspectos básicos de la protección del código mediante la resolución de una alerta de code scanning en un repositorio de demostración.

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.

  1. Ve al repositorio new2code/code-scanning-demo.
  2. En la parte superior derecha de la página, a la derecha, haz clic en Bifurcación.
  3. 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, vamos a activar code scanning para que la bifurcación compruebe si hay vulnerabilidades en el código.

  1. De nuevo en GitHub, en la página principal del repositorio, haz clic en Security.
  2. En la fila "Code scanning alerts", haz clic en Set up code scanning.
  3. En la sección "Tools", junto a "CodeQL analysis", selecciona Set up y, a continuación, haz clic en Default.
  4. 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.
  5. Para comprobar el estado del flujo de trabajo, en la barra de navegación, haz clic en Actions.
  6. Una vez completado el flujo de trabajo, en la barra de navegación, haz clic en Security.
  7. 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.

Descripción de 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.

Location

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.

Captura de pantalla de la ubicación de una alerta de code scanning. Un botón "Mostrar rutas" se resalta en naranja.

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 .

Captura de pantalla de los detalles de una alerta de code scanning. Una lista desplegable con la etiqueta "Mostrar más" está resaltada en naranja.

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

Captura de pantalla de la escala de tiempo de una alerta de code scanning.

Corrección automática de una vulnerabilidad

Para proteger nuestro proyecto de forma rápida y sencilla, vamos a usar GitHub Copilot Autofix para code scanning.

  1. Debajo del título de la alerta, en el cuadro que sugiere "Acelerar la corrección de esta alerta mediante Copilot Autofix para CodeQL", haz clic en Generar corrección.

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

  3. Para crear una solicitud de incorporación de cambios con la corrección, haz clic en Confirmar en la nueva rama y, a continuación, haz clic en Confirmar cambio.

  4. Una vez creada la solicitud de incorporación de cambios de borrador, en la parte inferior de la página, haz clic en Listo para revisar para que se pueda combinar.

  5. Para aplicar la corrección, haz clic en Combinar solicitud de incorporación de cambios y, a continuación, haz clic en Confirmar combinación.

    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.