コンテンツにスキップするには Enter キーを押してください

GitLabのAIアシスタントが開発者をコード盗難にさらした

GitLabのロゴとモットーが表示された会議用ディスプレイボード

出典: Alamyストックフォト経由のConstantine Soutiaguin

GitLabの人工知能(AI)アシスタントにおける間接的なプロンプトインジェクションの欠陥により、攻撃者がソースコードを盗んだり、被害者を悪意のあるウェブサイトに誘導したりすることが可能だったかもしれません。

“Duo”は、オープンソース(OSS)リポジトリのユーザーがコードを分析し、変更を提案し、コードの記述、テスト、マージの一部を自動化するために使用できる組み込みツールで、GitHubのCopilotに相当します。しかし、Legit Securityの研究者が最近発見したように、Duoはその入出力に対してあまり厳密ではありませんでした。攻撃者はコードに秘密のプロンプトを忍び込ませることで、フィッシング攻撃を行ったり、マルウェアを仕込んだり、機密データを流出させたりすることができます。

実際、プロンプトインジェクションは大規模言語モデル(LLM)を搭載したチャットボット全般にわたるシステム的なリスクですが、GitLabのDuoは攻撃者の手にかかると特に強力です。

“特に興味深いのは、DevSecOpsパイプライン全体にわたる深い統合です。問題からCI/CDパイプライン、ソースコードまで。Duoは豊富で相互リンクされたプロジェクトデータを分析するため、悪用の表面積が広がります。”と、Legit Securityのシニアセキュリティ研究者であるOmer Mayraz氏は説明します。”Duoの応答はMarkdownを使用してブラウザに直接レンダリングされるため、統合開発環境(IDE)やチャット端末にLLMの出力を保持するツールには常に存在しないクライアントサイドのインジェクションリスク(HTMLインジェクション)を導入しました。”

関連:オーストラリア人権委員会がデータ漏洩で文書を流出

GitLabにおける間接的なプロンプトインジェクション

Legit Securityの研究者が最初に発見したのは、GitLabに公開したコードにAIプロンプトを忍び込ませることでDuoに間接的に影響を与えることができるということでした。しかし、すぐに問題は実際にはそれ以上に広範囲であることに気づきました。

どの開発者にも必要なオールインワンのアシスタントであるために、DuoはGitLabサイトのあらゆる側面と関わる必要があります。ソースコードだけでなく、コミットメッセージや説明、問題に関連するコメントやマージリクエストも含まれます。どうやら、これらの要素をソースコードよりも厳密に扱うことはなく、ユーザーがサイトとやり取りするあらゆる場所に隠されたプロンプトを実行していました。

したがって、攻撃者は自分のコードに感染させるだけでなく、他のプロジェクトのマージリクエストやコメントに悪意のあるプロンプトを仕込むことも可能でした。Duoの入力サニタイズの欠如を悪用することは一つのことですが、もし彼らが人間の開発者から何をしているのかを隠したい場合、それも問題ではありませんでした。AIの仲間は、エンコードされたプロンプトや、ウェブページの白い背景に白いテキストで書かれたプロンプトに対してもためらいなく行動していました。

関連:新しい英国のセキュリティガイドラインがソフトウェア開発を再構築

これを知っていると、あらゆる種類のサイバー攻撃のシナリオが可能でした。ハッカーは、Duoの応答に悪意のあるURLを挿入し、それを正当で安全に見せることができました。Duoのコード提案を操作してマルウェアを含めたり、Duoに悪意のあるマージリクエストが完全に採用されるべきであるとコードレビュアーに伝えさせたりすることも可能でした。

しかし、最悪なのは、Duoがその応答を生成する方法によって可能になった別のシナリオでした。

Duoを介したHTMLインジェクション

簡単に言えば、Duoはその応答をMarkdownでフォーマットし、意識の流れのようにブラウザが読むためのHTMLを行ごとに出力します。しかし、応答の全体構造が展開されるのを待たずにHTMLをレンダリングします。したがって、研究者が間接的なプロンプトインジェクションを介してHTMLを供給すると、それを実行可能なHTMLとして解釈しました。これにより、Duoを介して効果的にコードを実行することができました。

そして、OSSリポジトリのようなGitLabで最悪のことは何でしょうか?研究者たちは、マージリクエストの説明やコミットコメントに隠すことができる概念実証(PoC)プロンプトを設計しました。被害者がDuoにそれをレビューさせると、Duoは悪意のあるHTMLをブラウザに渡し、ブラウザは研究者のサーバーにGETリクエストを送り、被害者のプライベートソースコードを密かに持ち出しました。

関連:Commvault: 脆弱性パッチは意図通りに機能

同じトリックは、プラットフォーム上で交換される他の種類の機密データにアクセスするためにも使用できます。”現実のシナリオを考えてみてください。GitLabの従業員や信頼できる貢献者が、GitLabのゼロデイ脆弱性を説明する内部問題にアクセスできる場合、そのユーザーが毒されたプロジェクトでDuoとやり取りすると、Duoはその問題から機密コンテンツを漏らす可能性があります。これはコードを超えて製品のセキュリティ、プライベートな開示、組織の秘密にまでリスクを拡大します。”とMayraz氏は説明します。

Legit Securityは2月23日にDuoの脆弱性をGitLabに報告しました。GitLabはHTMLレンダリングの問題を認識し、修正をリリースしましたが、毒されたDuoの応答につながる他のプロンプトインジェクションリスクに関しては混乱が残っていました。Dark Readingが5月19日にGitLabに連絡した後、GitLabはLegit Securityとのコミュニケーションを再開しました。5月21日現在、セキュリティ研究者たちは、すべての問題がGitLabチームによって対処されたと報告しています。”Duoの応答に影響を与えることはまだ可能ですが、悪意のある方法ではありません。”と彼らは言います。

翻訳元: https://www.darkreading.com/application-security/gitlab-ai-assistant-opened-devs-to-code-theft

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です