공지 아이콘
공지사항
2026년 7월 29일

HeroDevs, React Never-Ending Support (NES) 발표

지원 종료된 React 16 및 React 17을 위한 보안, 규정 준수 및 비즈니스 연속성

요약해 줘

React는 전 세계에서 가장 널리 채택된 프론트엔드 라이브러리입니다. 2025년 스택 오버플로우 개발자 설문조사에 따르면, 개발자의 약 44%가 React를 사용하며 이는 React를 가장 많이 사용되는 프론트엔드 프레임워크로 만들었습니다. 또한 구버전들은 여전히 실제 운영 환경에 깊이 뿌리내리고 있습니다. npm 다운로드 데이터에 따르면, 활발한 개발이 중단된 지 수년이 지났음에도 불구하고 React 16은 여전히 주당 약 350만 건, React 17은 약 360만 건의 다운로드를 기록하고 있습니다. 이 수치는 분명한 사실을 보여줍니다. 상당수의 기업용 프론트엔드가 상류에서 제공되는 보안 수정 사항이 제한적일 수 있는 구형 React 버전을 기반으로 운영되고 있습니다.

오늘, HeroDevs는 React 16.x 및 17. x를 지원하는 ‘Never-Ending Support (NES) ’의 출시를 발표합니다. NES for React는 애플리케이션 코드를 전혀 수정할 필요 없이 바로 적용 가능한 npm 대체 솔루션으로서, 모든 심각도 수준의 reactreact-dom에 대한 지속적인 취약점 수정 기능을 제공합니다.

지원 격차 이해하기

Node.js나 Angular 와 달리, React에는 공식적인 장기 지원(LTS) 프로그램이 없으며, 지원 종료 일정이 공개되어 있지도 않습니다. 이 프로젝트의 버전 관리 정책에 따르면 보안 수정 사항은 영향을 받는 주요 버전에 역포트되지만, 이러한 조치는 재량에 따라 이루어지며, 정의된 심각도 범위를 포함하지 않고, 대응 기한도 명시되어 있지 않습니다.

React 19가 현재 주요 버전인 만큼, React 16과 React 17은 더 이상 활발한 개발 대상에서 제외되었습니다. 이 버전들을 기반으로 구축된 애플리케이션은 프로덕션 환경에서 여전히 정상적으로 렌더링되고 작동합니다. 바로 이 점이 위험을 간과하기 쉽게 만드는 이유입니다. “아직 작동한다”는 것과 “보안과 지원이 보장된다”는 것은 전혀 다른 문제이기 때문입니다.

EOL 오픈 소스 소프트웨어와 규정 준수의 교차점

React는 자바스크립트 기반 애플리케이션에 번들되어 있기 때문에, 구버전 React에 존재하는 패치되지 않은 취약점은 해당 버전을 여전히 실행 중인 모든 애플리케이션에 함께 포함됩니다. 또한 지원이 중단된 오픈소스 소프트웨어는 보안상의 문제일 뿐만 아니라, 감사관들이 점점 더 문제점으로 지적하는 규정 준수상의 허점이기도 합니다.

SOC 2, PCI DSS v4.0, HIPAA, FedRAMP, DORA 및 EU의 NIS2 지침을 포함한 표준 및 규정은, 직접적으로 또는 위험 관리 조항을 통해 소프트웨어 구성 요소가 지속적인 지원을 받아야 하며, 알려진 취약점은 정해진 기한 내에 해결되어야 한다고 요구합니다. 패치가 적용되지 않은 CVE가 포함된 구형 React 버전을 드러내는 소프트웨어 부품 명세서(SBOM)는 자동화된 감사에서 경고 신호를 유발하며, 수정 방안이 없는 미해결 결함은 감사관, 고객 보안 검토 또는 규제 당국에 대해 정당화하기 어렵습니다.

HeroDevs NES for React: 격차 해소

