【ITニュース解説】AIコーディング支援ツール「Cursor」にセキュリティ問題--リポジトリー内のコードが自動実行される恐れ
2025年09月16日に「ZDNet Japan」が公開したITニュース「AIコーディング支援ツール「Cursor」にセキュリティ問題--リポジトリー内のコードが自動実行される恐れ」について初心者にもわかりやすく解説しています。
ITニュース概要
AIコーディング支援ツール「Cursor」に重大なセキュリティ脆弱性が見つかった。これにより、ユーザーが意図しないまま、保存されているプロジェクトのコードが自動で実行されてしまう危険性がある。利用者は注意が必要だ。
ITニュース解説
AIコーディング支援ツールである「Cursor」に、リポジトリー内のコードがユーザーの意図しない形で自動実行される可能性があるという重大なセキュリティ問題が指摘された。この問題は、AIの力を借りて効率的な開発をサポートする最新のツールにも、思わぬ落とし穴が潜んでいることを示している。
Cursorは、AIによるコード生成やデバッグ支援、自然言語での質問応答など、多岐にわたる機能を提供するコードエディターだ。開発者はこのツールを使うことで、より迅速に、そして間違いの少ないコードを書くことができると期待されている。しかし、今回の脆弱性の報告は、その利便性の裏に隠されたリスクを浮き彫りにした。
具体的に何が問題だったのか。Cursorは、ユーザーが作成したコードを独立した環境で実行・テストするために、Dockerコンテナという技術を利用している。これは、ユーザーのローカルPC環境を汚染することなく、安全にコードを試すための一般的な手法だ。しかし、このCursorが提供するDockerコンテナイメージの内部に、特定のスクリプトファイルが存在したことが問題の発端となった。
このスクリプトファイルは、「run.sh」という名前で、コンテナが起動する際に自動的に実行される仕組みを持っていた。そして、このrun.shスクリプトは、ユーザーのコードリポジトリー内に「.cursor/」という隠しフォルダーが存在した場合、そのフォルダー内に置かれた特定のファイル、例えば「pre_install」や「post_install」といったファイルを、ユーザーの許可なく自動的に実行するように設計されていたのだ。
特に危険視されたのは「pre_install」というファイルだ。このファイルは、プロジェクトで必要となる外部ライブラリや依存関係がインストールされる「前」に実行されるように設定されていた。これは何を意味するかというと、もし悪意のあるプログラマーが、ユーザーが利用しようとしているコードリポジトリーの中に、この隠しフォルダーと悪意のあるpre_installスクリプトをこっそり仕込んでいた場合、Cursorがそのリポジトリーを開いてコンテナ環境を起動した途端、ユーザーが全く予期しないタイミングで、その悪意のあるスクリプトが自動的に実行されてしまう、ということだ。
この自動実行機能は、開発者が特定のテスト環境を自動で構築したり、プロジェクト固有のセットアップ手順を簡略化したりするための「便利機能」として、Cursorの開発者によって意図的に組み込まれたものだった。しかし、その実装方法がセキュリティ上の大きな抜け穴となってしまった。ユーザーに明示的な確認を求めずに、デフォルトでこのような自動実行機能が有効になっていたことが、今回の問題の根源にある。
もしこの脆弱性が悪用された場合、どのような被害が想定されるだろうか。悪意のあるスクリプトが自動実行されることで、ユーザーのPCから重要な情報、例えばAPIキーや認証情報、個人情報などが盗み出される可能性がある。また、システムに不正なソフトウェアがインストールされたり、ファイルが改ざんされたり、さらにはシステム全体が乗っ取られたりするような、深刻な被害につながる恐れもあった。特に、オープンソースプロジェクトのコードをクローンして利用する場合や、複数の開発者が共有するリポジトリーを使う場合には、いつ悪意のあるコードが紛れ込むか分からないため、非常に高いリスクを伴った。
この問題がセキュリティ企業から指摘された後、Cursorの開発チームは迅速に対応した。現在では、このような隠しフォルダー内のスクリプトを自動実行する前に、ユーザーに対して「このスクリプトを実行しても良いか?」という確認のメッセージを表示するよう、ソフトウェアが修正されている。これにより、ユーザーは意図しないコードの実行を防ぐことができるようになった。
しかし、セキュリティの専門家からは、さらに一歩進んで、この自動実行機能をデフォルトで無効にし、ユーザーが明示的に「有効にする」と設定した場合のみ動作する「オプトイン」方式にすべきだという提言がなされている。これは、利便性の高い機能であっても、それがセキュリティリスクを伴う可能性があれば、まずはユーザー自身がそのリスクを認識し、許可した場合にのみ利用できるような設計が望ましいという考え方に基づいている。
システムエンジニアを目指す皆さんにとって、今回のCursorの件は非常に重要な教訓となる。最新のAIツールや開発支援ツールは、私たちの生産性を大きく向上させる強力な味方となる一方で、その内部構造やデフォルト設定に潜むセキュリティリスクを見過ごしてはならない。どんなに便利なツールであっても、それがどのように動作し、どのような情報を扱い、どのような権限を持っているのかを理解する意識を持つことが不可欠だ。
また、信頼できないソースから提供されたコードを安易に実行しない、という基本的なセキュリティ原則も改めて確認しておくべきだろう。オープンソースプロジェクトを利用する際や、チームメンバーから提供されたコードを扱う際にも、不注意なコミットや悪意のあるコードが混入していないか、常に注意を払う必要がある。今回の問題は、開発ツールの選定から日常の開発作業に至るまで、あらゆる場面でセキュリティへの意識を高く持つことの重要性を私たちに強く訴えかけていると言えるだろう。