🐈

LLMに脆弱性を検出させる

2024/12/14に公開

脆弱性、大丈夫?

生成AIにコードを書いてもらう機会が、爆発的に増えました。
一週間程度でプロダクトを作成し、デプロイまでできてしまうスピード感です。

一方で、スピードを重視して脆弱性についておろそかになっていないでしょうか?

ここでは、Cursorを利用して、コードから脆弱性検出が可能なプロンプトをご紹介します。

さっそくプロンプト

下記がそのプロンプトです。
技術スタック」の箇所のみ、自分用に書き換えれば使えます。

##### 作成物 #####
webアプリケーション

##### 技術スタック #####
- React
- Django
- postgresql

##### 命令 #####
以下に、対策すべきwebアプリケーションの脆弱性を、優先度が高い順に一覧化した。
作成物が、セキュリティ上問題ないか、脆弱性がないかをチェックした後に、対策についても出力せよ。

1. **インジェクション攻撃(SQLインジェクションなど)**
2. **認証の脆弱性(不適切な認証、認可の欠如)**
3. **機密データの露出**
4. **オブジェクトレベル認証の不備**
5. **セキュリティ設定ミス**
6. **クロスサイトスクリプティング(XSS)**
7. **不正なデシリアライズ**
8. **既知の脆弱性を含むコンポーネントの使用**
9. **不十分なログ管理と監視**
10. **クロスサイトリクエストフォージェリ(CSRF)**
11. **アクセス制御の不備**
12. **不正なリダイレクトやフォワード**
13. **暗号化不足**
14. **セッション管理の脆弱性**
15. **サービス拒否(DoS)攻撃**
16. **競合状態**
17. **XML外部エンティティ(XXE)攻撃**
18. **弱いパスワードストレージ**
19. **入力検証不足**
20. **セキュリティヘッダーの欠如(CSP、HSTSなど)**
21. **API経由のコードインジェクション**
22. **クリックジャッキング**
23. **クラウドストレージの誤設定**
24. **古いライブラリや依存関係の使用**
25. **不正なファイルアップロード**
26. **エラーメッセージからの情報漏洩**
27. **サーバーサイドリクエストフォージェリ(SSRF)**
28. **中間者攻撃(MITM)**
29. **コンテンツの改ざん**
30. **セキュアな通信経路の欠如**

使い方

Cursorの@Codebaseを使います。
モデルはo1-miniがおすすめです。

  1. cursorのChatをCtrl + Lで開く
  2. @Codebaseを入力
  3. さっきのプロンプトを貼り付け

それだけで以下のような、脆弱性の検出と対応が出力できます。

チャット入力

出力

終わりに

お使いください。

Discussion