Segurança com o GitHub Copilot

Desenvolvimento de Software com GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Quando bugs viram vulnerabilidades

 

nanobanana: half: Um desenvolvedor detectando um bug pequeno e inofensivo na tela do laptop de um lado, e do outro uma figura sombria com dados saindo de um servidor, ilustração vetorial plana contrastando os cenários

 

  • Código vulnerável muitas vezes parece idêntico a outro código
  • Passa em testes, revisões e às vezes vai pra produção
  • 🤖 O Copilot pode atuar como revisor de segurança
Desenvolvimento de Software com GitHub Copilot

Uma função vulnerável

 

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

 

Um atacante pode injetar SQL:

  • Bypassar a autenticação
  • Extrair toda a tabela users
  • Deletar seu banco
Desenvolvimento de Software com GitHub Copilot

[screencast]

Desenvolvimento de Software com GitHub Copilot

[screencast]

Desenvolvimento de Software com GitHub Copilot

Prompts de segurança que funcionam

 

Revisão direcionada

Revisar #selection para SQL injection e XSS

 

Varredura no repositório

@workspace para achar credenciais ou chaves de API hardcoded

Desenvolvimento de Software com GitHub Copilot

[screencast]

Desenvolvimento de Software com GitHub Copilot

Da revisão à prevenção

nanobanana: half: Um escudo de segurança brilhante cercado por ícones de alerta que representam diferentes ameaças cibernéticas, ilustração vetorial plana em fundo limpo

 

Geração de código defensivo

Adicione validação de entrada neste endpoint. Rejeite tipos inesperados e imponha limites de tamanho.

 

Não só encontre vulnerabilidades — previna

Desenvolvimento de Software com GitHub Copilot

Incorpore segurança em toda sugestão

 

.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
Desenvolvimento de Software com GitHub Copilot

Regras de segurança por linguagem

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

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

 

✅ Segurança vira parte de como você escreve código

Desenvolvimento de Software com GitHub Copilot

Vamos praticar!

Desenvolvimento de Software com GitHub Copilot

Preparing Video For Download...