Next-Mdx-Remote の深刻な脆弱性 CVE-2026-0969 が FIX:React Server での任意のコード実行

Critical Vulnerability in Next-Mdx-Remote Allows Arbitrary Code Execution in React Server-Side Rendering

2026/02/13 CyberSecurityNews — next-mdx-remote ライブラリに存在する深刻な脆弱性 CVE-2026-0969 が、セキュリティ・アドバイザリ HCSEC-2026-01 により明らかにされた。この脆弱性 CVE-2026-0969 により、信頼されていない MDX コンテンツをレンダリングするサーバ上で、任意のコード実行が可能となる。この脆弱性の影響が及ぶ範囲は、バージョン 4.3.0 〜 5.0.0 であり、修正版はバージョン 6.0.0 となる。

この next-mdx-remote は、Next.js ベースの React アプリ向けに広く利用されているオープンソース TypeScript ライブラリである。このライブラリは、データベース/API に加えて、ユーザー入力から取得した MDX (Markdown with JSX) を動的に処理し、サーバ/クライアントでのレンダリング可能にする。

攻撃の仕組み

Markdown の簡潔さと React コンポーネントを組み合わせた MDX は、ブログ/ドキュメント/ユーザー生成コンテンツに適している。

この脆弱性は、 serialize 関数と compileMDX 関数に存在する。これらの関数は、信頼されていない MDX 内の JavaScript 式に対して、適切なサニタイズを実装していなかった。

AspectInformation
CVE IDCVE-2026-0969
Affectednext-mdx-remote 4.3.0 to 5.0.0
CVSS ScoreCritical (estimated 9.8/10)
ImpactRCE on SSR with untrusted MDX

波括弧 {} 内に eval()/Function()/require() などに挿入された悪意のコードが、サーバによる Server-Side Rendering (SSR) 中に処理されると、サーバ権限で実行されてしまう。

結果としてリモートコード実行 (RCE) が発生し、データ窃取/マルウェア設置/サーバ乗っ取りなどが引き起こされる。

JavaScript 式が有効化されている状況 (デフォルト設定) で、攻撃者により送信された {require(‘child_process’).execSync(‘rm -rf /’)} のような MDX は、サーバに検証されることなく実行されてしまう。

新たなバージョン 6.0.0 では大きな変更が導入され、JavaScript 式はデフォルトでブロックされるようになった (blockJS: true)。

“blockJS: false” で有効化する場合であっても、新たに blockDangerousJS: true ( デフォルト有効) が追加されているため、process/eval/require などはフィルタリングされる。

サーバ上で信頼されていない MDX を処理しているユーザーは、next-mdx-remote 6.0.0 へと速やかにアップグレードする必要がある。その上で、compileMDX または serialize の呼び出し箇所を監査すべきである。

ユーザーが提供する MDX を、サニタイズなしでレンダリングしてはならない。追加の防御として、remark-rehype などのライブラリを使用する必要がある。デフォルト変更による影響を検出するため、ステージング環境での検証も実施すべきである。