ObsidianプラグインでMarkdownファイルを開くことがRCEにつながる脆弱性
Markdownファイルが不Obsidian Tasksプラグインに、Markdownファイルを開くことでリモートコード実行(RCE)を引き起こす脆弱性が発見されました。
Pluginのメンテナーと連携し、バージョン8.0.0でJavaScript実行をデフォルトで無効化する修正が施されました。
Markdownをコンテンツと見なさない、より慎重なセキュリティ対策の重要性が示唆されています。
ZeroQuarryは、製品固有の相互作用から生まれる脆弱性を見つけるためのセキュリティスキャンを提供しています。
セキュリティ研究機関ZeroQuarryは、Obsidian Tasksプラグインにおいて、Markdownファイルを開くことでリモートコード実行(RCE)を引き起こす脆弱性を発見し、Obsidianとプラグインの開発者と連携して対応しました。Obsidianは、ローカルでMarkdownファイルを編集・管理できるノートアプリで、多くのユーザーに利用されています。この脆弱性に対処するため、プラグインのバージョン8.0.0でJavaScript実行が無効化されました。
Markdownファイルが実行コードに?脆弱性の概要
脆弱性は、Obsidian Tasksプラグインのクエリ機能に起因するものです。通常、Markdownファイルはテキストコンテンツとして扱われますが、この脆弱性により、特定のMarkdownファイルを開くことで、悪意のあるJavaScriptコードが実行される可能性がありました。例えば、「not done
filter by function require('child_process').execSync('calc') || true」という記述を含むMarkdownファイルを開くと、Windows環境で電卓アプリが起動するという実験的な検証が可能です。この事例では電卓アプリが起動するだけですが、悪意のあるコードが実行された場合、システムへの深刻な影響が想定されます。
プラグインエコシステムとセキュリティの課題
今回の脆弱性は、プラグインエコシステムにおけるセキュリティの重要性を示しています。Obsidianのようなアプリケーションは、プラグインの導入、Markdownのレンダリング、ユーザー生成コンテンツの同期、ローカル環境での動作などを可能にすることで、利便性を高めています。しかし、これらの機能は、信頼境界を曖昧にし、攻撃対象領域を拡大する可能性があります。セキュリティスキャンは、既知の脆弱性や依存関係だけでなく、製品固有の機能とコンテンツ、プラグインの相互作用に着目する必要があるということを浮き彫りにしました。
迅速な対応とプラットフォームの課題
プラグインの開発者は、ZeroQuarryからの報告に対し迅速に対応し、バージョン8.0.0でJavaScript実行をデフォルトで無効化するなどの対策を講じました。ただし、この機能は高度なユーザーのワークフローをサポートするために不可欠であり、完全に削除すると利便性が損なわれるというトレードオフが存在します。Obsidianのプラグインは、ローカル環境からのサンドボックス化が十分ではなく、安全なJavaScriptサンドボックス化のための普遍的な方法も存在しないとのことです。この問題は、プラグイン開発の自由度とセキュリティのバランスをどのように取るかという、プラットフォーム全体の課題を示唆しています。
まとめ
ZeroQuarryは、今回の脆弱性の詳細な情報を公開していませんが、この事例は、プラグインエコシステムにおけるセキュリティ対策の重要性を改めて認識させるものです。ユーザーは、インストールするプラグインのセキュリティリスクを理解し、常に最新バージョンにアップデートすることが重要だと言えるでしょう。
原文の冒頭を表示(英語・3段落のみ)
ZeroQuarry identified a critical remote-code-execution path in the Obsidian Tasks plugin and coordinated responsible disclosure with Obsidian and the plugin maintainer.
Disclosure status: Mitigation available. Tasks 8.0.0 disables JavaScript execution in Tasks queries by default. We are limiting exploit detail to a minimal demonstration and avoiding weaponized payloads.
TL;DR
※ 著作権に配慮し、引用は冒頭3段落までです。続きは元記事をご覧ください。