Análisis de las incidencias con el modo Preguntar de GitHub Copilot

Completado

Identificar y comprender los problemas de seguridad es el primer paso para resolverlos. El modo Ask de GitHub Copilot proporciona una manera interactiva de analizar código, identificar vulnerabilidades y planear estrategias de corrección.

¿Qué es el modo Preguntar?

El modo Preguntar de GitHub Copilot es una interfaz de chat conversacional integrada en Visual Studio Code. Puede hacer preguntas sobre el código y GitHub Copilot responde mediante el contexto que proporcione. Funciona como tener un compañero con conocimientos que pueda leer el código y proporcionar instrucciones centradas en la seguridad.

El modo de pregunta es ideal para:

  • Descripción de lo que hace el código específico.
  • Identificación de posibles vulnerabilidades de seguridad.
  • Explorar enfoques de implementación alternativos.
  • Obtención de explicaciones de los conceptos de seguridad.
  • Planear estrategias de corrección antes de realizar cambios.

El modo Ask de GitHub Copilot no modifica los archivos de código. Proporciona análisis, explicaciones y sugerencias que puede usar para tomar decisiones informadas sobre cómo continuar.

Análisis de problemas de seguridad mediante el modo Ask

Puede usar el modo Preguntar de GitHub Copilot para identificar y comprender sistemáticamente las vulnerabilidades de seguridad en el código base. GitHub Copilot le ayuda a comprender la naturaleza de los problemas de seguridad, sus posibles efectos y los enfoques de corrección adecuados.

Estrategias para analizar problemas de seguridad

Estas son estrategias eficaces para usar el modo Preguntar para analizar los problemas de seguridad:

  • Comprender el código: pida a GitHub Copilot que explique lo que hace el código vulnerable y cómo procesa los datos.

  • Identificar vulnerabilidades: solicite el análisis de posibles problemas de seguridad en secciones de código específicas.

  • Evaluar el impacto: explore las posibles consecuencias de las vulnerabilidades si se aprovecha.

  • Buscar casos perimetrales: identifique escenarios en los que el código puede comportarse de forma inesperada o no segura.

  • Evaluar soluciones: solicite varios enfoques para corregir el problema y comprender sus ventajas y desventajas.

  • Comprobación de la comprensión: confirme la interpretación del problema de seguridad antes de implementar correcciones.

  • Planear sistemáticamente: desarrolle un plan de corrección paso a paso que aborde todos los aspectos de la vulnerabilidad.

Solicitar avisos de modo de solicitud para el análisis de seguridad

Las indicaciones eficaces son específicas, proporcionan contexto y se centran en información procesable.

Descripción y análisis

Estas indicaciones le ayudan a comprender qué hace el código e identificar sus implicaciones de seguridad.

  • "Explicar qué hace la función de autenticación seleccionada e identificar cualquier problema de seguridad".
  • "Analice el código seleccionado para detectar vulnerabilidades de inyección de CÓDIGO SQL y explique cómo podrían aprovecharse".
  • "Revise la implementación de almacenamiento de contraseñas seleccionada y explique por qué no es segura".
  • "¿Qué riesgos de seguridad existen en el código de control de archivos seleccionado?"

Evaluación de vulnerabilidades

Use estas indicaciones para analizar profundamente posibles vulnerabilidades de seguridad y evaluar la gravedad de los problemas de seguridad.

  • "Identifique todas las formas en que un atacante podría aprovechar la validación de entrada seleccionada".
  • "¿Qué información confidencial se puede exponer a través del control de errores seleccionado?"
  • "Analice la implementación de cifrado seleccionada para debilidades".
  • "¿El código seleccionado sigue las directrices de seguridad de OWASP Top 10? Explique cualquier infracción".

Exploración de soluciones

Estas indicaciones le ayudan a evaluar diferentes enfoques para corregir problemas de seguridad y comprender sus ventajas y desventajas.

  • "¿Cuáles son los enfoques recomendados para corregir la inyección de CÓDIGO SQL en la consulta seleccionada?"
  • Muéstrame alternativas seguras a la implementación de cifrado de contraseñas seleccionada.
  • "¿Cómo debo implementar la validación de rutas de acceso para evitar el recorrido de directorio?"
  • "¿Cuál es la manera más segura de registrar errores sin exponer información confidencial?"

Análisis de consecuencias

Use estas indicaciones para comprender las posibles consecuencias de las vulnerabilidades de seguridad si se aprovechan.

  • "¿Cuál es el posible impacto si se aprovecha la vulnerabilidad de inyección de CÓDIGO SQL seleccionada?"
  • "Explicar las consecuencias de almacenar contraseñas en texto no cifrado".
  • "¿Qué datos se podrían poner en peligro a través de la vulnerabilidad de recorrido de ruta seleccionada?"
  • "¿Qué gravedad tiene el problema de registro seleccionado en comparación con otras vulnerabilidades en el código base?"

Comprobación de procedimientos recomendados

