😵‍💫

Cursorアプリに発見された重大な脆弱性:macOSのプライバシー保護機能を回避する攻撃手法の詳細分析

に公開

はじめに:AI時代のコードエディタが抱える新たなセキュリティリスク

AIを活用したソフトウェア開発が急速に普及する中、開発者の間で人気を集めているCursorアプリに重大なセキュリティ脆弱性が発見された。この脆弱性は、macOSの基本的なプライバシー保護機構である**Transparency, Consent, and Control(TCC)**フレームワークを回避し、攻撃者が機密データにアクセスすることを可能にする深刻な問題である。

本記事では、この脆弱性の技術的詳細から実際の攻撃シナリオ、そして開発者と企業が取るべき対策まで、包括的に解説する。情報セキュリティの観点から、この問題が現代のソフトウェア開発環境に与える影響の重要性を理解し、適切な対策を講じることが急務である。

脆弱性の概要と技術的背景

1. 発見された脆弱性の詳細

セキュリティ研究者らが発見したこの脆弱性は、CursorアプリのElectronフレームワーク設定に起因している(AFINE Cybersecurity, 2025年5月26日)¹。具体的には、アプリケーションでRunAsNodeフューズが有効化されていることが問題の根源となっている。

この設定により、アプリケーションが汎用のNode.jsプロセスとして実行可能になり、悪意のあるソフトウェアがCursorの既存のプライバシー権限を継承して、認可なしに機密データにアクセスできる状況が生まれている。

2. Electronフレームワークの構造的課題

ElectronアプリケーションはHTML、JavaScript、CSSを使用してクロスプラットフォームのデスクトップアプリケーションを構築するフレームワークである。しかし、この便利さの裏側には固有のセキュリティリスクが潜んでいる。

Wojciech Reguła氏の研究によると、Electronアプリケーションの主要実行ファイルは、デジタル署名と権限設定を持つ一方で、実際のプログラムロジックはHTML、JavaScript、CSSファイルに格納されている²。この構造的特徴により、署名されたバイナリを変更することなく、悪意のあるコードを注入することが可能になる。

TCCフレームワークとは:macOSのプライバシー保護の要

TCCの役割と重要性

**Transparency, Consent, and Control(TCC)**は、Appleが実装したmacOSの基本的なプライバシー保護機構である。このシステムは、アプリケーションが以下のような機密リソースにアクセスする前に、必ずユーザーの明示的な許可を求める:

  • デスクトップ、ドキュメント、ダウンロードフォルダ内のファイル
  • カメラとマイクロフォン
  • 連絡先、カレンダー、リマインダー
  • 位置情報サービス
  • 他のアプリケーションへのアクセス
  • スクリーン録画機能

通常の状況では、アプリケーションはシステムプロンプトを通じてユーザーの許可を明示的に要求しなければならない。しかし、今回の脆弱性は、この重要な保護機構を完全に回避することを可能にしている。

攻撃の深刻性:「Living off the Land」手法

AFINE Cybersecurityの研究によると、この脆弱性は「Living off the Land」攻撃として分類される³。これは、攻撃者が既存の正当なシステムツールやアプリケーションを悪用して悪意のある活動を行う手法である。

この場合、攻撃者はCursorアプリを無意識のプロキシとして利用し、システムはこれらの行動を外部マルウェアではなく正当なアプリケーションからの行動として認識してしまう。

具体的な攻撃シナリオと技術的実装

シナリオ1:無操作攻撃(Vanilla Attack)

この攻撃は、Cursorが既に必要な権限を持っている場合にユーザーの操作を必要としない。攻撃の流れは以下の通りである:

  1. 権限の獲得:ユーザーがホームディレクトリで新しいプロジェクトを開く際、Cursorはドキュメントフォルダへのアクセス権限を要求
  2. 悪意のある設定の配置:攻撃者が~/Library/LaunchAgents/ディレクトリに特別に細工されたplistファイルを配置
  3. 権限の悪用:Launch Agentが以下のような設定でCursorのバイナリを実行:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnvironmentVariables</key>
    <dict>
        <key>ELECTRON_RUN_AS_NODE</key>
        <string>true</string>
    </dict>
    <key>Label</key>
    <string>com.crimson.electron</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Cursor.app/Contents/MacOS/Cursor</string>
        <string>-e</string>
        <string>
        require('child_process').execSync('ls -la $HOME/Documents > /tmp/Documents.txt 2>&1');
        </string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

