
Cursor コードエディターの脆弱性により、開発者は悪意のあるリポジトリを開くと同時に自動的にタスクを実行されるリスクにさらされる。
脅威者はこの欠陥を悪用して、開発者がコマンドを実行することなく、マルウェアの配布、開発環境の乗っ取り、認証情報やAPIトークンの窃取を行うことができる。
Cursorは、Visual Studio Code(VS Code)のフォークとして構築されたAI搭載統合開発環境(IDE)で、ソフトウェア開発タスクのためにGPT-4やClaudeのような主流のAIアシスタントを深く統合している。
現在100万人のユーザーが使用し、毎日10億行以上のコードを生成している、最も急成長しているAIコーディングツールの1つである。
問題の原因
非人間的アイデンティティ(NHI)の管理とセキュリティ・ソリューションを提供するOasis Security社の研究者は、この問題はCursorがVS Codeのワークスペース・トラスト機能を無効にしていることに起因していることを発見した。
デフォルトの設定では、Cursorはプロジェクトフォルダを開いた直後にタスクを実行します。脅威者は、悪意のある.vscode/tasks.jsonファイルを公開共有リポジトリに追加することで、これを利用することができます。
「ユーザーがCursorからそのようなリポジトリを開くと、単純なブラウジングであっても、その環境で任意のコードが実行される可能性がある。
「これは、機密情報を漏えいしたり、ファイルを変更したり、より広範なシステム侵害の媒介となる可能性がある。
しかし、VS Codeはデフォルトの設定ではファイルを自動実行しないため、影響を受けない。
この発見を証明するために、Oasis Securityはtasks.jsonファイルの概念実証を公開しました。このファイルは、Cursorでプロジェクトフォルダを開く際に、シェルコマンドを実行して現在のユーザー名を送信します。

ソースはこちら:オアシス・セキュリティ
Oasis Securityによると、この欠陥を悪用する脅威者は、現在のユーザーのコンテキストでコードを実行したり、機密データ(トークン、APIキー、設定ファイル)を盗んだり、コマンド・アンド・コントロール(C2)インフラへの接続を確立したり、サプライチェーン攻撃のための感染ベクトルを作成したりする可能性がある。
カーソルは修正しない
Oasis SecurityがCursorチームにWorkspace Trustがデフォルトで無効になっているリスクについて伝えた後、IDEの開発者はコードエディタでの自動実行の動作を維持するつもりだと述べた。
Cursorは、”Workspace TrustはAIやその他のユーザーが製品内で使用したい機能を無効にする “と説明した。
彼らは、ユーザーが悪意のある可能性のある悪意のあるものを扱うときは、VS Codeからセキュリティ機能を有効にするか、基本的なテキストエディタを使用することを推奨している。
Cursorチームはまた、近日中にセキュリティ・ガイダンスを更新し、Workspace Trustに関する立場を説明し、それを有効にする方法を追加すると述べた。
Oasis Securityは、未知のプロジェクトを開く際には別のエディタを使用すること、リポジトリを開く前に検証すること、シェル・プロファイルで機密性の高い認証情報をグローバルにエクスポートしないことを推奨している。
研究者はまた、CursorでWorkspace Trustを有効にするための設定も提供している。
.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; object-fit: cover; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}
.ia_button {
width: 100%;
margin: 0px auto;
}
}




Comments