Estas indicaciones le ayudan a asegurarse de que el código sigue los estándares del sector y las directrices de seguridad.

  • "¿El código seleccionado sigue las directrices de seguridad de Microsoft para .NET?"
  • "¿La implementación de cifrado seleccionada usa los procedimientos recomendados actuales?"
  • "¿Qué mejoras de seguridad se recomienda para el flujo de autenticación seleccionado?"
  • "¿Cómo se compara el código seleccionado con los estándares del sector para el almacenamiento seguro de contraseñas?"

Establecer contexto de chat efectivo

La calidad del análisis de GitHub Copilot depende del contexto que proporcione. Siga estos procedimientos para asegurarse de que Copilot tiene suficiente información:

Adición de archivos y código pertinentes

Proporcionar contexto completo ayuda a GitHub Copilot a ofrecer análisis de seguridad más precisos y pertinentes.

  • Use el botón Agregar contexto en la interfaz de chat para incluir archivos pertinentes.
  • Seleccione secciones de código específicas antes de formular preguntas para centrar el análisis.
  • Incluya archivos relacionados que proporcionen contexto (como archivos de configuración, clases auxiliares o modelos de datos).
  • Haga referencia a varios archivos cuando el problema se extienda a través de ellos.

Proporcionar descripciones claras del problema

El contexto claro ayuda a GitHub Copilot a comprender su situación específica y proporcionar instrucciones de seguridad más específicas.

  • Describa lo que intenta lograr.
  • Mencione las restricciones o requisitos (consideraciones de rendimiento, necesidades de cumplimiento).
  • Especifique los problemas de seguridad explícitamente.
  • Tenga en cuenta los estándares o directrices de codificación pertinentes que sigue su equipo.

Preguntar el flujo de trabajo del modo de solicitud para el análisis de seguridad

Siga este flujo de trabajo sistemático para analizar los problemas de seguridad mediante el modo Preguntar:

Paso 1: Abrir y seleccionar el código problemático

El primer paso para analizar un problema de seguridad es proporcionar a GitHub Copilot el código específico que desea analizar.

Vaya al archivo que contiene el problema de seguridad y seleccione la sección de código correspondiente. Al seleccionar un archivo o sección de código, se centra el análisis de GitHub Copilot en el área específica de preocupación.

Paso 2: Pedir una explicación

Para comenzar el análisis, comprenda lo que hace el código y confirme que existe una vulnerabilidad.

Comience con una pregunta de comprensión amplia para confirmar la vulnerabilidad y comprender cómo se podría aprovechar.

Mensaje de ejemplo: "Explicar lo que hace esta función de búsqueda e identificar cualquier problema de seguridad".

GitHub Copilot describe cómo funciona el código, identifica el tipo de vulnerabilidad y explica los posibles métodos de explotación.

Paso 3: Formular preguntas específicas sobre la vulnerabilidad

Una vez que comprenda la vulnerabilidad básica, profundice para comprender todos los vectores de ataque posibles.

Profundice en aspectos específicos del problema de seguridad.

Mensaje de ejemplo: "¿Cuáles son las distintas formas en que un atacante podría aprovechar esta vulnerabilidad de inyección de CÓDIGO SQL?"

Las preguntas dirigidas le ayudan a comprender el ámbito completo del riesgo, como la omisión de autenticación, la extracción de datos, la modificación de datos y las posibilidades de denegación de servicio.

Paso 4: Explorar las opciones de corrección

Comprender varios enfoques de solución le ayuda a elegir la corrección más adecuada para su contexto específico.

Pida estrategias de solución con ventajas y desventajas.

Mensaje de ejemplo: "¿Cuáles son los enfoques recomendados para corregir esta vulnerabilidad de inyección de CÓDIGO SQL? Incluya ventajas y desventajas de cada enfoque".

GitHub Copilot puede sugerir varias soluciones, como consultas con parámetros, mapeo objeto-relacional (ORM) o procedimientos almacenados, lo que le ayuda a elegir la solución más adecuada para su situación.

Paso 5: Comprobación de los casos perimetrales y los requisitos

Antes de implementar una corrección, asegúrese de comprender todos los escenarios y casos especiales que deben controlarse.

Asegúrese de que la corrección funciona en todos los escenarios preguntando sobre consideraciones especiales.

Mensaje de ejemplo: "¿Hay casos perimetrales o consideraciones especiales que debo controlar al implementar consultas parametrizadas para esta función de búsqueda?"

GitHub Copilot puede identificar los requisitos de validación de entrada, las consideraciones de rendimiento y los problemas de lógica de negocios que debe abordar.

Paso 6: Planear la implementación

El último paso antes de codificar es crear un plan completo que guía el proceso de implementación.

Solicite un plan de implementación completo que incluya requisitos de prueba.

Mensaje de ejemplo: "En función de nuestra discusión, cree un plan paso a paso para corregir esta vulnerabilidad de inyección de CÓDIGO SQL, incluidos los requisitos de prueba".

