CERT/CCがNode.jsのbinary-parserライブラリに深刻な脆弱性を警告:任意のコード実行の危険性

概要

CERT Coordination Center (CERT/CC) は、人気のNode.jsライブラリ「binary-parser」にセキュリティ上の脆弱性(CVE-2026-1245、CVSSスコア: 6.5)が発見されたことを警告しました。この脆弱性が悪用されると、攻撃者は任意のJavaScriptコードを実行できる可能性があります。

本問題は、バージョン2.3.0より前のすべてのbinary-parserモジュールに影響を及ぼし、2025年11月26日にリリースされたバージョン2.3.0で修正されています。

脆弱性の詳細

binary-parserは、開発者がバイナリデータを解析するために広く使用しているライブラリで、整数、浮動小数点値、文字列、配列など、幅広いデータ型をサポートしています。週に約13,000回のダウンロードがあるこのパッケージは、Node.jsエコシステムにおいて重要な役割を担っています。

CERT/CCの勧告によると、この脆弱性の根本原因は、JavaScriptのパーサーコードが「Function」コンストラクタを使用して実行時に動的に生成される際、パーサーのフィールド名やエンコーディングパラメータなどのユーザーが提供した値のサニタイズ(無害化)が不十分であることにあります。ライブラリは解析ロジックを表すJavaScriptソースコードを文字列として構築し、それをFunctionコンストラクタでコンパイルして効率的なパーサーとしてキャッシュします。

しかし、CVE-2026-1245の結果として、攻撃者が制御する入力が十分な検証なしに生成されたコードに組み込まれることで、アプリケーションが信頼できないデータを解析する際に任意のコード実行が発生する可能性があります。Alma Securityの研究者Maor Caplan氏がこの脆弱性を発見し、「ParserPoison」と命名しました。

Caplan氏は、「binary-parserは、Function()コンストラクタを使用してパーサー定義をJavaScript関数にコンパイルする。このアプローチはパフォーマンスには優れているが、ライブラリは変数名やエンコーディングパラメータを十分なサニタイズなしに直接補間していた」と説明しています。例えば、攻撃者がフィールド名として「x; console.log(“Hacked”);」のような値を指定すると、生成されるパーサー関数は「vars.x; console.log(“Hacked”);」となり、不正なコードが実行されることになります。

影響と対策

この脆弱性の影響を受けるのは、信頼できない入力を使用してパーサー定義を動的に構築するアプリケーションです。CERT/CCは、「影響を受けるアプリケーションにおいて、攻撃者はNode.jsプロセスの権限で任意のJavaScriptコードを実行できる可能性がある」と述べています。これにより、ローカルデータへのアクセス、アプリケーションロジックの操作、またはデプロイ環境によってはシステムコマンドの実行につながる可能性があります。

  • 影響を受けないアプリケーション:静的でハードコードされたパーサー定義のみを使用するアプリケーションは、この脆弱性の影響を受けません。

ユーザーへの推奨事項は以下の通りです。

  • 即座にアップグレード:binary-parserの利用者は、バージョン2.3.0以降にアップグレードすることを強く推奨します。
  • 入力の検証:ユーザーが制御する値をパーサーのフィールド名やエンコーディングパラメータに渡すことを避けるべきです。

Alma Securityは、「ParserPoisonは、最も効率的なコードが保護されない場合、最も危険になるという厳粛な警告となる」と付け加え、パフォーマンス重視のライブラリにおける動的な「シンク」のプロアクティブな監査の重要性を強調しています。


元記事: https://thehackernews.com/2026/01/certcc-warns-binary-parser-bug-allows.html