Reactは世界で最も広く採用されているフロントエンドライブラリです。
2025年版 Stack Overflow Developer Surveyによると、開発者の約44%がReactを使用しており、最も利用されているフロントエンドフレームワークとなっています。
そして、レガシーバージョンも本番環境に深く根付いています。npmのダウンロードデータによれば、アクティブな開発が終了して数年が経つ今でも、React 16は週あたり約350万ダウンロード、React 17は約360万ダウンロードを記録しています。
この数字が示すことは明確です。エンタープライズのフロントエンドの相当数が、アップストリームでのセキュリティ修正が限定的にしか受けられないレガシーReactバージョン上で稼働しているのです。
本日、HeroDevsはReact 16.xおよび17.xを対象としたNever-Ending Support (NES) for Reactの提供開始を発表しました。NES for Reactは、reactおよびreact-domに対して全深刻度レベルにわたる継続的な脆弱性修正を、アプリケーションのコード変更を一切必要としないnpmの置き換え可能なパッケージとして提供します。
サポートギャップの実態
Node.jsやAngularとは異なり、Reactには正式な長期サポート(LTS)プログラムや公式のEOL(サポート終了)日程がありません。
プロジェクトのバージョニングポリシーでは、セキュリティ修正は影響を受けるメジャーバージョンにバックポートされるとされていますが、その対応範囲は裁量的であり、対象とする深刻度の範囲も、対応までの時間的な約束も定められていません。
React 19が現行のメジャーバージョンとなった今、React 16・17はアクティブな開発の対象から完全に外れています。それでもこれらのバージョン上に構築されたアプリケーションは、本番環境で問題なく描画・動作し続けます。まさにこの点がリスクを見落としやすくしている要因です。「動いている」ことと「セキュアでサポートされている」ことは、決して同じ意味ではありません。
EOLオープンソースソフトウェアとコンプライアンスの交差点
ReactはJavaScriptベースのアプリケーションに組み込まれる性質上、レガシーReactバージョンに存在する未修正の脆弱性は、そのバージョンを使い続けるすべてのアプリケーションに同梱されたまま出荷され続けます。そしてサポート対象外のオープンソースソフトウェアは、単なるセキュリティ上の懸念にとどまらず、監査人が指摘事項として扱うケースが増えているコンプライアンス上のギャップでもあります。
SOC 2、PCI DSS v4.0、HIPAA、FedRAMP、DORA、そしてEUのNIS2指令といった標準・規制は、直接的に、あるいはリスクマネジメント条項を通じて、ソフトウェアコンポーネントが継続的なサポート下に置かれ、既知の脆弱性が定められた期限内に修正されることを求めています。
SBOM(ソフトウェア部品表)にレガシーReactバージョンと未修正のCVEが表面化すると、自動化された監査で警告フラグが立ちます。そして修正の道筋がない未解決の指摘事項は、監査人・顧客のセキュリティレビュー・規制当局に対して説明することが困難です。
HeroDevs NES for React:ギャップを埋める
HeroDevs Never-Ending Supportは、EOLを迎えたオープンソースソフトウェアのためのセーフティネットを提供します。
HeroDevsのチームは新たに公開されたCVEを監視し、サポート対象のコードベースにおける脆弱性を能動的に調査し、HeroDevs Vulnerability Directoryで調査結果を公開したうえで、セキュアなプライベートレジストリを通じて修正済みパッケージを提供しています。認定CVE採番機関(CNA)として、HeroDevsはオープンソースソフトウェアにおける脆弱性を自ら特定・解決・開示しています。
NES for Reactは、このモデルをReactエコシステムへと拡張するものです。
- React 16.x・17.x向けのCVE修正: react・react-domに対する、Critical(重大)に限らない全深刻度レベルの脆弱性修正
- SLAによる保証: コミュニティのベストエフォートに代わる、深刻度に応じた契約ベースの対応期限
- ドロップイン導入: コード変更・アプリケーション改修なしの、シンプルなnpmレジストリの切り替えのみ
- コンプライアンス対応: 専任ベンダー、契約上のSLA、そして文書化されたパッチ履歴により、スキャナーの検出結果やサポート対象外の依存関係に関する監査人からの質問に対応
なぜReact 18・19へのアップグレードは難しいのか
最新バージョンへのアップグレードは長期的なベストプラクティスであり続けますが、NESはその置き換えではなく、モダナイゼーションへの「橋渡し」です。とはいえ、エンタープライズ規模のアプリケーションにとって、アップグレードがすぐに実現できるケースは多くありません。
- 挙動の変化: React 18では並行機能(concurrent features)や自動バッチ処理など新しいレンダリング挙動が導入され、既存コンポーネントの動作に影響を与えることがあります。大規模なコードベースでは、安全に移行するために数か月単位のコーディング・QAが必要になることも珍しくありません。
- エコシステム上の依存関係: 古いReactアプリケーションは、それ自体にアップグレード制約を抱えるコンポーネントライブラリやビルドツールに依存していることが多く、中には移行パス自体が存在しないケースもあります。
- コストと機会損失: HeroDevsがエンタープライズ企業と協業してきた経験では、1つのコードベースの移行には一般的に5万〜25万ドル、1〜3か月の回帰テストが必要です。数十〜数百のReactアプリケーションを運用する組織にとって、それらすべてを一斉に移行することは現実的ではなく、移行作業に割く工数はそのままプロダクトロードマップから削られる時間となります。
NES for Reactは、そのための時間を買い戻します。組織はまずセキュリティ・コンプライアンス上のリスクに今すぐ対応し、その上でビジネス上の優先順位に応じて移行の順序を決めることができます。
レガシーReactのセキュリティリスク
React 19より前のバージョンにおいて、Reactは非常に少ないCVE件数を維持してきました。この事実を誇張して伝えるべきではありません。しかし2025年12月、React 19のServer Componentsにおける、認証不要のリモートコード実行(RCE)の脆弱性である「CVE-2025-55182」(CVSSスコア10.0、Critical)が発見され、主要なクラウド・CDNプロバイダーから緊急のアドバイザリが出される事態となり、発見から48時間以内にCISAのKEV(悪用が確認された脆弱性)リストに掲載されました。成熟し、十分に精査されてきたフロントエンドのエコシステムであっても、深刻な脆弱性が発生し得ることを示す事例です。この件については、別記事「When Lightning Strikes Twice: What React/Next.js' Critical RCE Reveals About Open-Source Risk」で詳しく取り上げています。一方で、AIを活用した脆弱性発見の高速化により、業界全体で開示件数が増加しています。2025年には過去最多となる48,185件のCVEが公開され、これは2024年比で20.6%の増加であり、2026年に入ってからもさらに多くの脆弱性が発見されています。
これまでの「静かな」セキュリティ履歴は、今後の安全性を保証するものではありません。特にAIによる脆弱性発見支援が普及した現在ではなおさらです。React 16・17にとって本質的な問いはシンプルです。「これらのバージョンに影響する次の脆弱性が公開されたとき、あなたはパッチを受け取れるか?」NES for Reactに加入していれば、答えは「イエス」です。HeroDevsがSLAで定めた期限内にパッチを提供します。
JavaScriptスタック全体を1つのベンダーで
NES for Reactは、HeroDevsが確立済みのJavaScript関連ラインナップに新たに加わるものであり、組織はフロントエンドとバックエンドの両方のレガシー資産を、単一のベンダー・契約・SLAのもとに統合できます。もしお使いのReactアプリケーションがEOLを迎えたNext.jsバージョン上で動いている場合は、両者のライフサイクルがどう関係するかについて、Next.jsのEOL日程とバージョンサポートタイムラインに関する関連ガイドもあわせてご覧ください。
今すぐ行動を
組織が本番環境でReact 16またはReact 17を運用しており、すぐに移行できない状況にあるなら、次に発見されるReactのCVEは、あなたの移行ロードマップを待ってはくれません。計画外の移行に踏み切るか、未修正の脆弱性を抱え続けるか——その二択である必要はありません。NES for Reactは、独自のペースでモダナイゼーションを進めながら、アプリケーションをセキュアかつコンプライアンス対応の状態で、必要な限り稼働させ続けます。
Reactアプリケーションのセキュリティ確保については、HeroDevsチームへお問い合わせください。また、React・Next.js・Node.js・Expressをまとめて1つの契約でカバーしたい場合は、カスタム見積もりを依頼することもできます。
よくある質問
1. NES for Reactはどのバージョンをカバーしていますか?
NES for Reactは、reactおよびreact-domパッケージを含むReact 16.x・17.xをカバーしています。対応範囲には、契約上のSLAのもとで提供される、全CVE深刻度レベルにわたる脆弱性修正が含まれます。
2. Reactに公式のEOL日程はありますか?
いいえ。Reactプロジェクトは正式なEOL日程を公開しておらず、LTSプログラムも維持していません。アクティブな開発と修正の提供は最新のメジャーバージョンに対してのみ行われます。古いバージョンについてもコミュニティの裁量でCriticalな修正が提供されることはありますが、公式なコミットメント、対象範囲、対応時間の定めはありません。
3. NES for Reactの導入にコード変更は必要ですか?
いいえ。NES for Reactは、既存のnpmワークフローを通じて導入できるドロップイン置き換えです。レジストリの設定をNESの専用セキュアレジストリに向け、依存関係のエントリを更新し、npm installを実行するだけです。アプリケーションのコード、ビルドパイプライン、テストは変更する必要がありません。
お問い合わせ
本記事の内容やHeroDevsのソリューション(NES等)について、日本語でのお問い合わせに対応しています。お気軽にHeroDevsお問い合わせページからご連絡ください。
原文: https://www.herodevs.com/blog-posts/herodevs-announces-never-ending-support-nes-for-react (出典: herodevs.com)