この設定により、プログラムは子プロセスとして脆弱なアプリから TCC 権限を継承し、~/Documentsフォルダへのアクセスに成功する。

シナリオ2:スプーフィング攻撃

このシナリオでは、アプリがまだTCCプロンプトを通じてユーザーにアクセス許可を求めていない場合に発動する。攻撃者は悪意のあるアプリケーションをCursorアプリとして偽装し、以下のような偽の権限要求を表示する:

<string>require('child_process').execSync('/opt/homebrew/bin/imagesnap /tmp/photo.jpg');</string>

この場合、TCCプロンプトは悪意のあるアプリからではなく、脆弱なCursor.appから発信されているように表示され、ユーザーが許可する可能性が大幅に高まる。

脆弱性の検証と影響範囲

技術的検証方法

セキュリティ研究者は、以下のコマンドを使用してCursorアプリの脆弱性を確認している:

npx @electron/fuses read --app "/Applications/Cursor.app/Contents/MacOS/Cursor"

この検証により、以下の危険な設定が明らかになった:

  • RunAsNode is Enabled
  • EnableNodeCliInspectArguments is Enabled
  • EnableNodeOptionsEnvironmentVariable is Enabled

影響を受けるユーザーとシステム

この脆弱性の影響は特に以下のグループにとって深刻である:

  1. ソフトウェア開発者:Cursorの主要ユーザー層であり、開発環境への侵入により、ソースコードや機密プロジェクト情報が危険にさらされる
  2. 企業の開発チーム:企業秘密や顧客データへのアクセスが可能になる
  3. AI統合開発環境のユーザー:AI支援機能を通じて処理される機密コードやデータが漏洩する可能性

開発者の対応と業界の反応

Cursor開発チームの消極的対応

特に懸念すべき点は、Cursor開発チームの対応である。責任のある開示プロセスを経て報告されたにもかかわらず、開発者は以下のように述べている:

"この問題は彼らの脅威モデルの範囲外である"

そして修正の予定がないことを表明している。この対応は、セキュリティコミュニティから強い批判を受けており、AFINE Cybersecurityが公開開示に踏み切る理由となった。

業界標準との比較

興味深いことに、Microsoft Visual Studio Codeも同様の脆弱性を抱えているが、Microsoftも同様に「ローカルアクセスが必要」という理由で対応を拒否している⁴。このような対応は、ローカル権限昇格脆弱性の重要性を軽視する危険な傾向として、セキュリティ専門家から批判されている。

リスク評価とCVSSスコア

セキュリティ専門家による評価

AFINE Cybersecurityの評価によると、この脆弱性は以下のCVSSスコアが与えられている:

  • CVSS 3.1: AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
  • CVSS 4.0: AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

この評価は**中程度(Medium)**の危険度を示しているが、研究者は以下の点を強調している:

"これは批判的または高リスクの問題ではないが、軽視すべきではない。多くのユーザーがmacOSを選ぶ理由は、Appleがプライバシーを保護し、セキュリティを低下させる製品を避けるためである"

対策と緩和策

1. 開発者向けの技術的対策

Electronフューズの無効化
最も効果的な対策は、runAsNodeフューズを無効にすることである。Electronフューズのドキュメントに従って、以下の設定を実装する:

// electron-fuses設定例
const { FusesPlugin } = require('@electron-forge/plugin-fuses');
const { FuseV1Options, FuseVersion } = require('@electron/fuses');

