OpenAIのボットを統合したいとお考えですか?ソフトウェアセキュリティスキャナSocketでそれがどのように機能したかをご紹介します。

Table of Contents

OpenAIのボットを統合したいとお考えですか?ソフトウェアセキュリティスキャナSocketでそれがどのように機能したかをご紹介します。

独占的な機械学習モデルは信頼性が低いですが、それが場合によっては有用であることを妨げるものではありません。

数か月前、JavaScript および Python プロジェクト向けのフリーミアム セキュリティ スキャナーを開発している Socket は、OpenAI の ChatGPT モデル (および最近では GPT-4 モデル) を自社の内部脅威フィードに接続しました。

CEOのフェロス・アブカディジェ氏によると、結果は驚くほど良好だったという。「予想をはるかに上回る成果でした」とアブカディジェ氏はThe Registerへのメールで述べた。「現在、数百の脆弱性とマルウェアパッケージが見つかり、できるだけ早く報告するよう急いでいます。」

Socketのスキャナーは、サプライチェーン攻撃を検出するために設計されました。GitHubアプリまたはコマンドラインツールとして利用可能で、JavaScriptおよびPythonプロジェクトをスキャンし、npmまたはPyPIレジストリからインポートされた可能性のある多数のパッケージに悪意のあるコードが含まれているかどうかを判断します。

Aboukhadijeh氏によると、Socket社はChatGPTを利用した227件の脆弱性を確認したという。これらの脆弱性はそれぞれ異なるカテゴリに分類され、共通の特徴は見られない。

レジスターには、情報の流出、SQL インジェクション、ハードコードされた資格情報、潜在的な権限昇格、バックドアなど、悪意のある動作や安全でない慣行を示す公開済みパッケージの多数の例が提供されました。

いくつかの例はまだ削除されていないため共有しないよう求められましたが、すでに対処済みの例を 1 つ紹介します。

  1. mathjs-min 「Socket社がnpmに報告し、削除されました」とアブカディジェ氏は述べた。「かなりひどいものでした。」
    1. AI分析:「このスクリプトには、重大なセキュリティリスクとなるDiscordトークングラバー機能が含まれています。ユーザーのトークンを盗み、外部サーバーに送信します。これは悪意のある動作です。」
    2. https://socket.dev/npm/package/mathjs-min/files/11.7.2/lib/cjs/plain/number/arithmetic.js#L28

「人間なら納得できるかもしれないが、AIはリスクとしてマークするなど、興味深い効果もいくつかある」とアブカディジェ氏は付け加えた。

これらの判断は多少主観的ですが、AIは危険なコードが本質的に悪意のあるものではないと主張するコメントによって思いとどまることはありません。AIは、インラインコメントを信頼していないことを示すユーモラスなコメントさえも含めます。

  1. trello-enterprise
    1. AI分析:「このスクリプトは、ホスト名、ユーザー名、ホームディレクトリ、現在の作業ディレクトリなどの情報を収集し、リモートサーバーに送信します。作者はバグ報奨金制度のためだと主張していますが、この動作はプライバシーリスクをもたらす可能性があります。また、このスクリプトには、パフォーマンスの問題や応答不能を引き起こす可能性のあるブロッキング操作が含まれています。」
    2. https://socket.dev/npm/package/trello-enterprises/files/1000.1000.1000/a.js

Aboukhadijeh氏は、これらのレジストリに登録されているソフトウェアパッケージは膨大であり、あらゆるファイル、スクリプト、そして構成データの細部までを徹底的に調査するルールを作成するのは困難だと説明した。ルールは脆弱になりがちで、詳細すぎるものを作成したり、経験豊富な人間のレビュー担当者なら見落としてしまうような点を見逃したりすることが多い。

パッケージ レジストリのコーパス全体 (npm の場合は約 130 万、PyPI の場合は約 45 万) に人間による分析を適用するのは現実的ではありませんが、機械学習モデルは、人間のレビュー担当者がより疑わしいコード モジュールに集中できるようにすることで、その不足を補うことができます。

「SocketはChatGPTを使用したAIベースのソースコード分析で、すべてのnpmおよびPyPIパッケージを分析しています」とAboukhadijeh氏は述べています。

パッケージに問題が見つかった場合、レビュー対象としてフラグを立て、ChatGPTに発見事項の簡単な説明を求めます。他のAIベースのツールと同様に、誤検知が発生する可能性があり、この機能に関するフィードバックがさらに集まるまで、これをブロック要因として有効化しません。

Aboukhadijeh氏はThe Registerに対し、ChatGPTヘルパーから得られたサンプルレポートを提供しました。このレポートは、悪意のある行為と断定はできないものの、リスクの高い行為を特定しています。このケースでは、機械学習モデルは「このスクリプトは、ユーザー名、ホスト名、DNSサーバー、パッケージ情報など、ユーザーのシステムに関する機密情報を収集し、外部サーバーに送信します」と評価しました。

ソケットセキュリティスキャナのChatGPTレポートのスクリーンショット

ソケットセキュリティスキャナのChatGPTレポートのスクリーンショット - クリックして拡大

Socket ChatGPTアドバイザリのスクリーンショット

ChatGPT ベースのソケット アドバイザリは次のようになります。クリックして拡大します。

Aboukhadijeh氏によると、Socketは開発者が作業に支障をきたすことなく、リスクに関する情報に基づいた意思決定を行えるように設計されているとのことです。そのため、一般的な攻撃ベクトルであるインストールスクリプトすべてについて警告を発すると、過剰なノイズを生み出す可能性があります。大規模な言語モデルを用いてこれらのスクリプトを分析することで、警告の音量が下がり、開発者が真の問題を認識するのに役立ちます。そして、これらのモデルはますます高性能化しています。

