オープンソースブログの潜在的セキュリティリスク:個人情報漏洩を防ぐ方法

概要

GitHub Pages は、無料で利用できるオープンソースブログのホスティングプラットフォームとして、その手軽さと無料性から広く人気を集めています。しかし、無料版ではパブリックアクセスを提供するためにリポジトリを公開する必要があるという特性から、予期せぬ情報漏洩リスクが生じる可能性があります。

記事の内容自体に機密情報が含まれていなくても、ソースコードリポジトリが意図せず個人のプライバシー情報を漏らすことがあるのです。本記事では、こうした潜在的なリスクについて探り、実用的な解決策を提供します。

🔍 よくある情報漏洩の種類

中文のセンシティブワード

以下の中国語の語彙は、個人の機密情報を含む可能性があるため、コードをコミットする前にチェックすることをお勧めします:

  • パスワード
  • アカウント
  • 身分証
  • 銀行カード
  • アリペイ
  • ウィチャット
  • 電話番号
  • 家庭住所
  • 勤務先
  • 社保カード
  • 運転免許証
  • パスポート
  • クレジットカード

英文のキーワード

英語環境では、以下のキーワードに特に注意が必要です:

  • username
  • password
  • account
  • key
  • ini
  • credential
  • card
  • bank
  • alipay
  • wechat
  • passport
  • id
  • phone
  • address
  • company

正規表現による検知

以下の正規表現を使用して、リポジトリ内の潜在的な機密情報をスキャンできます:

(パスワード|アカウント|身分証|銀行カード|アリペイ|ウィチャット|電話番号|家庭住所|勤務先|社保カード|運転免許証|パスポート|クレジットカード|username|password|passwd|account|key\s*:|\.ini|credential|card|bank|alipay|wechat|passport|id\s*:|phone|address|company)

VSCode でのスキャン

VSCode をブログエディタとして使用している場合は、以下の手順で全サイトの機密情報スキャンを行えます:

  1. VSCode を開く
  2. ショートカットキー Ctrl+Shift+F(Windows/Linux)または Cmd+Shift+F(Mac)でグローバル検索を開く
  3. 検索ボックスに上記の正規表現を入力
  4. 正規表現モードを有効化(検索ボックス横の .* アイコンをクリック)
  5. 検索をクリックし、結果に表示される潜在的機密情報を確認

VSCode 正規表現検索の例

🕰️ Git 履歴での情報漏洩

Git のバージョン履歴には、削除されたファイルの機密情報が残っている可能性があります。現在のコードに機密情報が含まれていなくても、過去のコミット履歴に残っていることがあります。

Git 履歴のスキャン

シンプルなスクリプトを使用して、オープンソースブログの過去のコミット情報をスキャンし、情報漏洩の有無を確認できます。

Git 履歴のクリーニング

Git 履歴から機密情報を確実にクリーニングする必要がある場合は、以下の方法を使用できます:

⚠️ 重要なお知らせ:以下の操作を実行すると、Git 履歴が永久に削除されます。必ず重要なデータをバックアップし、コマンドの意味を完全に理解した上で実行してください。

# 最初のコミットまでリセット(作業ディレクトリの変更は保持)
git reset --soft ${first-commit}

# リモートリポジトリへ強制プッシュ
git push -f

注意:完全なコミット履歴を保持する必要がある場合は、上記の方法は使用しないでください。

🛠️ 専門スキャンツールの推薦

手動でのチェックに加え、より包括的なスキャンを行う専門ツールを使用することもできます:

TruffleHog

TruffleHog は、漏洩した認証情報の発見、検証、分析を行う強力なツールです。

TruffleHog ロゴ

特徴:

  • GitHub Star 数:17.2k
  • Fork 数:1.7k
  • 複数のスキャンモードをサポート
  • 深く埋め込まれた機密情報を検出可能

🔒 安全なブログ公開の代替案

公開リポジトリによるセキュリティリスクを懸念する場合は、以下の代替案を検討できます:

1. GitHub Pro の使用

  • GitHub Pro では、プライベートリポジトリを Pages で公開可能
  • 料金:月額約 4 ドル
  • 優点:ソースコードのプライバシーを保持しつつ、GitHub Pages の便利さを享受

2. Cloudflare Pages の使用

  • リポジトリをプライベートに設定
  • Cloudflare Pages でデプロイ
  • 優点:完全無料、プライベートリポジトリをサポート

3. ダブルリポジトリ戦略

  • プライベートリポジトリ:編集中の記事や下書きを保存
  • 公開リポジトリ:最終的に公開する記事のみ保存
  • 優点:下書きや未公開コンテンツの保護を最大化
  • 注意:giscus などの GitHub 依存のコメントシステムを使用する場合は、依然として公開リポジトリが必要

📝 最適プラクティスの提案

  1. 定期的なレビュー:定期的にスキャンツールを使用して、リポジトリ内の機密情報をチェック
  2. コミット前の確認:コードをコミットする前に、機密情報が含まれていないか確認
  3. .gitignore の使用:正しく .gitignore ファイルを設定し、機密ファイルを除外
  4. 環境変数:機密設定を環境変数に保存し、コードリポジトリに含めない
  5. 下書き管理:下書きが誤ってコミットされないよう、専用の下書き管理システムの使用を検討

🎯 まとめ

オープンソースブログは便利ですが、確かに情報漏洩のリスクが存在します。適切なツールと方法を使用することで、こうしたリスクを効果的に低減できます。適切な公開プラットフォームと戦略を選択すれば、オープンソースの利便性を享受しつつ、個人のプライバシーを保護できます。

情報セキュリティは継続的なプロセスであり、常に警戒心を持つ必要があることを忘れないでください。

参考リソース