GitHub Copilot puede proporcionar un plan estructurado que abarque la preparación, implementación, pruebas (unidad, seguridad y regresión), fases de implementación y documentación.

Enfoque de análisis iterativo

El análisis de seguridad a menudo requiere varias rondas de preguntas. Se recomiendan los pasos siguientes para un enfoque iterativo:

  • Formular preguntas de seguimiento para la aclaración.
  • Solicitar ejemplos de código para soluciones sugeridas.
  • Explore enfoques alternativos.
  • Asegúrese de comprender de forma completa el problema y el proceso de resolución.

Tenga en cuenta la siguiente serie de avisos en un enfoque de análisis iterativo. En este escenario se supone que abrió un archivo que contiene una función de búsqueda vulnerable a la inserción de SQL y seleccionó el código:

  1. Establezca una comprensión general del código y el problema: "Explique lo que hace la función de búsqueda seleccionada e identifique cualquier problema de seguridad".

  2. Explorar en profundidad los riesgos específicos: "¿Cuáles son las distintas formas en que un atacante podría aprovechar esta vulnerabilidad de inyección de CÓDIGO SQL?"

  3. Explore las opciones de solución: "¿Cuáles son los enfoques recomendados para corregir esta vulnerabilidad de inyección de CÓDIGO SQL? Incluya ventajas y desventajas de cada enfoque".

  4. Mejore su comprensión del enfoque recomendado: "¿Por qué es mejor una consulta parametrizada que escapar la entrada con una función de saneamiento?"

  5. Asegúrese de una comprensión completa y completa: "¿Hay casos perimetrales o consideraciones especiales que debo controlar al implementar consultas parametrizadas para esta función de búsqueda?"

  6. Planee la implementación: "En función de nuestra discusión, cree un plan paso a paso para corregir esta vulnerabilidad de inyección de CÓDIGO SQL, incluidos los requisitos de prueba".

Este enfoque iterativo crea una comprensión completa y garantiza que tiene una estrategia de corrección completa antes de modificar el código.

Administración de las respuestas de GitHub Copilot

Aunque GitHub Copilot es informado, trate sus respuestas como instrucciones informadas en lugar de la verdad absoluta.

Comprobación de las decisiones críticas de seguridad

Valide siempre las recomendaciones de seguridad con fuentes autorizadas y sus requisitos específicos.

  • Cruce las sugerencias de GitHub Copilot con la documentación oficial.
  • Consulte las directrices de OWASP para conocer los procedimientos recomendados de seguridad.
  • Revise las recomendaciones de seguridad de Microsoft para .NET.
  • Tenga en cuenta sus requisitos de cumplimiento específicos.

Reconocimiento de las limitaciones de GitHub Copilot

Comprender lo que GitHub Copilot puede y no puede hacer le ayuda a usarlo de forma eficaz mientras mantiene la supervisión adecuada.

GitHub Copilot es una herramienta eficaz, pero tiene limitaciones que debe tener en cuenta.

Tenga en cuenta las limitaciones siguientes:

  • GitHub Copilot analiza el código estático, pero no tiene contexto en tiempo de ejecución.
  • Es posible que GitHub Copilot no conozca su infraestructura o arquitectura específicas.
  • GitHub Copilot no puede acceder a directivas de seguridad propietarias.
  • GitHub Copilot podría perder vulnerabilidades sutiles que requieren experiencia en el dominio.

Proporcionar contexto de aclaración

La calidad de las respuestas de GitHub Copilot mejora significativamente al proporcionar más contexto y detalles.

La precisión de GitHub Copilot mejora con un mejor contexto. Si las respuestas parecen fuera de lugar:

  • Agregue más contexto sobre el entorno.
  • Incluya archivos de código relacionados en el chat.
  • Especifique restricciones o requisitos explícitamente.
  • Rephrase su pregunta con más detalle.

Principales ventajas del modo Preguntar para el análisis de seguridad

El uso del modo Ask para el análisis de seguridad proporciona varias ventajas:

  • Evaluación rápida: obtenga análisis inmediatos sin investigar documentación.
  • Perspectiva completa: GitHub Copilot considera patrones de millones de código base.
  • Educativo: aprenda los principios de seguridad a través de explicaciones.
  • Ayuda de planificación: desarrolle estrategias de implementación antes de escribir código.
  • Exploración sin riesgo: investigue varios enfoques sin modificar el código.

Resumen

El modo Ask de GitHub Copilot es una herramienta eficaz para analizar sistemáticamente los problemas de seguridad. Formular preguntas dirigidas y proporcionar un contexto adecuado para obtener los mejores resultados. Siga un flujo de trabajo iterativo para comprender exhaustivamente las vulnerabilidades y explorar las opciones de corrección. Use el modo Preguntar para desarrollar planes de implementación completos antes de escribir código. Este enfoque le ayuda a corregir problemas de seguridad con confianza mientras aprende los principios de seguridad que mejoran el código futuro.