Безопасность с GitHub Copilot

Разработка программного обеспечения с GitHub Copilot

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

Когда ошибки становятся уязвимостями

 

nanobanana: half: Разработчик замечает небольшую безвредную ошибку на экране ноутбука, а рядом — тёмная фигура с потоком данных, вытекающим из сервера, плоская векторная иллюстрация, контрастирующая два сценария

 

  • Уязвимый код зачастую выглядит как обычный
  • Проходит тесты, ревью и иногда попадает в продакшн
  • 🤖 Copilot может выступать ревьюером безопасности
Разработка программного обеспечения с GitHub Copilot

Уязвимая функция

 

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

 

Злоумышленник может внедрить SQL:

  • Полностью обойти аутентификацию
  • Выгрузить всю таблицу users
  • Удалить базу данных
Разработка программного обеспечения с GitHub Copilot

[screencast]

Разработка программного обеспечения с GitHub Copilot

[screencast]

Разработка программного обеспечения с GitHub Copilot

Эффективные промпты для безопасности

 

Точечное ревью

Review #selection for SQL injection and XSS vulnerabilities

 

Сканирование всей кодовой базы

@workspace scan for hardcoded credentials or API keys

Разработка программного обеспечения с GitHub Copilot

[screencast]

Разработка программного обеспечения с GitHub Copilot

От ревью к предотвращению

nanobanana: half: Светящийся щит безопасности в окружении предупреждающих иконок различных киберугроз, плоская векторная иллюстрация на чистом фоне

 

Защитная генерация кода

Add input validation to this endpoint. Reject unexpected types and enforce length limits.

 

Не только находите уязвимости — предотвращайте их

Разработка программного обеспечения с GitHub Copilot

Встройте безопасность в каждое предложение

 

.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
Разработка программного обеспечения с GitHub Copilot

Правила безопасности для конкретных языков

 

.github/instructions/security.instructions.md

applyTo: "**/*.py"

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

 

✅ Безопасность становится частью самого процесса написания кода

Разработка программного обеспечения с GitHub Copilot

Давайте потренируемся!

Разработка программного обеспечения с GitHub Copilot

Preparing Video For Download...