HeroDevs의 ‘Never-Ending Support’는 지원이 종료된 오픈 소스 소프트웨어에 대한 안전망을 제공합니다. 저희 팀은 새로 공개된 CVE를 모니터링하고, 지원 대상 코드베이스의 취약점을 선제적으로 조사하며, 조사 결과를 ‘HeroDevs 취약점 디렉토리’에 게시하고, 안전한 비공개 레지스트리를 통해 수정된 패키지를 제공합니다. 공인 CVE 번호 부여 기관(CNA)으로서, HeroDevs는 오픈소스 소프트웨어의 취약점을 직접 식별, 해결 및 공개합니다.

NES for React는 이 모델을 React 생태계로 확장합니다:

  • React 16.x 및 17.x에 대한 CVE 수정 사항: ‘Critical’ 등급의 문제뿐만 아니라 모든 심각도 수준의 취약점에 대한 reactreact-dom의 수정 사항입니다.
  • SLA 이행 사항: 심각도에 따라 정해진 계약상 문제 해결 일정을 명시함으로써, ‘최선의 노력을 다하는’ 커뮤니티의 선의에 의존하던 방식을 대체합니다.
  • 드롭인 설치: 코드 변경이나 애플리케이션 리팩토링 없이 npm 레지스트리를 간단히 교체하기만 하면 됩니다.
  • 규정 준수 조정: 지정된 공급업체, 확약된 SLA, 그리고 지원되지 않는 종속성에 대한 스캐너 검사 결과 및 감사관의 질의 사항을 충족하는 문서화된 패치 내역.

React 18과 19로 업그레이드하는 것이 왜 이렇게 어려운 걸까요?

최신 React 버전으로의 업그레이드는 여전히 장기적인 모범 사례이며, NES는 이러한 현대화를 위한 가교 역할일 뿐, 이를 대체하는 것은 아닙니다. 하지만 엔터프라이즈급 애플리케이션의 경우, 업그레이드가 즉시 이루어지는 경우는 거의 없습니다:

  • 동작 변경: React 18에서는 동시 실행 기능과 자동 배치 처리 등 새로운 렌더링 동작이 도입되었으며, 이로 인해 기존 컴포넌트의 동작 방식이 달라질 수 있습니다. 대규모 코드베이스의 경우, 안전하게 마이그레이션하기 위해 수개월에 걸친 코딩 및 QA 작업이 필요한 경우가 많습니다.
  • 생태계에 대한 의존성: 오래된 React 애플리케이션은 종종 자체적인 업그레이드 제약 조건을 가진 컴포넌트 라이브러리나 빌드 도구에 의존하고 있으며, 일부는 아예 직접적인 업그레이드 경로가 없는 경우도 있습니다.
  • 비용과 기회 비용: HeroDevs가 엔터프라이즈 팀과 협력한 경험을 바탕으로 볼 때, 단일 코드베이스를 마이그레이션하는 데는 일반적으로 5만 달러에서 25만 달러의 비용이 소요되며, 애플리케이션당 1~3개월의 회귀 테스트 기간이 필요합니다. 수십 개 또는 수백 개의 React 애플리케이션을 운영하는 조직은 이 모든 애플리케이션을 하룻밤 사이에 마이그레이션할 수 없으며, 마이그레이션 스프린트를 진행할 때마다 제품 로드맵에서 해당 작업에 필요한 자원이 할당됩니다.

React용 NES는 그 시간을 되찾아 줍니다. 팀은 먼저 보안 및 규정 준수 위험 요소를 해결한 뒤, 비즈니스 우선순위에 따라 마이그레이션 순서를 정합니다.

구형 React의 보안 위험

버전 19 이전까지 React는 CVE 기록이 현저히 적은 편이었으며, 이와 달리 주장하는 것은 오해를 불러일으킬 수 있습니다. 그러던 중 2025년 12월, React 19 서버 컴포넌트에서 발견된 치명적(CVSS 10.0) 수준의 인증 없이 원격 코드 실행(RCE) 취약점인 CVE-2025-55182로 인해 주요 클라우드 및 CDN 제공업체들이 긴급 권고문을 발표했으며, 이 취약점은 48시간 만에 CISA의 ‘악용이 확인된 취약점(Known Exploited Vulnerabilities)’ 목록에 등재되었습니다. 이는 성숙하고 철저한 검증을 거친 프론트엔드 생태계조차도 심각한 취약점에 노출될 수 있음을 보여줍니다. 저희는 해당 사건과 이 사건이 오픈소스 위험에 대해 시사하는 바를 『번개가 두 번 치다: React/Next.js 의 치명적 RCE가 오픈소스 위험에 대해 드러내는 것』이라는 기사에서 다룬 바 있습니다. 한편, AI 기반 취약점 탐지로 인해 업계 전반의 공개 건수가 급증하고 있습니다. 2025년에는 사상 최대인 48,185건의 CVE가 공개되었으며, 이는 2024년 대비 20.6% 증가한 수치이며, 2026년에도 더 많은 취약점이 발견되고 있습니다.

