Skip to main content

Acerca de las alertas de análisis de código

Obtén información sobre los diferentes tipos de alertas de análisis de código y la información que te ayuda a comprender el problema que resalta cada alerta.

Code scanning está disponible para todos los repositorios públicos en GitHub.com. Para utilizar code scanning en un repositorio privado que pertenece a una organización, debes tener una licencia para GitHub Advanced Security. Para obtener más información, vea «Acerca de GitHub Advanced Security».

Acerca de las alertas de code scanning

Puedes configurar el code scanning para comprobar el código en un repositorio utilizando el análisis predeterminado de CodeQL, un análisis de terceros o varios tipos de análisis. Cuando se complete el análisis, las alertas resultantes se mostrarán unas junto a otras en la vista de seguridad del repositorio. Los resultados de las herramientas de terceros o de las consultas personalizadas podrían no incluir todas las propiedades que ves para las alertas que se detectan con el análisis predeterminado del CodeQL de GitHub. Para obtener más información, consulta "Establecimiento de la configuración predeterminada para el examen del código" y "Establecimiento de la configuración avanzada del examen de código con CodeQL".

Predeterminadamente, el code scanning analiza tu código periódicamente en la rama predeterminada y durante las solicitudes de cambios. Para información sobre la administración de alertas en una solicitud de incorporación de cambios, consulta "Clasificar las alertas del escaneo de código en las solicitudes de cambios".

Puedes auditar las acciones realizadas en respuesta a las alertas de code scanning mediante las herramientas de GitHub. Para obtener más información, vea «Auditoría de alertas de seguridad».

Acerca de los detalles de la alerta

Cada alerta resalta un problema en el código y el nombre de la herramienta que lo identificó. Puedes ver la línea de código que ha desencadenado la alerta, así como las propiedades de la misma, tales como la gravedad de alerta, la gravedad de seguridad y la naturaleza del problema. Las alertas también te dicen si el problema se introdujo por primera vez. Para las alertas que identificó el análisis de CodeQL, también verás información de cómo arreglar elproblema.

El estado y los detalles de la página de alertas solo reflejan el estado de la alerta en la rama predeterminada del repositorio, incluso si la alerta existe en otras ramas. Puede ver el estado de la alerta en ramas no predeterminadas en la sección Ramas afectadas del lado derecho de la página de alertas. Si una alerta no existe en la rama predeterminada, el estado de la alerta se mostrará como "en la solicitud de incorporación de cambios" o "en la rama", y tendrá un color gris.

Captura de pantalla que muestra los elementos de una alerta de code scanning, incluido el título de la alerta y las líneas de código pertinentes a la izquierda, así como el nivel de gravedad, las ramas afectadas y las debilidades a la derecha. Si configuras code scanning mediante CodeQL, también puedes encontrar problemas de flujo de datos en el código. El análisis de flujo de datos encuentra problemas de seguridad potenciales en el código, tales como: utilizar los datos de formas no seguras, pasar argumentos peligrosos a las funciones y tener fugas de información sensible.

Cuando code scanning reporta alertas de flujo de datos, GitHub te muestra como se mueven los datos a través del código. El Code scanning te permite identificar las áreas de tu código que filtran información sensible y que podrían ser el punto de entrada para los ataques que hagan los usuarios malintencionados.

Acerca de los niveles de gravedad

Los niveles de gravedad de la alerta pueden ser Error, Warning o Note.

Si code scanning está habilitado como una comprobación de solicitud de incorporación de cambios, se producirá un error en la comprobación si detecta resultados con una gravedad de error. Puedes especificar qué nivel de gravedad de las alertas de análisis de código provocan un error de comprobación. Para obtener más información, vea «Personalizar la configuración avanzado de para el análisis de código».

Acerca de los niveles de gravedad

El Code scanning muestra los niveles de gravedad de seguridad para las alertas que generan las consultas de seguridad. Los niveles de gravedad de seguridad pueden ser Critical, High, Medium o Low.

Para calcular la gravedad de seguridad de una alerta, utilizamos los datos del Sistema de Puntuación para Vulnerabilidades Comunes (CVSS). El CVSS es un marco de trabajo de código abierto para comunicar las características y gravedad de las vulnerabilidades de software y otros productos de seguridad lo utilizan habitualmente para puntuar las alertas. Para más información sobre cómo se calculan los niveles de gravedad, vea esta entrada de blog.

De manera predeterminada, cualquier resultado de code scanning con una gravedad de seguridad de Critical o High provocará un error de comprobación. Puede especificar qué nivel de gravedad de seguridad para los resultados de code scanning debe provocar un error de comprobación. Para obtener más información, vea «Personalizar la configuración avanzado de para el análisis de código».

Acerca de alertas

de múltiples configuraciones

Puedes ejecutar varias configuraciones de análisis de código en un repositorio mediante distintas herramientas y destinadas a diferentes lenguajes o áreas del código. Cada configuración de code scanning genera un conjunto único de alertas. Por ejemplo, una alerta generada mediante el análisis predeterminado CodeQL con GitHub Actions procede de una configuración diferente de una alerta generada externamente y cargada a través de la API code scanning.

Si usas varias configuraciones para analizar un archivo, los problemas detectados por la misma consulta se notifican como alertas generadas por múltiples configuraciones. Si existe una alerta en más de una configuración, el número de configuraciones aparece junto al nombre de la rama en la sección "Ramas afectadas" del lado derecho de la página de alertas. Para ver las configuraciones de una alerta, en la sección "Ramas afectadas", haz clic en una rama. Aparece un modal "Configuraciones de análisis" con los nombres de cada configuración que genera la alerta para esa rama. Debajo de cada configuración, puedes ver cuándo se actualizó por última vez la alerta de esa configuración.