「GPT-4はゲームチェンジャーであり、関連するすべてのコードがその範囲内にある限り、静的解析ツールを置き換えることができます」とアブカディジェ氏は述べた。

「理論上、適切なデータがAIに提示されれば、AIが検出できない脆弱性やセキュリティ上の問題は存在しません。この方法でAIを使用する際の主な課題は、OpenAIチームに数百万ドルを誤って寄付することなく、適切なデータを適切な形式でAIに提供することです。:)」 – 後述するように、これらのモデルの使用にはコストがかかる可能性があります。

「ソケットは、文字数、ファイル間の参照、アクセスできる機能、分析の優先順位付けなどに関するGPT自身の制限のために、GPT-4が正しい分析を行えるようにガイドするための追加のデータとプロセスを供給しています」と彼は述べた。

「従来のツールは、人間を支援するのと同じように、AIの改良に役立っています。その結果、人間は、ますます人間に近い能力を持ちながらも自動的に実行できる別のツールの恩恵を受けることができるのです。」

  • npmレジストリのセーフワードはSocketです
  • GitHub Copilotは新しいトリックを学び、今年のモデルを採用しました
  • ユーロポールは、ChatGPTがすでに犯罪を助長していると警告
  • 偽のChatGPT拡張機能がFacebookのCookieを盗む

これは、大規模言語モデルが有害ではない、あるいはこれまで以上に精査されるべきではないという意味ではありません。有害であり、むしろそうあるべきです。むしろ、Socketの経験は、ChatGPTや類似のモデルが、その粗削りな点を除けば、真に有用であり得ることを裏付けています。特に、潜在的な害が、例えば差別的な採用決定や有害なレシピの推奨ではなく、誤ったセキュリティ勧告である場合に有効です。

オープンソース開発者の Simon Willison 氏が最近ブログ記事で指摘したように、これらの大規模な言語モデルにより、彼はプロジェクトをより野心的に進めることができるようになります。

「経験豊富な開発者として、ChatGPT(とGitHub Copilot)は『物事を理解する』ための時間を大幅に節約してくれます」とウィリスン氏は指摘する。「これは単に生産性が向上するだけでなく、プロジェクトに時間を投資する価値があるかどうかを判断するハードルを下げてくれるのです。」

制限事項

Aboukhadijeh氏は、ChatGPTが完璧ではない、あるいは完璧に近いわけでもないことを認めている。コンテキストウィンドウが限られているため、大きなファイルをうまく処理できないと述べ、人間のレビュー担当者と同様に、高度に難読化されたコードを理解するのに苦労する。しかし、どちらの状況でも、より集中的な精査が必要となるため、モデルの限界はそれほど意味がない。

アブカディジェ氏は、これらのモデルをプロンプトインジェクション攻撃に対する耐性を高め、悪意のある活動が複数のファイルに分散している可能性があるクロスファイル分析をより適切に処理できるようにするために、さらなる作業を行う必要があると述べた。

「悪意のある行動が十分に拡散している場合、すべてのコンテキストを一度にAIに取り込むのは難しくなります」と彼は説明した。「これは、トークン制限が限られたすべてのトランスフォーマーモデルに共通する基本的な機能です。私たちのツールは、AIのコンテキストに様々なデータを取り込むことで、これらの制限内で動作するように努めています。」

ChatGPTとその後継製品(こちらとこちらで説明されています)をSocketスキャナーに統合することも、経済的な課題であることが判明しました。Aboukhadijeh氏によると、LLMの最大の障害の一つは、導入コストの高さです。

「ChatGPTをSocketに実装する上で、これらのコストが最も困難でした」と彼は述べた。「当初の予測では、npmレジストリを完全にスキャンすると、API使用料で数百万ドルのコストがかかると見積もっていました。しかし、慎重な作業、最適化、そして様々な技術を駆使することで、これをより持続可能なレベルまで引き下げることができました。」

これらのコストは、ChatGPTをSocketに実装する上で最も困難な部分であることが判明しました。

クライアント側での実行がこれらのモデルの実行コストを削減する方法になるかどうかとの質問に対し、アブカディジェ氏は、現時点ではそうなる可能性は低そうだと答えたが、AIを取り巻く状況は急速に変化していると付け加えた。

「オンプレミスシステムの最大の課題は、頻繁なモデル更新の必要性ではなく、これらのモデルを大規模に運用することに伴うコストにあります」と彼は述べた。「AIセキュリティのメリットを最大限に享受するには、可能な限り大規模なモデルを使用することが理想的です。」

GPT-3やLLaMAのような小規模なモデルには一定の利点がありますが、最も高度なマルウェアを一貫して検出できるほどの知能を備えていません。大規模モデルの使用には必然的に多大なコストがかかりますが、私たちは効率性の向上とこれらのコスト削減に多大な努力を注いできました。詳細を全てお伝えすることはできませんが、現在、この目的で開発した技術の一部は特許出願中であり、さらなる改良とコスト削減に取り組んでいます。

コストがかかることから、Socket は AI アドバイザリを有料顧客に提供することを優先していますが、基本バージョンも自社の Web サイトから提供しています。

「この分析をソケットに集中させることで、共有オープンソース依存関係すべてに対するAI分析の実行コストを償却し、最小限のコストでコミュニティに最大の利益と顧客への保護を提供できると考えています」とアブカディジェ氏は述べています。®

Discover More