13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cursorでセキュリティ情報を漏洩しかけた件

Posted at

GitのHookを使ってleakチェックを自動化した話

こんにちは。最近はCursor(AIコーディング支援ツール)を使っての開発が手放せなくなってきました。非常に便利で、ちょっとした実装のスピードが格段に上がります。

でも、便利な一方で「生成されたコードを自分でしっかり確認する」という基本を、つい忘れがちになってしまうことも…。


事件:Secret Keyをコミットしてしまった話

先日、DjangoプロジェクトをCursorで構築していたときのことです。

Cursorが自動で生成してくれたコードに、なんと settings.pyDjangoのSECRET_KEYがべた書きされていました。それに気づかないままコミット…。

# settings.pyの一部
SECRET_KEY = 'django-insecure-xyz123abc456...'

その後もかなりの作業をこのブランチで続けてしまいました。


幸い、Push前に気づいた

ふとしたタイミングでコードレビューしているときに、SECRET_KEYが直書きされていることに気付き、rebaseで該当のコミットを修正

ギリギリpush前だったのが救いでした。


今後に備えて:Git Hook + gitleaksで自動チェック

この件をきっかけに「同じことを繰り返したくない」と思い、Gitのpre-commit hookgitleaks を使って機密情報のリークチェックを入れるようにしました。


設定手順

1. gitleaksをインストール

Macの場合:

brew install gitleaks  # macOSの場合
# または公式リリースからバイナリをダウンロード

Windowsの場合:

  1. gitleaksのリリースページ にアクセス
  2. 最新版の gitleaks_x.x.x_windows_x64.exe をダウンロード

Windows版が見当たらないことがあります。
リストが折りたたまれているので下部にある (show all) のようなリンクを押してみてください。

  1. 任意の場所(例: C:\tools\gitleaks)に保存
  2. そのフォルダを Windows の環境変数 PATH に追加
  3. Git Bash を開いて以下のコマンドで疎通確認:
gitleaks version

2. .git/hooks/pre-commit に以下を追加

#!/bin/sh
echo "Running gitleaks..."
gitleaks detect --source . --staged
if [ $? -ne 0 ]; then
  echo "gitleaks: 機密情報が含まれています。コミットを中止します。"
  exit 1
fi

3. 実行権限をつける

chmod +x .git/hooks/pre-commit

これで、コミット前にgitleaksが自動で走り、問題があるとブロックしてくれるようになります。


試しにもう一度やってみた

試しに以下のようなコードを入れてコミットしようとすると:

SECRET_KEY = 'django-insecure-1234abcd5678efgh'

以下のようにコミットがブロックされます。

Running gitleaks...
gitleaks: 機密情報が含まれています。コミットを中止します。

安心ですね。


まとめ

  • Cursorは超便利。でも生成されたコードの中身の確認は開発者の責任
  • Secret Keyのコミットに気付かず進めてしまったけど、push前にrebaseで修正できた
  • Git Hook × gitleaks で自動チェックの仕組みを導入して防止策を構築

AIが生成するコードと付き合うためには、人間側がルールを整えておくことが大事だと痛感しました。便利な時代だからこそ、こういう仕組みがますます重要になってきます。


おまけ:発展あるかも?

今回は一番お手軽にできそうな方法を試しましたが、もっと高速な方法やチーム開発に向いた方法などもありそうなのでそちらも試せたら記事にしていきたいと思います。


ご意見やフィードバックがあれば、ぜひコメントでお願いします!

13
14
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?