Seguridad con GitHub Copilot

Desarrollo de software con GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Cuando los bugs se vuelven vulnerabilidades

 

nanobanana: half: Un desarrollador detectando un pequeño bug inofensivo en la pantalla de un portátil a un lado, y al otro una figura sombría con datos saliendo de un servidor, ilustración vectorial plana que contrasta ambos escenarios

 

  • El código vulnerable a menudo parece idéntico a otro código
  • Pasa tests, revisiones y a veces llega a producción
  • 🤖 Copilot puede actuar como revisor de seguridad
Desarrollo de software con GitHub Copilot

Una función vulnerable

 

def get_user(username):
    query = f"SELECT * FROM users \
WHERE username = '{username}'"
    return db.execute(query)

 

Un atacante puede inyectar SQL:

  • Saltarse la autenticación por completo
  • Volcar toda la tabla users
  • Borrar tu base de datos
Desarrollo de software con GitHub Copilot

[screencast]

Desarrollo de software con GitHub Copilot

[screencast]

Desarrollo de software con GitHub Copilot

Prompts de seguridad efectivos

 

Revisión dirigida

Revisa #selection por vulnerabilidades de inyección SQL y XSS

 

Escaneo de todo el código

Escaneo @workspace para credenciales o claves de API hardcodeadas

Desarrollo de software con GitHub Copilot

[screencast]

Desarrollo de software con GitHub Copilot

De la revisión a la prevención

nanobanana: half: Un escudo de seguridad brillante rodeado de iconos de advertencia que representan distintas ciberamenazas, ilustración vectorial plana sobre fondo limpio

 

Generación defensiva de código

Añade validación de entrada a este endpoint. Rechaza tipos inesperados y aplica límites de longitud.

 

No solo detectes vulnerabilidades: evítalas

Desarrollo de software con GitHub Copilot

Integra seguridad en cada sugerencia

 

.github/copilot-instructions.md

## Security standards
- Use parameterized queries
- Never hardcode credentials or API keys
- Validate and sanitize all user input
- Use bcrypt or argon2 for password hashing
Desarrollo de software con GitHub Copilot

Reglas de seguridad por lenguaje

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

- Use secrets module instead of random for tokens
- Escape all user input in Jinja2 templates

 

✅ La seguridad pasa a ser parte de cómo escribes código

Desarrollo de software con GitHub Copilot

¡Vamos a practicar!

Desarrollo de software con GitHub Copilot

Preparing Video For Download...