module.exports = {
  plugins: [
    new FusesPlugin({
      version: FuseVersion.V1,
      [FuseV1Options.RunAsNode]: false,
      [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
      [FuseV1Options.EnableNodeCliInspectArguments]: false,
    }),
  ],
};

代替手段の実装
process.forkの代わりに、ElectronのUtility Processesを使用することを推奨する。これにより、独立したNode.jsプロセスが必要な多くのユースケース(SQLiteサーバープロセスなど)に対応できる。

2. ユーザー向けの対策

即座に実行すべき対策

  1. アプリケーションの更新確認:Cursorアプリを最新版に更新(ただし、現時点では修正されていない)
  2. TCC権限の見直し:システム設定 > プライバシーとセキュリティで、Cursorに与えられた権限を最小限に制限
  3. 代替ツールの検討:修正されるまで、より安全なコードエディタの使用を検討

企業環境での対策

  1. セキュリティポリシーの更新:Electronベースアプリケーションの導入時のセキュリティチェックリストを強化
  2. アプリケーション監査:既存のElectronアプリケーションに対する同様の脆弱性検査の実施
  3. 従業員教育:TCCプロンプトの重要性と、不審な権限要求への適切な対応についての教育

3. セキュリティ監視の強化

macOSログ監視
以下のログエントリーを監視することで、攻撃の兆候を検出できる:

# TCCログの監視
log show --predicate 'subsystem == "com.apple.TCC"' --last 1h

# Launch Agentの異常な実行を監視
log show --predicate 'process == "launchd"' --last 1h

広範囲な影響と今後の展望

Electronエコシステムへのインパクト

この脆弱性は、Cursorアプリに限定された問題ではない。Electronフレームワーク全体のセキュリティ設計に関わる構造的な問題を浮き彫りにしている。

影響を受ける可能性のある他のアプリケーション

  • Discord
  • Slack
  • Visual Studio Code
  • WhatsApp Desktop
  • Figma
  • その他多数のElectronベースアプリケーション

セキュリティコミュニティの対応

セキュリティ研究者Wojciech Reguła氏は、この問題について以下のように警告している:

"我々は過去20年間にわたって構築してきた強力な軽減策をバイパスするバグを軽視し始めている。ソフトウェア製造者は、脆弱性の修正を避けるために、Googleの論文を引用してローカル攻撃を軽視している"⁵

この指摘は、業界全体でローカル権限昇格脆弱性に対する認識を改める必要性を示している。

まとめ:プライバシー保護の新たな挑戦

CursorアプリのTCCバイパス脆弱性は、現代のソフトウェア開発環境が直面する複雑なセキュリティ課題を象徴している。AI支援開発ツールの普及により、開発者はより効率的にコードを書けるようになった一方で、新たなセキュリティリスクにも直面している。

この問題が特に深刻なのは、開発者自身が攻撃の標的となることで、ソフトウェアサプライチェーン全体に波及効果をもたらす可能性があることだ。悪意のあるコードが開発環境に侵入すれば、そこで開発されるすべてのソフトウェアプロダクトが潜在的に危険にさらされる。

重要なポイント

  1. 技術的修正の実装:開発者はElectronフューズの適切な設定を通じて、この種の脆弱性を防ぐことができる
  2. 責任ある開示への対応:ソフトウェアベンダーは、セキュリティ研究者からの報告に真摯に対応し、ユーザーの安全を最優先に考えるべきである
  3. 継続的な監視:ユーザーと企業は、使用するソフトウェアのセキュリティ状況を継続的に監視し、必要に応じて迅速に対策を講じる必要がある

この脆弱性の発見は、プライバシーとセキュリティを重視するユーザーにとって重要な警鐘である。技術の進歩とセキュリティのバランスを保ちながら、安全なソフトウェア開発環境を構築していくことが、今後の課題となるだろう。


参考文献

  1. AFINE Cybersecurity (2025年5月26日). "Threat of TCC Bypasses on macOS"
  2. Reguła, W. (2019年12月18日). "Abusing Electron apps to bypass macOS' security controls"
  3. Cyber Security News (2025年5月26日). "Vulnerability in Popular macOS App Cursor Allows Malware to Bypass Privacy Protections"
  4. Electron.js (2024年2月7日). "Statement regarding 'runAsNode' CVEs"
  5. AFINE Research Team. CVE分析レポート, 2025年

Discussion