Anthropicのnpmレジストリ内のAIコーディングツールのバージョンには、完全な独自のソースコードに至るソースマップファイルが含まれていました。
Anthropicの従業員がソースマップファイルを含めることで、Anthropicのオープンnpmレジストリアカウントに投稿されたAIプログラミングツールのClaude Codeの完全な独自ソースコードを誤って公開してしまいました。AIの専門家によると、これは危険なミスです。
「侵害されたソースマップはセキュリティリスクです」とアメリカを拠点とするサイバーセキュリティおよびAI専門家のJoseph Steinberg氏は述べています。「ハッカーはソースマップを使用して元のソースコードを再構築し、その動作を確認することができます。そのコード内のすべての秘密(例えば、誰かがAPIキーをコード化した場合など)はリスクにさらされており、すべてのロジックも同様です。また、ロジックで見つかった脆弱性はハッカーに明らかになり、その後ハッカーはそれらの脆弱性を悪用することができます。」
しかし、AnthropicのスポークスパーソンはCSOに対して、「機密顧客データまたは認証情報は関与していないか露出していません。これはセキュリティ侵害ではなく、ヒューマンエラーによるリリースパッケージングの問題です。今後これが起こらないように対策を実行しています。」と述べています。
しかし、これが初めてではありませんでした。Fortuneや他のニュースソースによると、同じことが先月起こりました。
.mapファイルを公開しないでください
マップファイルは、オープンソースレジストリに公開されたコードの最終バージョンに残すべきではありません。誰でもパッケージをダウンロードできる場所にあり、それらはハッカーにとって有用な情報源となる可能性があります。
開発者のKuber Mehta氏によると、最新のインシデントに関するブログを公開しており、誰かがJavaScript/TypeScriptパッケージをnpmに公開する場合、ビルドツールチェーンはソースマップファイル(.mapファイル)を生成することがよくあります。これらのファイルは、縮小/バンドルされた本番コードと元のソースの間のブリッジです。本番環境で何かがクラッシュしたときに、スタックトレースが理解不能な参照ではなく、元のファイル内の実際のコード行を指し示すように存在しています。
これらのファイルで何が利用可能ですか?「すべてのファイル。すべてのコメント。すべての内部定数。すべてのシステムプロンプト。それらすべてが、npm packを実行したり、パッケージの内容を閲覧しただけでも、npmが喜んで誰にでも提供するJSONファイルに直接あります。」とMehta氏は述べています。
「ミスはほぼ常に同じです。誰かが.npmignoreに*.mapを追加することを忘れるか、本番ビルドのソースマップ生成をスキップするようにバンドラーを構成していません。」Mehta氏は述べています。「Bunのバンドラー(Claude Codeが使用)では、明示的にオフにしない限り、ソースマップはデフォルトで生成されます。」
Steinberg氏によると、ソースマップを、人間にとって簡単に理解できない縮小されたコンピュータコードのどの部分が何をしているかを示すファイルと考えてください。人間が読める形のソースコードで示されています。例えば、実行可能コードの特定の部分のコードが、ソースコードの特定のスニペットに表示される命令を実行していることを示す可能性があります。
ソースマップはデバッグに役立つことができると、彼は追加しました。それなしでは、多くのエラーはエラーが正確にどこで発生するかを示すのではなく、より大きなコード部分から来ていると特定されるでしょう。
セキュリティ研究者のChaofan Shou氏が火曜日の早朝にX上にこのメッセージを投稿したときに、世界はこのインシデントについて知りました。「Claude codeのソースコードが彼らのnpmレジストリのマップファイル経由でリークされました!」というメッセージと、ファイルへのリンクが付いていました。
一般的なエラー
セキュアコーディング講師のTanya Janca氏によると、パッケージにソースマップファイルを残すことは「開発者がかなり頻繁に行う非常に一般的なミスです。」「この特定の状況では、他の場所であるよりもより深刻です。主に関係する知的財産の非常に高い価値のためであり、また今や悪意のある行為者はリバースエンジニアリングをしなければならない代わりに、脆弱性について直接ソースコードを分析できるためです。それは時間、コスト、複雑さを追加します。」
Janca氏は、理想的には開発者は彼らのビルド環境を強化すべきであり、本番環境でデバッグ情報/機能をシップしないようにすべきだと述べました。彼女は開発者にこれらのヒントを提供しました。
- ビルド/バンドラーツールでソースマップを無効にする;
- ビルド中に誤って生成された場合でも、.npmignore / package.jsonファイルフィールドに.mapsファイルを追加して明示的に除外する;
- 継続的インテグレーション/継続的デプロイメント環境の公開アーティファクトのリストから.mapsファイルを除外する;
- 違いがある場合は、デバッグビルドを本番ビルドから注意深く分離する。コメントさえも信じられないほど機密である可能性があります。
重要なレイヤー
ソースコードまたはシステムレベルのロジックの露出は重要です。なぜなら、コントロールがどのように実装されているかを示しているからです。Arctic Wolfの技術・サービス担当会長のDan Schiappa氏はコメントしています。この情報が露出すると、モデルがどのように動作を強制し、アクセスを管理し、エッジケースを処理するかを理解する人の数が増えると、彼は述べています。
「AIシステムでは、そのレイヤーは特に重要です。」と彼は付け加えました。「オーケストレーション、プロンプト、ワークフローは効果的にシステムがどのように動作するかを定義します。それらが露出すると、弱点を特定したり結果を操作したりしやすくなります。攻撃者がAIを活用するための最適な方法をまだ発見していることを知ることは、ツールが侵害される可能性のあるあらゆるインスタンスで、サイバー犯罪者が控えに待っている可能性があることを意味します。」
この記事はもともとInfoWorldに掲載されました。
翻訳元: https://www.csoonline.com/article/4152830/anthropic-employee-error-exposes-claude-code-source-2.html