Corrección de problemas con el modo del agente de GitHub Copilot
Después de analizar los problemas de seguridad mediante el modo Preguntar, está listo para implementar correcciones. El modo agente de GitHub Copilot le permite ejecutar tareas complejas de corrección de forma segura, a la vez que se garantiza que la funcionalidad se conserva y se mejora la calidad del código.
Nota:
Use siempre el modo Preguntar de GitHub Copilot para analizar los problemas de seguridad y formular un plan de corrección antes de usar el modo agente para implementar los cambios. Este enfoque garantiza que la refactorización se realice cuidadosa y seguramente.
¿Qué es el modo agente?
El modo agente de GitHub Copilot funciona de forma autónoma para ejecutar tareas de corrección complejas en el código base. A diferencia del modo Ask, que proporciona instrucciones y sugerencias en el panel de chat, el modo agente implementa actualizaciones sugeridas como modificaciones directamente en los archivos de código.
Las funcionalidades del modo agente incluyen:
- Edición de archivos con modificaciones precisas de código.
- Aplicar cambios en varios archivos simultáneamente.
- Ejecutar pruebas para comprobar los cambios.
- Ejecutar comandos en función de las instrucciones.
- Descripción del contexto y las dependencias del proyecto.
- Mantener la coherencia en el código base.
El modo de agente es ideal para implementar correcciones de seguridad de varios pasos que requieren un control cuidadoso de las dependencias, los casos perimetrales y las pruebas. El modo de agente define automáticamente el contexto necesario y ejecuta los pasos necesarios para lograr los objetivos de corrección.
Corrección de problemas de seguridad mediante el modo de agente
Puede usar el modo agente para implementar las correcciones de seguridad identificadas durante el análisis del modo Preguntar. El modo de agente puede ejecutar varios pasos de corrección automáticamente a la vez que se conserva la funcionalidad original y se mejora la seguridad del código.
Estrategias para corregir problemas de seguridad
Estas son las estrategias clave para usar el modo de agente para corregir los problemas de seguridad:
Corrección de vulnerabilidades de inyección: configure el modo Agent para que reemplace la concatenación de cadenas por consultas paramétricas o instrucciones preparadas.
Implementar cifrado seguro: haga que el modo agente actualice algoritmos hash débiles mediante alternativas seguras como bcrypt o Argon2.
Sanitización de registros: use el modo del agente para quitar datos confidenciales de las instrucciones de registro al tiempo que mantiene información de diagnóstico útil.
Validar rutas de acceso de archivo: permitir que el modo agente agregue una validación de ruta de acceso adecuada que impida ataques de recorrido de directorio.
Agregar validación de entrada: haga que el modo agente implemente una validación de entrada completa y saneamiento.
Garantizar la seguridad: indique al modo agente que valide que las correcciones mantengan todas las comprobaciones de seguridad existentes y no introduzcan nuevas vulnerabilidades.
Mantener la funcionalidad: use el modo agente para conservar toda la lógica de negocios y el control de errores existentes a la vez que se mejora la seguridad.
El modo de agente solicita la corrección de problemas de seguridad
Al usar el modo agente para corregir los problemas de seguridad, las indicaciones deben ser específicas, accionables e incluir consideraciones de seguridad. Estos son ejemplos de texto de lenguaje natural que puede incluir en el mensaje al corregir problemas de seguridad:
Preparación y seguridad
Estas indicaciones le ayudan a establecer medidas de seguridad antes de realizar cambios de seguridad en el código base.
- "Antes de realizar correcciones de seguridad, cree pruebas unitarias que comprueben el comportamiento actual de las funciones seleccionadas".
- "Analice el código seleccionado para las dependencias y asegúrese de que las correcciones mantienen toda la funcionalidad existente".
- "Cree una rama de copia de seguridad y ejecute pruebas existentes antes de implementar correcciones de seguridad en el código seleccionado".
Operaciones básicas de corrección
Use estas indicaciones para solucionar vulnerabilidades de seguridad comunes con correcciones sencillas.
- "Refactorice la consulta SQL seleccionada para usar consultas con parámetros en lugar de concatenación de cadenas".
- "Reemplace el hash de contraseña MD5 seleccionado por bcrypt, incluyendo la generación adecuada de sal".
- "Eliminar la información confidencial de las declaraciones de registro seleccionadas pero manteniendo su valor diagnóstico."
- Agregar validación de la ruta a las operaciones de archivo seleccionadas para evitar ataques de travesía de directorios.
Patrones de corrección avanzados
Estas indicaciones guían el modo agente a través de mejoras de seguridad más complejas que implican varios componentes o cambios arquitectónicos.
- "Refactorice la función de autenticación seleccionada para usar la autenticación segura basada en tokens con una expiración adecuada".
- "Implemente una validación de entrada completa para las funciones de procesamiento de datos de usuario seleccionadas".
- "Reemplace la implementación de cifrado débil seleccionada por el cifrado AES-256 siguiendo los procedimientos recomendados".
- Refactorice el manejo de errores seleccionado para proporcionar mensajes fáciles de entender, mientras registra errores detallados de forma segura.
Calidad y validación
Use estas indicaciones para asegurarse de que las correcciones de seguridad cumplan los estándares de calidad y no introduzcan regresiones.
- "Después de implementar correcciones de seguridad, ejecute todas las pruebas y compruebe que la funcionalidad sigue siendo idéntica".
- "Asegúrese de que el código fijo sigue las directrices de seguridad y las convenciones de codificación de C# de Microsoft".
- "Valide que las correcciones de seguridad no introducen regresiones de rendimiento".
- "Crear pruebas unitarias centradas en la seguridad para comprobar que las vulnerabilidades están totalmente abordadas".
Flujo de trabajo del modo de agente para corregir problemas de seguridad
Siga este flujo de trabajo sistemático para corregir los problemas de seguridad mediante el modo agente:
Paso 1: Preparación del área de trabajo
A partir de un área de trabajo limpia, se garantiza que puede realizar un seguimiento de los cambios con precisión y revertirlos si es necesario.
Asegúrese de estar trabajando en una rama git limpia con todo el trabajo existente confirmado. Vaya al archivo que contiene la vulnerabilidad de seguridad analizada en modo Preguntar y haga que el plan de corrección esté listo para hacer referencia.
Paso 2: Configurar medidas de seguridad
Cree pruebas de línea base antes de realizar cambios en el código. Cuando se completen las actualizaciones de código, use pruebas de línea base para comprobar que la funcionalidad permanece intacta.
Antes de realizar cambios, cree pruebas para comprobar el comportamiento actual.
Mensaje de ejemplo: "Crear pruebas unitarias completas para la función para comprobar el SearchProducts comportamiento actual antes de implementar correcciones de seguridad".
El modo agente crea pruebas que capturan el comportamiento actual, lo que proporciona una línea base para la validación.
Paso 3: Empezar con correcciones de seguridad críticas
Abordar primero las vulnerabilidades de mayor riesgo garantiza que los problemas más peligrosos se resuelvan rápidamente.
Comience con las vulnerabilidades de prioridad más alta.
Ejemplo de instrucción: "Refactoriza el método SearchProducts para usar consultas parametrizadas en lugar de concatenación de cadenas. Asegúrese de que se eliminan todos los vectores de inyección de CÓDIGO SQL".
El modo de agente analiza el código, reemplaza la concatenación de cadenas vulnerables por consultas con parámetros y agrega validación de entrada para eliminar la vulnerabilidad de inyección de CÓDIGO SQL.
Paso 4: Implementar criptografía segura
La actualización de criptografía débil protege los datos confidenciales, como las contraseñas, incluso si se infringe el almacenamiento.
Continúe con las mejoras criptográficas.
Mensaje de ejemplo: "Reemplace el hash de contraseña MD5 en el método HashPassword por la implementación de bcrypt, incluida la generación de sal adecuada".
El modo de agente actualiza algoritmos hash débiles para proteger alternativas como bcrypt, agrega validación de contraseña y crea un método de verificación.
Paso 5: Sanear el registro y el control de errores
La eliminación de información confidencial de los registros impide la exposición de datos al tiempo que mantiene las funcionalidades de diagnóstico necesarias para la depuración.
Solucionar problemas de divulgación de información.
Mensaje de ejemplo: "Quitar información confidencial de las instrucciones de registro en el módulo de autenticación mientras se mantiene el valor de diagnóstico".
El modo de agente quita los datos confidenciales de los registros y reemplaza los mensajes de error detallados por alternativas fáciles de usar, a la vez que conserva la información de diagnóstico en registros seguros.
Paso 6: Agregar validación de ruta de acceso
La validación de rutas de acceso de archivo impide que los atacantes accedan a archivos fuera del ámbito de directorio previsto.
Implemente la seguridad de la ruta de acceso del archivo.
Mensaje de ejemplo: "Agregar validación de ruta de acceso completa al SaveFile método para evitar ataques de recorrido de directorio".
El modo de agente implementa la validación de la ruta de acceso mediante Path.GetFileName(), comprueba que las rutas de acceso permanecen dentro de los directorios previstos y agrega comprobaciones de caracteres no válidos.
Paso 7: Validar los cambios
Las pruebas después de cada corrección principal garantizan que se resuelva la vulnerabilidad y que no se hayan introducido nuevos problemas.
Después de cada corrección de seguridad principal, valide los cambios.
Mensaje de ejemplo: "Ejecute todas las pruebas unitarias y cree pruebas específicas de seguridad para comprobar que la vulnerabilidad de inyección de CÓDIGO SQL está totalmente fija".
El modo de agente ejecuta pruebas existentes y crea otras pruebas de seguridad que intentan ataques por inyección de CÓDIGO SQL para comprobar que se resuelve la vulnerabilidad.
Paso 8: Revisar e iterar
La solución de errores de prueba y la refinación de implementaciones garantiza que se cumplan todos los requisitos antes de considerar la realización de la corrección.
Si se encuentran problemas, proporcione instrucciones específicas para refinamientos.
Mensaje de ejemplo: "Error en la prueba de validación de longitud de contraseña. Actualice la validación para permitir contraseñas entre 8 y 128 caracteres".
El modo de agente analiza las pruebas con errores y realiza correcciones necesarias para asegurarse de que se cumplen todos los requisitos.
Este enfoque estructurado garantiza que la corrección se realice de forma segura y sistemática, con la validación en cada paso.
Consideraciones de seguridad y calidad
Al usar el modo agente para la corrección de seguridad, tenga en cuenta siempre las implicaciones de seguridad y calidad:
Procedimientos recomendados de seguridad
Seguir estas prácticas de seguridad garantiza que las correcciones sean completas y no introduzcan nuevas vulnerabilidades.
Tenga en cuenta los siguientes procedimientos de seguridad al corregir vulnerabilidades:
- Validar exhaustivamente: asegúrese de que toda la validación de entrada es completa y controla los casos perimetrales.
- Conservar la autorización: compruebe que las correcciones de seguridad no omiten las comprobaciones de autenticación o autorización.
- Mantener la defensa en profundidad: asegúrese de que varias capas de seguridad permanecen intactas.
- Revisar dependencias: compruebe que las correcciones de seguridad no presentan dependencias vulnerables.
- Prueba exhaustiva: incluya casos de prueba de seguridad positivos y negativos.
Estándares de calidad del código
El mantenimiento de la calidad del código junto con las mejoras de seguridad garantiza que el código base siga siendo fácil de mantener y profesional.
Mantenga la alta calidad del código siguiendo estas instrucciones:
- Siga las convenciones: asegúrese de que el código fijo sigue las convenciones de codificación de C# de Microsoft.
- Mantener la legibilidad: compruebe que las correcciones de seguridad no ponen en peligro la claridad del código.
- Cambios en el documento: agregue comentarios que expliquen el código crítico para la seguridad.
- Documentación de actualización: asegúrese de que readME, directivas de seguridad y documentos de API reflejan los cambios.
- Considere el rendimiento: compruebe que las mejoras de seguridad no degradan significativamente el rendimiento.
Directrices de seguridad del modo agente
El modo de agente es eficaz, pero requiere una supervisión cuidadosa.
Antes de la corrección
Tomar estas precauciones antes de iniciar la corrección minimiza el riesgo de perder el trabajo o introducir cambios importantes.
- Trabaje siempre en una rama de características.
- Asegúrese de que existe una cobertura completa de pruebas.
- Revise el plan de corrección del análisis del modo Preguntar.
- Comprenda la vulnerabilidad de seguridad y sus posibles efectos.
- Realice una copia de seguridad de los datos o configuraciones críticos.
Durante la remediación
Seguir estas prácticas durante la corrección le ayuda a detectar y solucionar los problemas a medida que surgen en lugar de detectarlos más adelante.
- Realice cambios incrementales en lugar de transformaciones grandes.
- Valide cada paso antes de continuar con el siguiente.
- Revise el código generado para conocer la exactitud y la seguridad.
- Pruebe con frecuencia para detectar problemas temprano.
- Supervisión de efectos secundarios no deseados.
Después de la corrección
Estos pasos posteriores a la corrección comprueban que las correcciones están completas, correctas y listas para la implementación.
- Ejecute pruebas completas, incluidas las pruebas de seguridad.
- Realice una revisión de código con los miembros del equipo.
- Valide las características de seguridad mediante herramientas de seguridad.
- Actualice el problema de GitHub con los detalles de corrección.
- Documente las lecciones aprendidas para futuras referencias.
Tratar el modo agente como un asistente eficaz
Aunque el modo agente puede realizar tareas de corrección complejas, requiere supervisión humana:
- Revise todos los cambios antes de aceptarlos.
- Compruebe que las vulnerabilidades de seguridad están totalmente solucionadas.
- Asegúrese de que no se introducen nuevas vulnerabilidades.
- Pruebe exhaustivamente para detectar problemas sutiles.
- Compruebe el cumplimiento de las directivas de seguridad.
El modo de agente acelera la corrección de seguridad, pero no reemplaza la necesidad de revisar y probar detenidamente.
Integración con el flujo de trabajo de Git
Incorpore los cambios en el modo de agente en el flujo de trabajo de Git sin problemas mediante las herramientas integradas de Visual Studio Code.
Confirmación de cambios mediante la vista Control de código fuente
La vista de control de código fuente integrada de Visual Studio Code simplifica el proceso de confirmación e inserción de correcciones de seguridad en el repositorio.
La vista Control de código fuente de Visual Studio Code proporciona una manera integrada de revisar y confirmar las correcciones de seguridad:
Abra la vista Control de código fuente seleccionando el icono Control de código fuente en la barra de actividad o presionando Ctrl+Mayús+G.
Revise los cambios enumerados en "Cambios" para comprobar que se incluyen todas las correcciones de seguridad.
Los archivos se preparan pasando el cursor sobre ellos y seleccionando el icono +, o todos los cambios se preparan utilizando el icono + situado junto a "Cambios".
Escriba un mensaje de confirmación descriptivo en el cuadro de mensaje que haga referencia al problema de GitHub:
Fix SQL injection vulnerability in SearchProducts - Replace string concatenation with parameterized queries - Add input validation for search terms - Implement security tests for injection attempts Fixes #42Nota:
Para vincular las confirmaciones a problemas de GitHub, incluya el número de problema en el mensaje de confirmación mediante la sintaxis fixes #issue-number . Esta sintaxis cierra automáticamente la incidencia cuando se fusiona el commit.
Seleccione el botón Confirmar para confirmar los cambios.
Seleccione el botón Sincronizar cambios para insertar la rama en el repositorio remoto.
Como alternativa, puede usar comandos de Git en el terminal integrado:
# Stage all changes
git add .
# Commit with a descriptive message referencing the GitHub issue
git commit -m "Fix SQL injection vulnerability in SearchProducts
- Replace string concatenation with parameterized queries
- Add input validation for search terms
- Implement security tests for injection attempts
Fixes #42"
# Push changes to the remote repository
git push origin your-branch-name
Resumen
El uso del modo agente de Copilot de GitHub permite a los desarrolladores corregir de forma eficaz los problemas de seguridad al tiempo que se mantiene la calidad y la funcionalidad del código. Al combinar la información analítica del modo Ask con las funcionalidades de ejecución del modo Agente, puede abordar sistemáticamente las vulnerabilidades en el código base. La clave para el éxito es proporcionar instrucciones claras, mantener prácticas de seguridad, validar exhaustivamente todos los cambios y garantizar una documentación adecuada. El modo agente de Copilot de GitHub es un asistente eficaz que acelera la corrección. Sin embargo, la supervisión humana sigue siendo esencial para garantizar que las correcciones de seguridad sean completas, correctas y no introduzcan nuevas vulnerabilidades.