はい、GitHubのCopilotは(実際の)秘密を漏洩する可能性があります
はい、GitHubのCopilotは(実際の)秘密を漏洩するかもしれません
最近では、ChatGPTやOpenAI GPTのような高度な言語モデルや技術の倫理的およびプライバシーに関する懸念が増えています。これらの懸念は、そのようなモデルを使用することの潜在的なリスクについて重要な問題を提起しています。ただし、注目すべきはこれらの汎用的な言語モデルだけでなく、コード補完アシスタントなどの専門ツールも独自の懸念を抱えています。
GitHubのコード生成ツールCopilotは、発売から1年経った現在、100万人の開発者によって使用され、2万以上の組織に採用され、30億行以上のコードを生成しているとGitHubのブログ記事で発表されました。
しかし、創設以来、著作権問題、プライバシー懸念、そして安全でないコード提案(具体例はコードに秘密をハードコーディングする危険な提案を含む)など、関連する法的リスクについての懸念が多く提起されています。
現在、これらの新たに宣伝された生産性向上ツールに関連する潜在的なリスクを正確に評価するために、包括的なセキュリティ調査が行われています。
- 「初めに、AWS上でMONAI Deployを使用して医療画像AI推論パイプラインを構築しましょう!」
- 「Amazon CodeWhispererで持続可能性を最適化しましょう」
- テストに合格する:NVIDIAがMLPerfベンチマークでジェネラティブAIのトレーニングをターボチャージします
このブログ記事では、香港大学の最新研究によるGitHubのCopilotおよびAmazonのCodeWhispererの悪用可能性をテストし、モデルのトレーニング中に露出した秘密情報を収集する試みに深く踏み込みます。
GitGuardianの2023年版Secrets Sprawの調査結果によれば、GitHub上にはハードコードされた秘密情報が非常に普及しており、2022年には新たに1000万件の秘密情報が検出され、1年前の600万件から67%増加しています。
CopilotがGitHubデータでトレーニングされていることを考慮すると、コーディングアシスタントが悪意のある行為者によって本物の秘密情報がコードの提案で明らかにされる可能性があるということは懸念すべきです。
ハードコードされた資格情報の抽出
この仮説をテストするために、研究者たちはLLM(Language Model)から資格情報を抽出するためのプロンプト構築アルゴリズムの実験を行いました。
結論は明確です:GitHubコードスニペットから900以上のプロンプトを構築することで、Copilotから2,702件のハードコードされた資格情報とCodeWhisperから129件の秘密情報を正常に収集することに成功しました(偽陽性は以下で説明する特別な方法でフィルタリングされました)。
驚くべきことに、その中には少なくとも200件、つまり7.4%(それぞれ18件と14%)の本物のハードコードされた秘密情報がGitHubで特定されました。研究者はこれらの資格情報がまだ有効であるかどうかは確認していませんが、これはこれらのモデルが攻撃の手段として悪用される可能性がありますことを示唆しています。これにより、予測性の高いリークした資格情報の抽出および妥協が可能になります。
プロンプトエンジニアリングマシンの設計
この研究のアイデアは、攻撃者が適切なプロンプトを作成することで秘密情報を抽出できるかどうかを検証することです。それを試すために、研究者たちはプロンプトテストマシン(Hard-coded Credential Revealer、HCR)を構築しました。
このマシンは記憶された秘密情報をトリガーする可能性を最大化するために設計されています。そのためには、モデルに秘密情報を出力させる強力なプロンプトを作成する必要があります。このプロンプトを構築するために、まずは正規表現パターンを使用してGitHub上でハードコードされた秘密情報を含むファイルを検索します。その後、元のハードコードされた秘密情報は伏せられ、マシンはモデルにコードの提案を求めます。
もちろん、有効な資格情報を抽出するためには、モデルに何度もリクエストする必要があります。なぜなら、モデルはしばしば「非現実的な」資格情報を出力するためです。
また、システムにログインするための運用可能な資格情報を見つけるためには、多くのプロンプトをテストする必要があります。
この研究では、GitHub上のコードスニペットを識別するために18のパターンが使用されます。これは、18種類の異なる秘密情報(AWSアクセスキー、Google OAuthアクセストークン、GitHub OAuthアクセストークンなど)に対応しています。
18種類の秘密情報が完全に網羅されているわけではありませんが、ソフトウェア開発者が広く使用し、簡単に特定できるサービスを代表的に示しています。
その後、秘密情報は元のファイルから削除され、コードアシスタントが新しい文字列の提案を行います。これらの提案は、4つのフィルタを通過し、できるだけ多くの偽陽性を排除します。
秘密は以下の条件を満たさない場合は破棄されます:
- 正規表現パターンに一致しない場合
- エントロピーが十分でない(ランダムではない、例:
AKIAXXXXXXXXXXXXXXXX
) - 認識可能なパターンが存在する場合(例:
AKIA3A3A3A3A3A3A3A3A
) - 一般的な単語が含まれる場合(例:
AKIAIOSFODNN7EXAMPLE
)
これらのテストをすべてパスした秘密は有効と見なされ、実際に真の秘密(他のトレーニングデータのどこかにハードコードされている可能性のある)と考えられます。
結果
Copilotからの8,127件の提案のうち、2,702件の有効な秘密が正常に抽出されました。したがって、全体の有効率は2702/8127 = 33.2%であり、平均して1つのプロンプトにつきCopilotは2702/900 = 3.0個の有効な秘密を生成します。
CodeWhispererは合計736のコードスニペットを提案し、そのうち129個の有効な秘密を特定しました。したがって、有効率は129/736 = 17.5%です。
この研究では、有効な秘密は実際の秘密であることを意味しません。これは、フィルターを正常に通過し、実際の秘密に対応する特性を持っていることを意味します。
では、これらの秘密が本物の運用資格情報であるかどうかをどのように知ることができるのでしょうか? 著者は、倫理的な考慮のために有効な資格情報の一部を試しただけであると説明しています(開発者がプログラムをテストするためのStripeテストキーなどのテストキー)。
代わりに、著者らは収集された有効な資格情報の真正性を検証する別の方法を探しています。彼らはGitHubで秘密の記憶や出現箇所を評価したいと考えています。
研究の残りの部分は、有効な秘密の特性に焦点を当てています。彼らはGitHubコード検索を使用して秘密を探し、最初に削除された秘密と同一の秘密である強く記憶された秘密と、他の1つまたは複数のリポジトリから取得された弱く記憶された秘密を区別します。最後に、GitHub上で見つけることができなかった秘密があり、他の情報源から来た可能性があります。
影響
この研究論文は、GitHub CopilotやAmazon CodeWhispererなどのコード補完ツールによる重要なプライバシーのリスクを明らかにしています。調査結果は、これらのモデルがトレーニングデータに存在する元の秘密だけでなく、他の場所で遭遇した他の秘密も示唆していることを示しています。これにより、機密情報が漏洩し、重大なプライバシー上の懸念が生じます。
例えば、開発者によって漏洩されたハードコードされた秘密がgitの履歴から削除されたとしても、研究で説明されたプロンプト技術を使用して攻撃者はそれを抽出することができます。研究は、これらのモデルがトレーニングデータに存在する有効で稼働する秘密を示唆することができることを実証しています。
これらの結果は、武漢大学の研究者によって行われた最近の別の研究によっても裏付けられています。その研究は、CopilotがGitHubプロジェクトから生成した435個のコードスニペットを分析し、複数のセキュリティスキャナを使用して脆弱性を特定しました。
この研究によると、Copilotで生成されたコードスニペットのうち35.8%がセキュリティ上の脆弱性を示していました。プログラミング言語の種類に関係なく、特定されたセキュリティの問題をCommon Weakness Enumerations(CWE)で分類すると、コードスニペットの1.15%に「ハードコードされた資格情報」(CWE-798)が存在し、特定された600のCWEのうち1.5%を占めました。
緩和策
LLMへのプライバシー攻撃への対策は、プログラマと機械学習エンジニアの両方からの努力が必要です。
ハードコードされた資格情報の発生を減らすために、著者は集中管理された資格情報管理ツールとコードスキャニングの使用を推奨しています。
コード補完モデルの開発のさまざまな段階では、以下のアプローチが採用されることがあります:
- 事前トレーニングの前に、ハードコードされた資格情報をトレーニングデータから除外するためにクリーニングを行う。
- トレーニングまたはファインチューニング中に、差分プライバシー(DP)などのアルゴリズムによる防御を使用してプライバシーを保護する。DPはモデルのプライバシーを強力に保証します。
- 推論中に、モデルの出力を事後処理して秘密をフィルタリングする。
結論
この研究は、GitHub CopilotやAmazon CodeWhispererなどのコード補完ツールに関連する重大なリスクを明らかにしています。調査者は、プロンプトの作成とGitHubでの公開コードの分析を通じて、これらのモデルから多くの有効なハードコードされた秘密を成功裏に抽出しました。
この脅威を軽減するために、プログラマは中央集権的な資格情報管理ツールとコードスキャンを使用して、ハードコーディングされた資格情報の含みを防ぐべきです。機械学習エンジニアは、トレーニングデータからこれらの資格情報を除外する、差分プライバシーのようなプライバシー保存技術を適用する、推論中のモデルの出力から秘密を除外するなどの対策を実施できます。
これらの調査結果はCopilotとCodeWhispererを超え、すべてのニューラルコード補完ツールにおけるセキュリティ対策の必要性を強調しています。開発者はツールをリリースする前に、この問題に対処するために積極的な措置を取る必要があります。
結論として、大規模な言語モデルとコード補完ツールに関連するプライバシーのリスクや機密情報の保護には、プログラマ、機械学習エンジニア、ツール開発者の協力が必要です。中央集権的な資格情報管理、コードスキャン、トレーニングデータからのハードコーディングされた資格情報の除外など、推奨される緩和策を実施することで、プライバシーのリスクを効果的に軽減できます。これらのツールとそれらが扱うデータの安全性とプライバシーを確保するために、すべての関係者が協力することが重要です。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- NVIDIAはAPECの国々と協力し、人々の生活を変え、機会を増やし、成果を改善します
- クラウドウォッチの高度なメトリクス、ダッシュボード、アラートを使用してAWSのコストを最適化する
- 「Google AIがMetNet-3を導入:包括的なニューラルネットワークモデルで天気予報を革新する」
- この中国のAIモデル、Baichuan2-192kモデルはChatGPTやClaude2を超えることができるのか? 最長のコンテキストモデルを持つBaichuan Intelligentが公開した、この中国のスタートアップ「Baichuan Intelligent」のモデルに会いましょう
- サムスンは、「Gauss」という新しいAI言語モデルを発表し、ChatGPTの支配に挑む
- 『circ2CBAを紹介 circRNA-RBP結合サイトの予測を革新する新しい深層学習モデル』
- 「スタンフォードのこのAI論文では、スパースで解釈可能なニューラルネットワークのためのコードブック特徴が紹介されています」