マイクロソフトが公開している、大規模言語モデル上でアプリケーションを構築するためのオープンソースプロジェクト「Prompty」に、重大な脆弱性が見つかりました。この欠陥を悪用すると、特別に細工された.promptyファイルが通常のテンプレート処理から逸脱し、Node.jsプロセスの権限で任意のJavaScriptを実行できてしまいます。CVSSスコアは最大値である10.0を記録しています。
発見の経緯と影響を受けるバージョン
この問題は、Positive Technologies社のAppSec Researchチームが、開発中のAIベースの脆弱性検出ツールをテストしている過程で発見しました。脆弱性はCVE-2026-73299として登録されています。影響を受けるのはTypeScriptパッケージ「@prompty/core」のバージョン0.1.4以下、および2.0.0-beta.4以下のブランチです。マイクロソフトはこの問題をバージョン0.1.5および2.0.0-beta.5で修正しました。
Promptyとは何か
Promptyは、.promptyというファイル形式と、生成AIアプリケーション向けプロンプトの作成・テスト・実行を支援するツール群を組み合わせたプロジェクトです。ファイルはYAML形式の設定部分とMarkdown形式のプロンプト本文で構成され、モデルパラメータや入力データ、ツール、テンプレート構文を含めることもできます。開発者は1つのファイルを異なる環境間で使い回し、複数のLLMプロバイダーと接続できます。
Nunjucksレンダラーに存在したSSTIの欠陥
今回の脆弱性は、サーバーサイドテンプレートインジェクション(SSTI)に分類されるものです。.promptyファイルを処理する際、テンプレートエンジンのNunjucksがJavaScriptオブジェクトへのアクセスを十分に制限していませんでした。特別に構成されたテンプレートを使えば、constructorやprototypeといったプロパティに到達し、本来のロジックの範囲を逸脱して、Node.jsプロセス内でJavaScriptを実行できてしまう状態でした。
悪用された場合の影響
悪用による被害の程度は、アプリケーションを実行しているプロセスの権限に左右されます。十分な権限があれば、攻撃者はアプリケーションのデータや機密情報にアクセスしたり、ファイルや設定を改ざんしたり、サービスの動作を妨害したり、可用性を損なわせたりできる可能性があります。アプリケーションの権限で任意のコードを実行できるという点が、最大深刻度のスコアが付いた理由です。
単純なプロンプトインジェクションとは異なる
言語モデルに対する通常のテキストクエリだけでは、CVE-2026-73299を悪用するには不十分です。攻撃が成立するには、アプリケーションが脆弱なバージョンの@prompty/coreを使用しており、Nunjucks経由で.promptyファイルを処理し、なおかつ特別に細工されたテンプレートを受け取る必要があります。マイクロソフトのセキュリティ勧告では、信頼できないファイル、コミュニティ由来のファイル、クローンされたファイル、そしてLLMが生成した.promptyファイルが名指しで挙げられています。
こうした.promptyファイルを外部リポジトリから読み込んだり、サードパーティの開発者から受け取ったり、あるいは言語モデルによって自動生成したりするシステムでは、リスクが一段と高まります。このような状況下では、プロンプトファイルはもはやLLM向けの単なるテキスト指示とは見なせません。そのテンプレートロジック自体が、ソフトウェアコンポーネントによって処理されてしまうためです。
マイクロソフトによる修正内容
この問題を解決するため、マイクロソフトはNunjucksレンダラーに変更を加えました。修正後の実装では、渡されたオブジェクト自身が持つデータへのアクセスのみを許可し、constructorやprototypeを経由した探索を遮断し、テンプレートからの関数呼び出しを禁止するとともに、処理前の入力をサニタイズするようになっています。変数の置換や条件分岐、ループ処理、通常のユーザーデータへのアクセスといった機能は、引き続き問題なく動作します。
この保護機能は、旧バージョンの@prompty/coreブランチにも移植されました。別途、同様の制限とSSTIに対するテストを追加する修正が施され、その結果としてバージョン0.1.5がリリースされています。
AI開発者にとって変化する脅威モデル
今回の脆弱性は、生成AIツールの普及が開発者にとっての脅威モデルをどのように変えつつあるかを示すものです。プロンプトファイルには、設定情報やテンプレート式など、アプリケーションの挙動に影響を与える要素が含まれる場合があります。したがって、こうしたファイルを外部から取得すること自体が、ソフトウェアサプライチェーンに特有のリスクを生み出すことになります。
脆弱なバージョンの@prompty/coreを利用しているユーザーは、旧ブランチであれば少なくともバージョン0.1.5に、新ブランチであれば2.0.0-beta.5にアップグレードすることが推奨されます。
翻訳元: https://meterpreter.org/prompty-cve-2026-73299/