広く利用されているprotobuf.jsライブラリに重大なRCE脆弱性が発見される
GoogleのProtocol Buffersの人気のJavaScript実装である**protobuf.js**に、重大なリモートコード実行(RCE)脆弱性が特定されました。概念実証(PoC)エクスプロイトコードが既に公開されており、サービス間通信やデータ処理にこのライブラリを利用しているアプリケーションにとって懸念が高まっています。

**Node Package Manager (npm)**レジストリで毎週約5000万回のダウンロードを誇る**protobuf.js**は、最近開示されたリモートコード実行(RCE)の欠陥により、精査に直面しています。この脆弱性は、**Endor Labs**が報告したように、安全でない動的なコード生成に起因しています。
### 脆弱性:GHSA-xq3m-2v4x-88gg
現在GHSA-xq3m-2v4x-88gg(公式の**CVE** IDなし)として追跡されているこの脆弱性により、攻撃者は悪意のあるスキーマを提供することで、生成された関数に任意のコードを注入できます。これは、ライブラリがprotobufスキーマからJavaScript関数を構築する際に、文字列を連結し、スキーマ由来の識別子の適切な検証なしに`Function()`コンストラクタを介して実行するためです。
**Endor Labs**は、この欠陥により、攻撃者の影響を受けるスキーマをロードするサーバーまたはアプリケーションでRCEが可能になると説明しています。正常に悪用された場合、環境変数、認証情報、データベースなどの機密情報へのアクセスを許可し、侵害されたインフラストラクチャ内でのラテラルムーブメントにつながる可能性があります。開発者のマシンも、ローカルで信頼されていないスキーマを処理する場合、リスクにさらされます。
### 影響と緩和策
この脆弱性は、**protobuf.js**バージョン8.0.0/7.5.4およびそれ以前に影響します。リスクを軽減するために、**Endor Labs**は、非英数字を削除して型名をサニタイズするパッチが含まれているバージョン8.0.1および7.5.5へのアップグレードを強く推奨しています。このパッチは即時の救済を提供しますが、**Endor Labs**は、攻撃者が到達可能な識別子に対して`Function`の使用を完全に排除することが、より堅牢で長期的な解決策になると提案しています。
「悪用は簡単です」と**Endor Labs**は警告し、[セキュリティアドバイザリ](https://github.com/protobufjs/protobuf.js/security/advisories/GHSA-xq3m-2v4x-88gg)に含まれる最小限の概念実証(PoC)を参照しています。現時点では、実際の攻撃の報告はありません。
### 開示タイムライン
この脆弱性は、**Endor Labs**の研究者である**Cristian Staicu**によって3月2日に報告されました。**protobuf.js**のメンテナーは3月11日にGitHubでパッチをリリースしました。更新された**npm**パッケージは、8.xブランチでは4月4日、7.xブランチでは4月15日に利用可能になりました。
### 推奨事項
アップグレードに加えて、**Endor Labs**は以下を推奨しています。
* 推移的な依存関係の監査。
* スキーマロードを信頼されていない入力として扱う。
* 本番環境では、プリコンパイル済み/静的スキーマを優先する。