과거에 보안 문제가 없었다고 해서 미래의 안전이 보장되는 것은 아닙니다. 특히 요즘처럼 AI 기반 취약점 탐지 도구가 널리 활용되는 상황에서는 더욱 그렇습니다. React 16 및 17의 경우, 실질적인 질문은 간단합니다. 해당 버전에 영향을 미치는 다음 취약점이 공개될 때 패치를 받을 수 있을까요? React용 NES를 사용하면 그 대답은 ‘예’입니다. HeroDevs는 SLA 기간 내에 패치를 제공합니다.

자바스크립트 스택을 위한 단일 공급업체

React용 NES는 이미 확립된 HeroDevs의 자바스크립트 제품군에 합류하므로, 기업은 프론트엔드 및 백엔드 레거시 시스템을 단일 공급업체, 계약 및 SLA 하에 통합할 수 있습니다. React 애플리케이션이 지원 종료된 버전의 Next.js 에서 실행되는 경우, 두 라이프사이클이 어떻게 교차하는지에 대한 내용은 Next.js 의 지원 종료일 및 버전 지원 일정에 관한 관련 가이드를 참조하시기 바랍니다.

실천하기

조직에서 프로덕션 환경에서 React 16 또는 React 17을 운영 중이며 즉시 마이그레이션할 수 없는 경우, 다음 React CVE는 귀사의 마이그레이션 로드맵을 기다려 주지 않을 것입니다. 계획되지 않은 마이그레이션과 패치되지 않은 취약점 사이에서 선택할 필요는 없습니다. NES for React는 귀사가 자체 일정에 따라 현대화를 진행하는 동안, 필요한 기간 동안 애플리케이션을 안전하게 보호하고 규정 준수를 유지하며 정상적으로 운영되도록 보장합니다.

React 애플리케이션의 보안을 강화하려면 HeroDevs 팀에 문의하시거나, React를 Next.js, Node.js, Express 와 하나의 계약으로 묶어 제공하는 맞춤형 견적을 받아보세요.

자주 묻는 질문

1. NES for React는 어떤 React 버전을 지원하나요?

NES for React는 reactreact-dom 패키지를 포함하여 React 16.x 및 17.x를 지원합니다. 지원 범위에는 모든 CVE 심각도 수준의 취약점 수정 조치가 포함되며, 이는 계약상 SLA에 따라 제공됩니다.

2. React에는 공식적인 지원 종료일이 있나요?

아닙니다. React 프로젝트는 공식적인 지원 종료(EOL) 일정을 발표하지 않으며, 장기 지원(LTS) 프로그램도 운영하지 않습니다. 활발한 개발과 버그 수정은 최신 메이저 버전에만 적용됩니다. 이전 버전에는 커뮤니티의 재량에 따라 중대한 버그 수정이 제공될 수 있으나, 이에 대한 공식적인 약속이나 명확한 범위, 대응 일정은 없습니다.

3. NES for React를 설치하려면 코드를 수정해야 하나요?

아닙니다. React용 NES는 기존 npm 워크플로를 통해 설치되는 드롭인 대체 솔루션입니다. 레지스트리 설정을 보안이 보장된 NES 레지스트리로 지정하고, 종속성 항목을 업데이트한 다음 npm install을 실행하기만 하면 됩니다. 애플리케이션 코드, 빌드 파이프라인 및 테스트는 그대로 유지됩니다.

매월 제공되는 오픈소스 인사이트