「protobuf.jsって自分で入れた覚えないのに、依存ツリーに何十個も入ってて怖いでしゅ……」
「週5,000万ダウンロードのライブラリでRCEって、うちのNode.jsアプリは大丈夫なんでしゅか?」
package-lock.jsonにprotobufjsって書いてあるんでしゅけど、これ放置でいいんでしゅか……?
ふふふ、放置は危ういな。今回の6件はDoSで終わらず、条件次第でNode.jsプロセス内のコード実行まで届く。仕組みを押さえれば、どのバージョンを切るべきか即断できるぞ。
本記事では、Cyera Researchが公表したprotobuf.jsの6件の脆弱性「Proto6」の中身と、Node.jsアプリでRCEに至る仕組み、いますぐ取るべきアップデート対応を整理します。
- 週5,000万ダウンロード超のprotobuf.jsに6件の脆弱性(総称Proto6)、RCE・DoS・プロトタイプ汚染を引き起こす
- 最も深刻なCVE-2026-44291は、プロトタイプ汚染を踏み台にNode.jsプロセス内で任意のJavaScriptを実行する
- 影響は7.5.5以下と8.0.0〜8.0.1、修正版は7.5.6 / 8.0.2(CLIは1.2.1 / 2.0.2)で早期更新が必要
読み終える頃には、自社のNode.js依存からどのバージョンを切り、何を優先して直すかが見えてきます。
目次
Proto6脆弱性6件の概要
まずはCyera Researchが公表した6件の中身と影響範囲を整理します。
RCEからDoSまで、6件の内訳と影響バージョン
protobuf.jsはProtocol BuffersのJavaScript実装で、週5,000万ダウンロードを超える人気ライブラリです。
多くの企業アプリやAI・データ基盤に直接、あるいは依存の依存として組み込まれているため、影響範囲はかなり広いとみています。
Cyera Researchが見つけた6件は「Proto6」と総称され、RCE・DoS・プロトタイプ汚染・コードインジェクションを引き起こします。
中でもCVE-2026-44291は最も深刻で、攻撃者が制御する入力からプロトタイプ汚染へ到達し、Node.jsプロセス内での任意JavaScript実行まで届きます。
6件の内訳は以下のとおりです。
| CVE | 影響 |
|---|
| CVE-2026-44291 | RCE(プロトタイプ汚染経由でNode.js内の任意JS実行) |
| CVE-2026-44295(CVSS 8.7) | pbjsの静的出力へのコードインジェクション |
| CVE-2026-44292 | プロトタイプインジェクション(継承プロパティ改ざん) |
| CVE-2026-44289 / 44290 / 44294 | DoS(細工入力でクラッシュ・リソース枯渇) |
影響を受けるのは7.5.5以下と8.0.0〜8.0.1で、修正版は7.5.6 / 8.0.2、CLI(protobufjs-cli)は1.2.1 / 2.0.2です。
DoSだけかと思ったら、RCEまで混ざってるんでしゅか……。
そこが今回の怖いところだな。DoSは止まるだけだが、RCEは乗っ取られる。優先順位を間違えるなよ。
RCEに至る仕組みと取るべき対応
なぜデータ変換ライブラリでコード実行が起きるのか、その筋道と対策を押さえます。
プロトタイプ汚染が「正規のコード」に化ける仕組み
CVE-2026-44291の起点は、Node.jsアプリが攻撃者の制御する入力を受け取り、プロトタイプ汚染のガジェットに到達する点にあります。
汚染されたObject.prototypeを通じて、攻撃者が仕込んだ文字列が正規のprotobufプリミティブのように見えてしまいます。
protobuf.jsはエンコーダ・デコーダ関数を動的に生成し、その文字列をFunction()でコンパイルするため、紛れ込んだ文字列がそのままコードとして走ります。
結果として、Node.jsプロセス内で任意のJavaScriptが実行される流れです。
いますぐ取るべき対応は以下のとおりです。
- protobuf.jsを7.5.6または8.0.2へ、CLIは1.2.1 / 2.0.2へ更新する(直接・間接の依存を両方確認)
- npm ls protobufjsで依存ツリーを洗い出し、古いバージョンを引いているパッケージを特定する
- 外部入力をそのままデコードしている箇所を点検し、入力検証とプロトタイプ汚染対策を入れる
- pbjsで静的出力を生成しているビルドは、信頼できないスキーマ名を渡していないか確認する
protobuf.jsは依存の依存として入り込みやすいため、自分で入れた記憶がなくても影響を受けることがあります。
サプライチェーン経由で国内の開発組織にも波及しうるので、lockファイル単位での確認が欠かせません。
うちのアプリ、外から来たデータをそのままデコードしてた気がするんでしゅ……。
ふふふ、まさにそこが狙われる導線だ。まずはバージョンを上げ、次に入力の検証を足す。この順で潰せば慌てずに済むぞ。
まとめ:まず更新、次に入力の点検
Proto6は、週5,000万ダウンロードのprotobuf.jsという足元のライブラリでRCEやDoSが起きうることを示しました。
最優先はバージョン更新で、7.5.6 / 8.0.2、CLIは1.2.1 / 2.0.2へ上げ、間接依存も含めて引き直すことが先決です。
そのうえで、外部入力をデコードする箇所の検証とプロトタイプ汚染対策を足せば、RCEへの導線を断てます。
依存ツリーの奥まで責任を持つこうした地道な実務こそ、2026年のNode.js運用で効いてくる部分だとみています。
参考: eSecurity Planet「Six protobuf.js Vulnerabilities Expose RCE and DoS Risks」