GitHub Copilotによるセキュリティ

GitHub Copilot を使ったソフトウェア開発

Thalia Barrera

AI Engineering Curriculum Manager, DataCamp

バグが脆弱性になるとき

 

nanobanana: half: 一方ではラップトップ画面で小さな無害なバグを発見する開発者、もう一方ではサーバーからデータが流出する影の人物、2つのシナリオを対比したフラットベクターイラスト

 

  • 脆弱なコードは他のコードと見た目が同じなことが多い
  • テスト・レビューを通過し、本番環境に出荷されることもある
  • 🤖 CopilotはAIセキュリティレビュアーとして機能できる
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 を使ったソフトウェア開発

効果的なセキュリティプロンプト

 

対象を絞ったレビュー

#selectionのSQLインジェクションとXSSの脆弱性を確認する

 

コードベース全体のスキャン

@workspaceでハードコードされた認証情報やAPIキーをスキャンする

GitHub Copilot を使ったソフトウェア開発

[screencast]

GitHub Copilot を使ったソフトウェア開発

レビューから予防へ

nanobanana: half: さまざまなサイバー脅威を表す警告アイコンに囲まれた光るセキュリティシールド、クリーンな背景上のフラットベクターイラスト

 

防御的なコード生成

このエンドポイントに入力バリデーションを追加する。予期しない型を拒否し、長さ制限を適用する。

 

脆弱性を発見するだけでなく — 防止する

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...