Una alerta puede mostrar diferentes estados de configuraciones diferentes. Para actualizar los estados de alerta, vuelve a ejecutar cada configuración obsoleta. Como alternativa, puedes eliminar configuraciones obsoletas de una rama para quitar alertas obsoletas. Para obtener más información sobre cómo eliminar configuraciones obsoletas y alertas, consulta "Administración de alertas de examen de código para el repositorio".

Acerca de las etiquetas para las alertas que no se encuentran en el código de la aplicación

GitHub Enterprise Cloud asigna una etiqueta de categoría a las alertas que no se encuentran en el código de aplicación. La etiqueta se relaciona con la ubicación de la alerta.

  • Generada: código generado por el proceso de compilación
  • Prueba: código de prueba
  • Biblioteca: biblioteca o código de terceros
  • Documentación: documentación

El Code scanning categoriza los archivos por sus rutas. No puedes categorizar los archivos de origen manualmente.

En este ejemplo, una alerta se marca como en el código "Probar" en la lista de alertas code scanning.

Captura de pantalla de una alerta en la lista code scanning. A la derecha del título, se resalta una etiqueta "Probar" con un contorno naranja oscuro.

Al hacer clic para ver los detalles de la alerta, puedes ver que la ruta de acceso del archivo está marcada como código "Probar".

Captura de pantalla que muestra los detalles de una alerta. La ruta de acceso del archivo y la etiqueta "Probar" están resaltadas con un contorno naranja oscuro.

Acerca de las alertas experimentales

Nota: Las alertas experimentales de los datos code scanning se crean con tecnología experimental en la acción CodeQL. Esta característica está disponible actualmente como versión beta para código JavaScript y está sujeta a cambios.

En los repositorios que ejecutan code scanning mediante la acción CodeQL, es posible que vea algunas alertas marcadas como experimentales. Se trata de alertas detectadas mediante un modelo de Machine Learning para ampliar las funcionalidades de una consulta de CodeQL existente.

Captura de pantalla que muestra una alerta para code scanning. Se muestra una etiqueta "Experimental" a la derecha del título, que se anexa con "(experimental)".

Ventajas del uso de modelos de Machine Learning para ampliar las consultas

Las consultas que usan modelos de Machine Learning son capaces de encontrar vulnerabilidades en el código que se ha escrito mediante marcos y bibliotecas que el creador original de la consulta no ha incluido.

Cada una de las consultas de seguridad de CodeQL identifica código vulnerable a un tipo de ataque específico. Los investigadores de seguridad escriben las consultas e incluyen los marcos y bibliotecas más comunes. Por tanto, cada consulta existente busca usos vulnerables de marcos y bibliotecas comunes. Pero los desarrolladores usan muchos marcos y bibliotecas diferentes, y una consulta mantenida manualmente no puede incluirlas todas. Por tanto, las consultas mantenidas manualmente no proporcionan cobertura para todos los marcos y bibliotecas.

En CodeQL se usa un modelo de Machine Learning para ampliar una consulta de seguridad existente a fin de abarcar una gama más amplia de marcos y bibliotecas. El modelo de Machine Learning se entrena para detectar problemas en el código que nunca se han visto antes. Las consultas que usan el modelo encontrarán resultados para marcos y bibliotecas que no se describen en la consulta original.

Alertas identificadas mediante el aprendizaje automático

Las alertas encontradas mediante un modelo de Machine Learning se muestran como un banner "Alertas experimentales" para mostrar que la tecnología está en desarrollo activo. Estas alertas tienen una tasa más alta de resultados falsos positivos que las consultas en las que se basan. El modelo de Machine Learning mejorará en función de las acciones del usuario, como marcar un resultado deficiente como un falso positivo o corregir un resultado correcto.

Habilitación de alertas experimentales

Los conjuntos de consultas de CodeQL predeterminados no incluyen ninguna consulta que use el aprendizaje automático para generar alertas experimentales. Para ejecutar consultas de aprendizaje automático durante code scanning tendrá que ejecutar las consultas adicionales contenidas en uno de los conjuntos de consultas siguientes.

Conjunto de consultasDescripción
security-extendedConsultas del conjunto predeterminado, además de consultas de gravedad y precisión más bajas
security-and-qualityConsultas de security-extended, además de consultas de mantenimiento y confiabilidad.

Al actualizar el flujo de trabajo para ejecutar un conjunto de consultas adicional, aumentará el tiempo de análisis.

- uses: github/codeql-action/init@v2
  with:
    # Run extended queries including queries using machine learning
    queries: security-extended

Para obtener más información, vea «Personalizar la configuración avanzado de para el análisis de código».

Deshabilitación de alertas experimentales

La manera más sencilla de deshabilitar las consultas que usan el aprendizaje automático para generar alertas experimentales consiste en dejar de ejecutar el conjunto de consultas security-extended o security-and-quality. En el ejemplo anterior, tendría que convertir en comentario la línea queries. Si necesita seguir ejecutando el conjunto security-extended o security-and-quality, y las consultas de aprendizaje automático generan problemas, puede abrir una incidencia con el soporte técnico de GitHub con los detalles siguientes.

  • Título de la incidencia de soporte técnico: "code scanning: eliminación de alertas experimentales beta"
  • Especificar los detalles de los repositorios u organizaciones que se ven afectados
  • Solicitud de una escalación al departamento de ingeniería