[論文レビュー] Your Code Secret Belongs to Me: Neural Code Completion Tools Can Memorize Hard-Coded Credentials
本稿では、GitHub Copilot や Amazon CodeWhisperer などのニューラルコード補完ツール(NCCT)の出力から、実際のGitHubコードから文脈的に関連するプロンプトを生成することで、ハードコードされた資格情報を抽出するHCRというツールを提案する。研究では、NCCTが訓練データ内の実際のシークレットを記憶し漏洩する可能性があることを示し、Copilotから2,702件の有効な資格情報を、CodeWhispererから129件を抽出した。それぞれ3.6%および5.4%が実際の有効なシークレットであった。
Neural Code Completion Tools (NCCTs) have reshaped the field of software engineering, which are built upon the language modeling technique and can accurately suggest contextually relevant code snippets. However, language models may emit the training data verbatim during inference with appropriate prompts. This memorization property raises privacy concerns of NCCTs about hard-coded credential leakage, leading to unauthorized access to applications, systems, or networks. Therefore, to answer whether NCCTs will emit the hard-coded credential, we propose an evaluation tool called Hard-coded Credential Revealer (HCR). HCR constructs test prompts based on GitHub code files with credentials to reveal the memorization phenomenon of NCCTs. Then, HCR designs four filters to filter out ill-formatted credentials. Finally, HCR directly checks the validity of a set of non-sensitive credentials. We apply HCR to evaluate three representative types of NCCTs: Commercial NCCTs, open-source models, and chatbots with code completion capability. Our experimental results show that NCCTs can not only return the precise piece of their training data but also inadvertently leak additional secret strings. Notably, two valid credentials were identified during our experiments. Therefore, HCR raises a severe privacy concern about the potential leakage of hard-coded credentials in the training data of commercial NCCTs. All artifacts and data are released for future research purposes in https://github.com/HCR-Repo/HCR.
研究の動機と目的
- 商用ニューラルコード補完ツール(NCCT)が、訓練データ内のハードコードされた資格情報を記憶し、漏洩するかどうかを調査すること。
- 現実的なコードコンテキストを用いたシステム的な手法を開発し、記憶されたシークレットを同定・抽出すること。
- 特にAPIキー やトークンなどの機密資格情報に関して、NCCTの実世界での導入におけるプライバシーリスクを評価すること。
- ブラックボックスアクセスのみを前提としても、攻撃者がプロンプト工学を用いてNCCTから実際の有効なシークレットを抽出できることを示すこと。
- モデル開発者およびユーザーに対して、資格情報漏洩を防ぐための予防的対策の必要性を啓発すること。
提案手法
- GitHubのシークレットスキャンリストを用いて、18種類の一般的なシークレットタイプ(例:AWSキー、Stripeトークン)を特定する。
- コードファイル内のシークレットパターンを自動的に同定できるように、正規表現(regex)を設計する。
- GitHubからシークレットを含むコードファイルを収集し、シークレットを削除した後、その修正済みコードをプロンプトとして使用し、NCCTが欠落した資格情報を補完するように誘導する。
- 本物のシークレットとランダム文字列を区別するために、4つのフィルタを適用する:正規表現パターン一致、エントロピーのしきい値、フォーマット検証、およびサービス固有の構文チェック。
- ブラックボックスクエリを用いてNCCTの応答を評価し、直接アクセスまたはドキュメンテーションの照合によって抽出されたシークレットを検証する。
- 2つの商用NCCT、GitHub Copilot および Amazon CodeWhisperer を用いた大規模な評価を実施する。
実験結果
リサーチクエスチョン
- RQ1GitHub Copilot や Amazon CodeWhisperer などの商用NCCTは、コード補完中にハードコードされた資格情報を訓練データからそのままで記憶し、出力することができるか?
- RQ2実際のコードコンテキストを用いたプロンプト工学は、NCCT内のシークレットの記憶を誘発するためにどの程度効果的か?
- RQ3抽出されたシークレットのうち、合成または無効な文字列ではなく、実際の有効な資格情報である割合はどの程度か?
- RQ4APIキー やOAuthトークンなどの異なるシークレットタイプでは、記憶および漏洩リスクにどのような差が生じるか?
- RQ5モデルアーキテクチャの変更なしに、NCCTにおけるシークレット漏洩を防ぐために実行可能で効果的な対策は何か?
主な発見
- HCRは、900件のテストプロンプトを用いてGitHub Copilotから2,702件の有効な資格情報を正常に抽出した。そのうち3.6%が実際の有効なシークレットであった。
- Amazon CodeWhispererは129件の有効なシークレットを返し、そのうち5.4%が実際の有効な資格情報であった。これは顕著な記憶リスクを示している。
- 2つの運用資格情報が特定された。具体的には、Stripe API環境で有効かつ動作確認済みの2つのStripeテストキーであった。
- 本研究は、シークレットを含む公開コードリポジトリでトレーニングされたNCCTが、適切なプロンプトを受けることで、その内容をそのままで記憶・漏洩する可能性があることを確認した。
- 攻撃はブラックボックス環境でも効果的であり、モデルの重みや内部パrameterにアクセスする必要がない。
- 結果は、広く使用されているAIコーディングアシスタントにおける深刻なプライバシー脆弱性を浮き彫りにし、NCCTにおけるデータの洗練と出力フィルタリングの改善の必要性を強調している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。