무슨 일이 일어났나요?
2025년 12월 5일 오전 8시 56분(UTC)쯤에 인터넷의 상당 부분이 작동을 멈췄습니다. 수백만 개의 웹 사이트의 백본인 Cloudflare는 전 세계적으로 **모든 HTTP 트래픽의 거의 28%**에 영향을 미치는 심각한 중단을 겪었습니다.
소셜 미디어에 대한 최초의 소문은 대규모 DDoS(분산 서비스 거부) 공격을 지적했지만 현실은 훨씬 더 기술적이고 우려되는 부분이었습니다. 이 중단은 Cloudflare가 자체적으로 보안 결함을 수정하려는 시도로 인해 발생했습니다. 회사는 새로 공개된 “React2Shell” 취약점(CVE-2025-55182)에 대한 완화 패치를 배포했지만 수정 사항 자체에는 네트워크 전반에 걸쳐 연속적인 오류를 유발하는 오류가 포함되어 있었습니다.
서비스는 UTC 오전 9시 12분에 대부분 복구되었지만, 그 16분 동안 인터넷은 사실상 숨을 쉬었습니다.
주요 세부정보
- 원인: CVE-2025-55182(React2Shell)를 완화하기 위해 배포된 잘못된 구성 변경입니다.
- 영향: 전 세계 HTTP 트래픽의 약 20-28%가 중단되었습니다.
- 영향을 받는 서비스: DoorDash, Crunchyroll, Cash App 등 주요 플랫폼이 오프라인 상태가 되거나 심각한 오류가 발생했습니다.
- 취약성: React2Shell은 React/Next.js 생태계에 영향을 미치는 중요한 인증되지 않은 원격 코드 실행(RCE) 결함으로 불과 이틀 전에 공개되었습니다.
중요한 이유
이 사건은 현대 웹의 극도의 취약성을 강조합니다. Cloudflare와 같은 단일 공급자가 재채기를 하면 전체 인터넷이 감기에 걸립니다.
보안 딜레마
Cloudflare는 불가능한 위치에 있었습니다. 네트워크를 “React2Shell” 취약점(공격이 이미 적극적으로 악용하고 있음)에 노출되도록 두거나 신속한 수정을 배포했습니다. 그들은 후자를 선택했지만 배포 속도로 인해 치명적인 “잘못된 패치” 시나리오가 발생했습니다. 이는 제로데이 패치 관리라는 고위험 포커 게임을 강조합니다.
사이트 소유자용
하나의 CDN 또는 보안 제공업체에만 의존하는 경우 가동 시간이 좌우됩니다. Cloudflare는 일반적으로 매우 안정적이지만, 오늘의 이벤트는 중복성이 업무상 중요한 애플리케이션의 핵심임을 상기시켜줍니다.
뒷이야기
“React2Shell” 취약점(CVE-2025-55182)은 2025년 12월 3일에 공개되었습니다. 이는 Next.js와 같이 널리 사용되는 프레임워크를 포함하여 React JavaScript 라이브러리 생태계에 영향을 미칩니다. 인증 없이 원격 코드 실행을 허용하므로 “심각도 10” 위협으로 간주됩니다. 랜섬웨어 그룹을 포함한 위협 행위자들은 거의 즉시 이 결함을 검색하고 악용하기 시작했으며, 이로 인해 Cloudflare와 같은 인프라 제공업체는 고객을 보호하기 위해 시간과 다투게 되었습니다.
기술 분석: 패치가 실패한 이유
이 취약점은 특정 셸 실행 라이브러리로 특별히 구성된 경우 React가 사용자 제공 입력의 서버 측 렌더링(SSR)을 처리하는 방식에서 발생합니다.
- 악용: 공격자는 base64로 인코딩된 페이로드가 포함되어 특별히 제작된 HTTP 헤더를 보냅니다. 서버가 React 환경에서 취약한 로깅 패키지를 사용하여 이 헤더를 기록하면 페이로드가 실행됩니다.
- 수정(의도): Cloudflare 엔지니어는 들어오는 요청이 고객 서버에 도달하기 전에 이 특정 헤더 패턴을 제거하기 위해 전역 WAF(웹 애플리케이션 방화벽) 규칙을 작성했습니다.
- 실패: WAF 규칙에 사용된 정규식(regex)은 “치명적”이었습니다. 역추적 루프가 포함되어 있습니다. 긴 헤더가 포함된 합법적인 트래픽을 처리할 때 정규식 엔진은 Cloudflare의 에지 노드에서 CPU를 100% 소비했습니다.
- 캐스케이드: 노드가 CPU 100%에 도달하면 상태 확인에 대한 응답이 중지되었습니다. 로드 밸런서는 트래픽을 인접 노드로 라우팅했는데, 이 노드도 CPU 100%에 도달했습니다. 몇 분 안에 전체 제어 영역이 포화되었습니다.
이는 “안전한 배포”에 대한 고전적인 교훈이 됩니다. 보안 수정 사항도 코드이며, 네트워크 가장자리에 있는 테스트되지 않은 코드는 장전된 총입니다.
전문가 반응
보안 분석가는 가동 중단이 고통스러웠지만 React2Shell 취약점을 대량으로 악용하는 대안은 더 나빴을 수도 있다고 지적했습니다. SecurityWeek의 보고서는 “이 사건은 대규모 클라우드 인프라의 신속한 완화의 위험을 강조하지만 널리 사용되는 소프트웨어 라이브러리에서 새로 공개된 심각한 취약점으로 인한 지속적인 위협도 강조합니다.”라고 말했습니다.
다음은 무엇입니까?
Cloudflare는 이미 문제가 있는 특정 구성을 롤백하고 검증된 수정 사항으로 교체했습니다.
타임라인:
- 즉시: 서비스가 복원되었습니다.
- 단기: 구성 변경이 어떻게 카나리아 테스트 보호를 우회했는지 정확하게 설명하는 Cloudflare 엔지니어링의 자세한 “사후” 블로그 게시물을 기대하세요.
- 장기적: React와 같은 유비쿼터스 소프트웨어 결함에 대한 글로벌 완화를 안전하게 배포하는 방법에 대한 업계의 새로운 대화입니다.
더 넓은 맥락: 복잡성의 취약성
이 사건은 고립되지 않았습니다. “빠르게 움직이고 문제를 해결”하려는 경쟁에서 전체 웹 스택은 점점 더 취약해졌습니다. React는 강력하기는 하지만 실제로 서버에서 실행되는 코드가 무엇인지 모호하게 하는 추상화 계층을 도입합니다. 복잡한 프레임워크를 자동화된 보안 완화 및 분산형 에지 네트워크와 결합하면 “나비 효과”가 일반적인 시스템을 만들 수 있습니다. WAF 규칙의 단일 정규식 문자는 수백만 명의 사용자에 대해 인터넷을 효과적으로 끌 수 있습니다.
이 전개를 지켜보는 CIO와 CTO는 오늘 팀에 두 가지 질문을 던질 것입니다.
- “인프라가 React2Shell에 취약합니까?”
- “CDN이 다운되면 장애 조치 계획이 있나요?”
많은 사람들에게 두 번째 질문에 답하지 못하는 것이 진정한 위기라고 생각합니다.
결론
오늘의 인터넷 정전은 해커의 공격이 아니라 구조 시도 중 자해된 상처였습니다. Cloudflare는 “React2Shell” 악용으로부터 웹을 보호하려고 시도했지만 실수로 보호막을 깨뜨렸습니다. 이는 중앙화된 디지털 인프라가 어떻게 형성되었는지, 그리고 중요한 보안 위협에 직면하여 속도와 안정성의 균형을 맞추는 것이 얼마나 어려운지를 극명하게 상기시켜 줍니다.
출처 (3)
- tomsguide.com Tom's Guide Live Coverage
- theregister.com React2Shell Exploitation
- securityweek.com Cloudflare Outage Cause
🦋 Bluesky 토론
Bluesky에서 토론하기