[주의!] 문서의 이전 버전(에 수정)을 보고 있습니다. 최신 버전으로 이동
분류
↑ 상위 문서: Cloudflare
사건 사고
① 주의. 사건·사고 관련 내용을 설명합니다.
② 실제로 발생한 사건 사고에 관련된 내용을 다룹니다.
① 주의. 사건·사고 관련 내용을 설명합니다.
② 실제로 발생한 사건 사고에 관련된 내용을 다룹니다.
Cloudflare Global Network 오류 | ||
![]() | ||
발생일 | 2025년 11월 18일 | |
발생 위치 | ||
유형 | 서버 에러 | |
원인 | 코드 오류 | |
1. 개요[편집]
2025년 11월 18일 Cloudflare Global Network 오류로 인하여 전세계의 Cloudflare을 쓰는 웹 및 앱이 사용 불능이 된 사태.
2. 원인 및 대응[편집]
원본.


2025년 11월 18일 11:20 UTC에(이 블로그의 모든 시간은 UTC 기준), Cloudflare 네트워크에서 핵심 트래픽 전달에 심각한 장애가 발생하기 시작했습니다. 이로 인해 인터넷 사용자가 고객 사이트에 접속하려고 하면, Cloudflare 네트워크 내부에서 문제가 발생했다는 오류 페이지가 표시되었습니다.


이 문제는 사이버 공격이나 악의적 활동과는 직접적·간접적으로도 관련이 없었습니다. 대신, 데이터베이스 시스템 중 하나의 권한 변경으로 인해, Bot Management 시스템에서 사용하는 “feature file”에 여러 항목이 출력되면서 문제가 발생했습니다. 그 결과, 해당 feature file의 크기가 두 배로 늘어났고, 이 커진 파일이 네트워크를 구성하는 모든 머신에 전파되었습니다.
이 머신들에서 트래픽을 라우팅하는 소프트웨어는 Bot Management 시스템을 최신 위협에 맞게 유지하기 위해 이 feature file을 읽습니다. 그런데 이 소프트웨어에는 파일 크기에 제한이 있었고, 두 배로 커진 파일 크기가 그 한계를 초과하면서 소프트웨어가 실패하게 된 것입니다.
처음에는 우리가 관찰한 증상이 대규모 DDoS 공격 때문이라고 잘못 의심했지만, 이후 핵심 원인을 정확히 파악하여 예상보다 커진 feature file의 전파를 중단하고 이전 버전으로 교체할 수 있었습니다. 14:30경에는 핵심 트래픽이 대부분 정상적으로 흐르기 시작했고, 그 후 몇 시간 동안 네트워크 각 부분에 급격히 몰린 트래픽을 완화하는 작업을 진행했습니다. 17:06에는 Cloudflare의 모든 시스템이 정상적으로 작동했습니다.
고객과 인터넷 전반에 끼친 영향에 대해 사과드립니다. Cloudflare가 인터넷 생태계에서 중요한 역할을 하는 만큼, 시스템 장애는 용납될 수 없습니다. 네트워크가 일정 시간 동안 트래픽을 라우팅할 수 없었던 상황은 팀의 모든 구성원에게 깊은 고통이었습니다. 오늘 여러분을 실망시킨 것을 알고 있습니다.
이 글은 정확히 어떤 일이 일어났고, 어떤 시스템과 프로세스가 실패했는지를 자세히 설명하는 내용입니다. 또한 이번과 같은 장애가 다시 발생하지 않도록 하기 위한 계획의 시작점이기도 하지만, 끝은 아닙니다.
장애 상황
아래 차트는 Cloudflare 네트워크에서 발생한 5xx HTTP 상태 코드의 양을 보여줍니다. 정상적으로는 이 수치가 매우 낮아야 하는데, 장애가 시작되기 전까지는 정상적으로 낮은 상태였습니다.


11:20 이전의 수치는 네트워크 전반에서 관찰된 5xx 오류의 정상 기준선입니다. 이후 급증과 변동은 잘못된 feature file을 로드하면서 시스템이 실패한 것을 보여줍니다. 흥미로운 점은 시스템이 잠시 회복되기도 했다는 것으로, 내부 오류에서는 매우 드문 현상이었습니다.
설명하자면, 이 파일은 ClickHouse 데이터베이스 클러스터에서 5분마다 쿼리를 통해 생성되었고, 권한 관리를 개선하기 위해 점진적으로 업데이트되고 있었습니다. 잘못된 데이터는 업데이트된 클러스터 일부에서 쿼리가 실행될 때만 생성되었습니다. 따라서 매 5분마다 정상 또는 잘못된 구성 파일 세트가 생성되어 빠르게 네트워크 전체에 전파될 가능성이 있었던 것입니다.
이런 변동 때문에 정확히 무슨 일이 일어나고 있는지 파악하기 어려웠습니다. 시스템이 때로는 정상 구성 파일을, 때로는 잘못된 구성 파일을 네트워크에 배포하면서 회복했다가 다시 실패했기 때문입니다. 처음에는 공격 때문일 수 있다고 생각했지만, 결국 모든 ClickHouse 노드가 잘못된 구성 파일을 생성하게 되었고, 변동은 실패 상태로 안정화되었습니다.
오류는 근본 원인이 확인되고 해결되기 시작한 14:30까지 계속되었습니다. 문제는 잘못된 feature file의 생성과 전파를 중단하고, 알려진 정상 파일을 feature file 배포 큐에 수동으로 삽입한 후, 핵심 프록시를 강제로 재시작함으로써 해결했습니다.
위 차트에서 남아 있는 긴 꼬리는, 문제가 발생한 나머지 서비스들을 팀이 재시작하는 과정이며, 17:06에 5xx 오류량이 정상으로 돌아왔습니다.
영향을 받은 서비스는 다음과 같습니다:
HTTP 5xx 오류가 발생한 것뿐만 아니라, 장애 기간 동안 CDN 응답 지연(latency)도 크게 증가했습니다. 이는 디버깅 및 모니터링 시스템이 많은 CPU를 사용했기 때문인데, 이 시스템들은 잡히지 않은 오류를 자동으로 추가 디버깅 정보와 함께 처리하도록 설계되어 있습니다.
Cloudflare가 요청을 처리하는 방식과, 오늘 이 과정에서 무엇이 잘못되었는지에 대한 내용.
Cloudflare로 들어오는 모든 요청은 네트워크에서 정해진 경로를 거칩니다. 요청은 브라우저에서 웹페이지를 불러오거나, 모바일 앱이 API를 호출하거나, 다른 서비스에서 자동으로 들어오는 트래픽일 수 있습니다.
이 요청들은 먼저 HTTP와 TLS 계층에서 처리되고, 그다음 핵심 프록시 시스템(“Frontline”, 줄여서 FL)을 통과하며, 필요하면 Pingora를 통해 캐시를 조회하거나 원본 서버에서 데이터를 가져옵니다.
핵심 프록시가 작동하는 방식에 대해서는 여기서 이전에 더 자세히 공유한 바 있습니다.


요청이 핵심 프록시를 통과하는 동안, Cloudflare는 네트워크에서 제공하는 다양한 보안 및 성능 기능을 실행합니다. 프록시는 각 고객의 고유한 구성과 설정을 적용하며, WAF 규칙 적용, DDoS 방어, 트래픽을 Developer Platform이나 R2로 라우팅하는 작업 등을 수행합니다. 이는 도메인별 모듈을 통해 이루어지며, 모듈이 프록시를 통과하는 트래픽에 구성과 정책 규칙을 적용합니다.
그 모듈 중 하나인 Bot Management가 오늘 장애의 원인이었습니다.
Cloudflare의 Bot Management에는, 그 외 여러 시스템과 함께, 네트워크를 통과하는 모든 요청에 대해 봇 점수(bot score)를 생성하는 머신러닝 모델이 포함되어 있습니다. 고객들은 이 봇 점수를 사용해 어떤 봇이 사이트에 접근할 수 있는지 제어합니다.
이 모델은 “feature” 구성 파일을 입력으로 사용합니다. 여기서 feature란 요청이 자동화된 것인지 아닌지를 판단하기 위해 머신러닝 모델이 사용하는 개별 특성을 말하며, feature 구성 파일은 이러한 개별 feature들의 모음입니다.
이 feature 파일은 몇 분마다 갱신되어 전체 네트워크에 배포되며, 인터넷 트래픽의 변동에 신속히 대응할 수 있게 해줍니다. 새로운 유형의 봇이나 공격에 빠르게 대응해야 하기 때문에, 이 파일은 자주 그리고 빠르게 배포되는 것이 매우 중요합니다.
그런데 이 파일을 생성하는 기반 ClickHouse 쿼리 동작이 변경되면서, feature 행이 중복되어 파일 크기가 증가했습니다. 이전에는 고정 크기였던 feature 파일이 커지면서, 봇 모듈에서 오류가 발생하게 된 것입니다.
그 결과, 봇 모듈에 의존하는 모든 트래픽에 대해 고객 트래픽을 처리하는 핵심 프록시 시스템에서 HTTP 5xx 오류가 반환되었습니다. 이 영향은 또한 핵심 프록시에 의존하는 Workers KV와 Access에도 미쳤습니다.
이번 사건과 관련은 없지만, 현재 고객 트래픽을 내부적으로 FL2라고 부르는 새로운 프록시 서비스로 이전하고 있었습니다. 두 버전 모두 문제의 영향을 받았지만, 관찰된 영향은 달랐습니다.
새로운 FL2 프록시 엔진을 사용하는 고객은 HTTP 5xx 오류를 경험했습니다. 기존 FL 프록시 엔진을 사용하는 고객은 오류는 없었지만, 봇 점수가 올바르게 생성되지 않아 모든 트래픽이 봇 점수 0으로 처리되었습니다. 봇 차단 규칙을 적용한 고객은 많은 오탐(false positive)을 경험했을 것입니다. 봇 점수를 규칙에서 사용하지 않은 고객은 영향을 받지 않았습니다.
또한 우리를 혼란스럽게 하고 이번 사건이 공격일 수 있다고 생각하게 만든 증상 중 하나는 Cloudflare 상태 페이지가 다운된 것이었습니다. 상태 페이지는 Cloudflare 인프라와 전혀 의존성이 없는 외부에서 호스팅되고 있었습니다. 우연의 일치였지만, 일부 팀은 공격자가 시스템과 상태 페이지를 동시에 대상으로 하고 있다고 오인하게 되었습니다. 당시 상태 페이지를 방문한 사용자는 오류 메시지를 보게 되었습니다.


내부 사고 채팅방에서는, 이번 문제가 최근 발생한 대규모 Aisuru DDoS 공격의 연장일 수 있다는 우려가 있었습니다.


쿼리 동작 변경
앞서 언급했듯, 기본 쿼리 동작 변경으로 인해 feature 파일에 중복된 행이 많이 포함되게 되었습니다. 문제의 데이터베이스 시스템은 ClickHouse 소프트웨어를 사용합니다.
참고로, ClickHouse 분산 쿼리가 어떻게 작동하는지 이해하면 도움이 됩니다. ClickHouse 클러스터는 여러 샤드(shard)로 구성됩니다. 모든 샤드에서 데이터를 쿼리하려면, default라는 데이터베이스에 있는 “Distributed” 엔진 기반의 분산 테이블을 사용합니다. Distributed 엔진은 r0 데이터베이스의 기본 테이블을 쿼리하는데, 이 기본 테이블이 각 ClickHouse 샤드에 데이터가 실제로 저장되는 곳입니다.
Distributed 테이블에 대한 쿼리는 공유 시스템 계정을 통해 실행됩니다. 분산 쿼리의 보안과 신뢰성을 개선하기 위한 노력의 일환으로, 향후에는 초기 사용자 계정으로 쿼리를 실행하도록 작업이 진행되고 있습니다.
오늘 이전에는, ClickHouse 사용자가 시스템 테이블(system.tables, system.columns 등)을 통해 테이블 메타데이터를 쿼리할 때 default 데이터베이스의 테이블만 볼 수 있었습니다.
사용자들이 이미 r0 기본 테이블에 암묵적으로 접근할 수 있었기 때문에, 11:05에 이 접근을 명시적으로 허용하도록 변경했습니다. 이를 통해 사용자가 해당 테이블의 메타데이터도 볼 수 있게 되었고, 모든 분산 서브쿼리가 초기 사용자 계정에서 실행되도록 하여, 쿼리 제한과 접근 권한을 더 세밀하게 평가할 수 있게 되었습니다. 이렇게 하면 한 사용자의 잘못된 서브쿼리가 다른 사용자에게 영향을 미치는 것을 방지할 수 있습니다.
하지만 이 변경으로 인해, 이전에는 “default” 데이터베이스만 포함될 것이라고 가정했던 쿼리 결과가 이제 모든 사용자가 접근할 수 있는 정확한 테이블 메타데이터를 반환하게 되었습니다.
쿼리가 데이터베이스 이름을 필터링하지 않는 점에 주목해야 합니다. ClickHouse 클러스터 사용자들에게 명시적 권한을 점진적으로 적용하는 과정에서, 11:05 변경 이후 위 쿼리는 r0 데이터베이스에 저장된 기본 테이블 때문에 컬럼이 “중복”되어 반환되기 시작했습니다.
안타깝게도, 이 쿼리는 Bot Management의 feature file 생성 로직에서 각 입력 “feature”를 구성하는 데 사용되는 쿼리 유형이었습니다.
위 쿼리는 (단순화한 예시처럼) 컬럼 테이블을 반환하게 됩니다.


하지만 사용자에게 추가 권한을 부여한 결과, 이제 쿼리 응답에는 r0 스키마의 모든 메타데이터가 포함되게 되었고, 그로 인해 응답 행 수가 사실상 두 배 이상 늘어나 최종 파일 출력에서 feature 수에도 영향을 미쳤습니다.
메모리 사전 할당
프록시 서비스에서 실행되는 각 모듈에는 메모리 사용을 무한대로 늘어나지 않도록 제한하고, 성능 최적화를 위해 메모리를 사전 할당(preallocation) 하는 여러 제한이 설정되어 있습니다.
이번 경우, Bot Management 시스템에는 런타임에 사용할 수 있는 머신러닝 feature 수에 제한이 있었는데, 현재 이 제한은 200으로 설정되어 있으며, 실제 사용 중인 feature 수는 약 60개였습니다. 이 제한은 성능을 위해 feature에 대해 메모리를 미리 할당하기 때문에 존재합니다.
그런데 잘못된 파일에 200개 이상의 feature가 포함되어 서버에 배포되면서, 이 제한을 초과하게 되었고, 시스템이 panic 상태에 빠지게 되었습니다. 이 확인을 수행하고 처리되지 않은 오류의 원인이 된 FL2 Rust 코드가 아래에 표시됩니다.


이로 인해 다음과 같은 panic이 발생했고, 결국 HTTP 5xx 오류로 이어졌습니다.
사건 발생 동안의 기타 영향
사건 발생 동안 핵심 프록시에 의존하는 다른 시스템들도 영향을 받았습니다. 여기에는 Workers KV와 Cloudflare Access가 포함됩니다. 팀은 13:04에 Workers KV를 패치하여 핵심 프록시를 우회하도록 했고, 이후 이들 시스템과 Workers KV에 의존하는 모든 하위 시스템(예: Access)에서 오류율이 줄어들었습니다.
또한 Cloudflare Dashboard도 영향을 받았는데, 내부적으로 Workers KV를 사용하고 로그인 과정에 Cloudflare Turnstile이 포함되어 있었기 때문입니다.
이번 장애로 Turnstile도 영향을 받아, 활성 대시보드 세션이 없는 고객은 로그인할 수 없었습니다. 이로 인해 11:30 ~ 13:10과 14:30 ~ 15:30 두 시간대에 가용성이 감소했습니다.


첫 번째 기간인 11:30~13:10은 Workers KV에 대한 영향 때문이었으며, 일부 제어 플레인 및 대시보드 기능이 이에 의존하고 있었습니다. 13:10에 Workers KV가 핵심 프록시 시스템을 우회하도록 설정되면서 복구되었습니다.
대시보드에 대한 두 번째 영향 기간은 feature configuration 데이터를 복원한 후 발생했습니다. 로그인 시도의 누적(backlog)이 대시보드를 압도하기 시작했고, 이 누적과 재시도 시도가 결합되면서 지연(latency)이 증가하고 대시보드 가용성이 감소했습니다. 제어 플레인 동시성(concurrency)을 확장하여 약 15:30에 가용성이 회복되었습니다.
복구 조치 및 후속 조치 단계
시스템이 정상적으로 온라인 상태로 복구된 지금, 앞으로 이런 장애에 대비해 시스템을 강화하는 작업이 이미 시작되었습니다. 특히 다음과 같은 조치를 진행 중입니다:

2025년 11월 18일 11:20 UTC에(이 블로그의 모든 시간은 UTC 기준), Cloudflare 네트워크에서 핵심 트래픽 전달에 심각한 장애가 발생하기 시작했습니다. 이로 인해 인터넷 사용자가 고객 사이트에 접속하려고 하면, Cloudflare 네트워크 내부에서 문제가 발생했다는 오류 페이지가 표시되었습니다.

이 문제는 사이버 공격이나 악의적 활동과는 직접적·간접적으로도 관련이 없었습니다. 대신, 데이터베이스 시스템 중 하나의 권한 변경으로 인해, Bot Management 시스템에서 사용하는 “feature file”에 여러 항목이 출력되면서 문제가 발생했습니다. 그 결과, 해당 feature file의 크기가 두 배로 늘어났고, 이 커진 파일이 네트워크를 구성하는 모든 머신에 전파되었습니다.
이 머신들에서 트래픽을 라우팅하는 소프트웨어는 Bot Management 시스템을 최신 위협에 맞게 유지하기 위해 이 feature file을 읽습니다. 그런데 이 소프트웨어에는 파일 크기에 제한이 있었고, 두 배로 커진 파일 크기가 그 한계를 초과하면서 소프트웨어가 실패하게 된 것입니다.
처음에는 우리가 관찰한 증상이 대규모 DDoS 공격 때문이라고 잘못 의심했지만, 이후 핵심 원인을 정확히 파악하여 예상보다 커진 feature file의 전파를 중단하고 이전 버전으로 교체할 수 있었습니다. 14:30경에는 핵심 트래픽이 대부분 정상적으로 흐르기 시작했고, 그 후 몇 시간 동안 네트워크 각 부분에 급격히 몰린 트래픽을 완화하는 작업을 진행했습니다. 17:06에는 Cloudflare의 모든 시스템이 정상적으로 작동했습니다.
고객과 인터넷 전반에 끼친 영향에 대해 사과드립니다. Cloudflare가 인터넷 생태계에서 중요한 역할을 하는 만큼, 시스템 장애는 용납될 수 없습니다. 네트워크가 일정 시간 동안 트래픽을 라우팅할 수 없었던 상황은 팀의 모든 구성원에게 깊은 고통이었습니다. 오늘 여러분을 실망시킨 것을 알고 있습니다.
이 글은 정확히 어떤 일이 일어났고, 어떤 시스템과 프로세스가 실패했는지를 자세히 설명하는 내용입니다. 또한 이번과 같은 장애가 다시 발생하지 않도록 하기 위한 계획의 시작점이기도 하지만, 끝은 아닙니다.
장애 상황
아래 차트는 Cloudflare 네트워크에서 발생한 5xx HTTP 상태 코드의 양을 보여줍니다. 정상적으로는 이 수치가 매우 낮아야 하는데, 장애가 시작되기 전까지는 정상적으로 낮은 상태였습니다.

11:20 이전의 수치는 네트워크 전반에서 관찰된 5xx 오류의 정상 기준선입니다. 이후 급증과 변동은 잘못된 feature file을 로드하면서 시스템이 실패한 것을 보여줍니다. 흥미로운 점은 시스템이 잠시 회복되기도 했다는 것으로, 내부 오류에서는 매우 드문 현상이었습니다.
설명하자면, 이 파일은 ClickHouse 데이터베이스 클러스터에서 5분마다 쿼리를 통해 생성되었고, 권한 관리를 개선하기 위해 점진적으로 업데이트되고 있었습니다. 잘못된 데이터는 업데이트된 클러스터 일부에서 쿼리가 실행될 때만 생성되었습니다. 따라서 매 5분마다 정상 또는 잘못된 구성 파일 세트가 생성되어 빠르게 네트워크 전체에 전파될 가능성이 있었던 것입니다.
이런 변동 때문에 정확히 무슨 일이 일어나고 있는지 파악하기 어려웠습니다. 시스템이 때로는 정상 구성 파일을, 때로는 잘못된 구성 파일을 네트워크에 배포하면서 회복했다가 다시 실패했기 때문입니다. 처음에는 공격 때문일 수 있다고 생각했지만, 결국 모든 ClickHouse 노드가 잘못된 구성 파일을 생성하게 되었고, 변동은 실패 상태로 안정화되었습니다.
오류는 근본 원인이 확인되고 해결되기 시작한 14:30까지 계속되었습니다. 문제는 잘못된 feature file의 생성과 전파를 중단하고, 알려진 정상 파일을 feature file 배포 큐에 수동으로 삽입한 후, 핵심 프록시를 강제로 재시작함으로써 해결했습니다.
위 차트에서 남아 있는 긴 꼬리는, 문제가 발생한 나머지 서비스들을 팀이 재시작하는 과정이며, 17:06에 5xx 오류량이 정상으로 돌아왔습니다.
영향을 받은 서비스는 다음과 같습니다:
서비스 / 제품 | 영향 설명 |
핵심 CDN 및 보안 서비스 | HTTP 5xx 상태 코드. 이 글 상단의 스크린샷은 최종 사용자에게 표시된 일반적인 오류 페이지를 보여줍니다. |
Turnstile | Turnstile 로드 실패 |
Workers KV | Workers KV에서 HTTP 5xx 오류가 크게 증가했습니다. 이는 핵심 프록시가 실패하면서 KV의 “프론트엔드” 게이트웨이에 대한 요청이 실패했기 때문입니다. |
대시보드 | 대시보드는 대부분 정상적으로 작동했지만, 로그인 페이지에서 Turnstile을 사용할 수 없어서 대부분의 사용자가 로그인할 수 없었습니다. |
이메일 보안 | 이메일 처리와 전달에는 영향이 없었지만, IP 평판 소스에 대한 일시적인 접근 불가가 발생하여 스팸 탐지 정확도가 떨어지고 일부 신규 도메인 탐지가 작동하지 않았습니다. 다만 고객에게 심각한 영향은 없었습니다. 또한 일부 Auto Move 작업이 실패했지만, 영향을 받은 모든 메시지는 검토 및 복구되었습니다. |
Access | 인증 실패가 대부분 사용자에게 광범위하게 발생했으며, 사건 시작 시점부터 13:05 롤백이 시작될 때까지 지속되었습니다. 기존 Access 세션은 영향을 받지 않았습니다. 모든 실패한 인증 시도는 오류 페이지를 반환했으므로, 인증이 실패하는 동안 사용자는 대상 애플리케이션에 도달하지 못했습니다. 이 기간 동안 성공한 로그인은 정상적으로 기록되었습니다. 그 시점에 시도된 모든 Access 구성 업데이트는 전면 실패하거나 매우 느리게 전파되었으며, 현재 모든 구성 업데이트는 복구되었습니다. |
HTTP 5xx 오류가 발생한 것뿐만 아니라, 장애 기간 동안 CDN 응답 지연(latency)도 크게 증가했습니다. 이는 디버깅 및 모니터링 시스템이 많은 CPU를 사용했기 때문인데, 이 시스템들은 잡히지 않은 오류를 자동으로 추가 디버깅 정보와 함께 처리하도록 설계되어 있습니다.
Cloudflare가 요청을 처리하는 방식과, 오늘 이 과정에서 무엇이 잘못되었는지에 대한 내용.
Cloudflare로 들어오는 모든 요청은 네트워크에서 정해진 경로를 거칩니다. 요청은 브라우저에서 웹페이지를 불러오거나, 모바일 앱이 API를 호출하거나, 다른 서비스에서 자동으로 들어오는 트래픽일 수 있습니다.
이 요청들은 먼저 HTTP와 TLS 계층에서 처리되고, 그다음 핵심 프록시 시스템(“Frontline”, 줄여서 FL)을 통과하며, 필요하면 Pingora를 통해 캐시를 조회하거나 원본 서버에서 데이터를 가져옵니다.
핵심 프록시가 작동하는 방식에 대해서는 여기서 이전에 더 자세히 공유한 바 있습니다.

요청이 핵심 프록시를 통과하는 동안, Cloudflare는 네트워크에서 제공하는 다양한 보안 및 성능 기능을 실행합니다. 프록시는 각 고객의 고유한 구성과 설정을 적용하며, WAF 규칙 적용, DDoS 방어, 트래픽을 Developer Platform이나 R2로 라우팅하는 작업 등을 수행합니다. 이는 도메인별 모듈을 통해 이루어지며, 모듈이 프록시를 통과하는 트래픽에 구성과 정책 규칙을 적용합니다.
그 모듈 중 하나인 Bot Management가 오늘 장애의 원인이었습니다.
Cloudflare의 Bot Management에는, 그 외 여러 시스템과 함께, 네트워크를 통과하는 모든 요청에 대해 봇 점수(bot score)를 생성하는 머신러닝 모델이 포함되어 있습니다. 고객들은 이 봇 점수를 사용해 어떤 봇이 사이트에 접근할 수 있는지 제어합니다.
이 모델은 “feature” 구성 파일을 입력으로 사용합니다. 여기서 feature란 요청이 자동화된 것인지 아닌지를 판단하기 위해 머신러닝 모델이 사용하는 개별 특성을 말하며, feature 구성 파일은 이러한 개별 feature들의 모음입니다.
이 feature 파일은 몇 분마다 갱신되어 전체 네트워크에 배포되며, 인터넷 트래픽의 변동에 신속히 대응할 수 있게 해줍니다. 새로운 유형의 봇이나 공격에 빠르게 대응해야 하기 때문에, 이 파일은 자주 그리고 빠르게 배포되는 것이 매우 중요합니다.
그런데 이 파일을 생성하는 기반 ClickHouse 쿼리 동작이 변경되면서, feature 행이 중복되어 파일 크기가 증가했습니다. 이전에는 고정 크기였던 feature 파일이 커지면서, 봇 모듈에서 오류가 발생하게 된 것입니다.
그 결과, 봇 모듈에 의존하는 모든 트래픽에 대해 고객 트래픽을 처리하는 핵심 프록시 시스템에서 HTTP 5xx 오류가 반환되었습니다. 이 영향은 또한 핵심 프록시에 의존하는 Workers KV와 Access에도 미쳤습니다.
이번 사건과 관련은 없지만, 현재 고객 트래픽을 내부적으로 FL2라고 부르는 새로운 프록시 서비스로 이전하고 있었습니다. 두 버전 모두 문제의 영향을 받았지만, 관찰된 영향은 달랐습니다.
새로운 FL2 프록시 엔진을 사용하는 고객은 HTTP 5xx 오류를 경험했습니다. 기존 FL 프록시 엔진을 사용하는 고객은 오류는 없었지만, 봇 점수가 올바르게 생성되지 않아 모든 트래픽이 봇 점수 0으로 처리되었습니다. 봇 차단 규칙을 적용한 고객은 많은 오탐(false positive)을 경험했을 것입니다. 봇 점수를 규칙에서 사용하지 않은 고객은 영향을 받지 않았습니다.
또한 우리를 혼란스럽게 하고 이번 사건이 공격일 수 있다고 생각하게 만든 증상 중 하나는 Cloudflare 상태 페이지가 다운된 것이었습니다. 상태 페이지는 Cloudflare 인프라와 전혀 의존성이 없는 외부에서 호스팅되고 있었습니다. 우연의 일치였지만, 일부 팀은 공격자가 시스템과 상태 페이지를 동시에 대상으로 하고 있다고 오인하게 되었습니다. 당시 상태 페이지를 방문한 사용자는 오류 메시지를 보게 되었습니다.

내부 사고 채팅방에서는, 이번 문제가 최근 발생한 대규모 Aisuru DDoS 공격의 연장일 수 있다는 우려가 있었습니다.

쿼리 동작 변경
앞서 언급했듯, 기본 쿼리 동작 변경으로 인해 feature 파일에 중복된 행이 많이 포함되게 되었습니다. 문제의 데이터베이스 시스템은 ClickHouse 소프트웨어를 사용합니다.
참고로, ClickHouse 분산 쿼리가 어떻게 작동하는지 이해하면 도움이 됩니다. ClickHouse 클러스터는 여러 샤드(shard)로 구성됩니다. 모든 샤드에서 데이터를 쿼리하려면, default라는 데이터베이스에 있는 “Distributed” 엔진 기반의 분산 테이블을 사용합니다. Distributed 엔진은 r0 데이터베이스의 기본 테이블을 쿼리하는데, 이 기본 테이블이 각 ClickHouse 샤드에 데이터가 실제로 저장되는 곳입니다.
Distributed 테이블에 대한 쿼리는 공유 시스템 계정을 통해 실행됩니다. 분산 쿼리의 보안과 신뢰성을 개선하기 위한 노력의 일환으로, 향후에는 초기 사용자 계정으로 쿼리를 실행하도록 작업이 진행되고 있습니다.
오늘 이전에는, ClickHouse 사용자가 시스템 테이블(system.tables, system.columns 등)을 통해 테이블 메타데이터를 쿼리할 때 default 데이터베이스의 테이블만 볼 수 있었습니다.
사용자들이 이미 r0 기본 테이블에 암묵적으로 접근할 수 있었기 때문에, 11:05에 이 접근을 명시적으로 허용하도록 변경했습니다. 이를 통해 사용자가 해당 테이블의 메타데이터도 볼 수 있게 되었고, 모든 분산 서브쿼리가 초기 사용자 계정에서 실행되도록 하여, 쿼리 제한과 접근 권한을 더 세밀하게 평가할 수 있게 되었습니다. 이렇게 하면 한 사용자의 잘못된 서브쿼리가 다른 사용자에게 영향을 미치는 것을 방지할 수 있습니다.
하지만 이 변경으로 인해, 이전에는 “default” 데이터베이스만 포함될 것이라고 가정했던 쿼리 결과가 이제 모든 사용자가 접근할 수 있는 정확한 테이블 메타데이터를 반환하게 되었습니다.
SELECT
name,
type
FROM system.columns
WHERE
table = 'http_requests_features'
order by name;쿼리가 데이터베이스 이름을 필터링하지 않는 점에 주목해야 합니다. ClickHouse 클러스터 사용자들에게 명시적 권한을 점진적으로 적용하는 과정에서, 11:05 변경 이후 위 쿼리는 r0 데이터베이스에 저장된 기본 테이블 때문에 컬럼이 “중복”되어 반환되기 시작했습니다.
안타깝게도, 이 쿼리는 Bot Management의 feature file 생성 로직에서 각 입력 “feature”를 구성하는 데 사용되는 쿼리 유형이었습니다.
위 쿼리는 (단순화한 예시처럼) 컬럼 테이블을 반환하게 됩니다.

하지만 사용자에게 추가 권한을 부여한 결과, 이제 쿼리 응답에는 r0 스키마의 모든 메타데이터가 포함되게 되었고, 그로 인해 응답 행 수가 사실상 두 배 이상 늘어나 최종 파일 출력에서 feature 수에도 영향을 미쳤습니다.
메모리 사전 할당
프록시 서비스에서 실행되는 각 모듈에는 메모리 사용을 무한대로 늘어나지 않도록 제한하고, 성능 최적화를 위해 메모리를 사전 할당(preallocation) 하는 여러 제한이 설정되어 있습니다.
이번 경우, Bot Management 시스템에는 런타임에 사용할 수 있는 머신러닝 feature 수에 제한이 있었는데, 현재 이 제한은 200으로 설정되어 있으며, 실제 사용 중인 feature 수는 약 60개였습니다. 이 제한은 성능을 위해 feature에 대해 메모리를 미리 할당하기 때문에 존재합니다.
그런데 잘못된 파일에 200개 이상의 feature가 포함되어 서버에 배포되면서, 이 제한을 초과하게 되었고, 시스템이 panic 상태에 빠지게 되었습니다. 이 확인을 수행하고 처리되지 않은 오류의 원인이 된 FL2 Rust 코드가 아래에 표시됩니다.

이로 인해 다음과 같은 panic이 발생했고, 결국 HTTP 5xx 오류로 이어졌습니다.
thread fl2_worker_thread panicked: called Result::unwrap() on an Err value사건 발생 동안의 기타 영향
사건 발생 동안 핵심 프록시에 의존하는 다른 시스템들도 영향을 받았습니다. 여기에는 Workers KV와 Cloudflare Access가 포함됩니다. 팀은 13:04에 Workers KV를 패치하여 핵심 프록시를 우회하도록 했고, 이후 이들 시스템과 Workers KV에 의존하는 모든 하위 시스템(예: Access)에서 오류율이 줄어들었습니다.
또한 Cloudflare Dashboard도 영향을 받았는데, 내부적으로 Workers KV를 사용하고 로그인 과정에 Cloudflare Turnstile이 포함되어 있었기 때문입니다.
이번 장애로 Turnstile도 영향을 받아, 활성 대시보드 세션이 없는 고객은 로그인할 수 없었습니다. 이로 인해 11:30 ~ 13:10과 14:30 ~ 15:30 두 시간대에 가용성이 감소했습니다.

첫 번째 기간인 11:30~13:10은 Workers KV에 대한 영향 때문이었으며, 일부 제어 플레인 및 대시보드 기능이 이에 의존하고 있었습니다. 13:10에 Workers KV가 핵심 프록시 시스템을 우회하도록 설정되면서 복구되었습니다.
대시보드에 대한 두 번째 영향 기간은 feature configuration 데이터를 복원한 후 발생했습니다. 로그인 시도의 누적(backlog)이 대시보드를 압도하기 시작했고, 이 누적과 재시도 시도가 결합되면서 지연(latency)이 증가하고 대시보드 가용성이 감소했습니다. 제어 플레인 동시성(concurrency)을 확장하여 약 15:30에 가용성이 회복되었습니다.
복구 조치 및 후속 조치 단계
시스템이 정상적으로 온라인 상태로 복구된 지금, 앞으로 이런 장애에 대비해 시스템을 강화하는 작업이 이미 시작되었습니다. 특히 다음과 같은 조치를 진행 중입니다:
- Cloudflare가 생성한 구성 파일도, 사용자 입력처럼 엄격하게 검증하고 처리하도록 강화하고 있습니다.
- 기능별로 더 많은 글로벌 킬 스위치를 활성화하여, 문제가 발생했을 때 신속히 시스템을 차단할 수 있도록 하고 있습니다.
- 코어 덤프나 기타 오류 보고가 시스템 자원을 과도하게 사용하지 않도록 제한하고 있습니다.
- 모든 핵심 프록시 모듈에서 오류 조건에 대한 실패 방식(failure mode)을 검토하고 있습니다.
오늘은 2019년 이후 Cloudflare의 최악의 장애였습니다. 이전에도 대시보드가 사용 불가능해지거나, 새로운 기능이 잠시 제공되지 못한 장애는 있었지만, 지난 6년 이상 동안 핵심 트래픽 대부분이 네트워크를 통해 흐르지 못한 장애는 이번이 처음입니다.
오늘과 같은 장애는 용납될 수 없습니다. Cloudflare는 항상 트래픽이 계속 흐르도록 시스템을 높은 수준으로 내결함성(resilience)을 갖추도록 설계해왔습니다. 과거의 장애에서도 항상 더 견고한 시스템을 구축하는 계기가 되었습니다.
Cloudflare 전체 팀을 대표하여, 오늘 인터넷에 끼친 불편과 혼란에 대해 사과드립니다.
시간 | 상태 | 설명 |
11:05 | 정상 | 데이터베이스 접근 제어 변경이 배포. |
11:28 | 영향 시작. | 배포가 고객 환경에 도달하며, 고객 HTTP 트래픽에서 처음으로 오류가 관찰. |
11:32-13:05 | 팀이 Workers KV 서비스에서 트래픽 증가와 오류 발생을 조사. | 초기 증상은 Workers KV 응답 속도 저하로, 다른 Cloudflare 서비스에 하류 영향(downstream impact)을 주는 것으로 나타났습니다. Workers KV 서비스를 정상 수준으로 복구하기 위해 트래픽 조정과 계정 제한과 같은 완화 조치가 시도되었습니다. 첫 번째 자동화 테스트에서 11:31에 문제를 감지했고, 11:32에 수동 조사가 시작되었습니다. 사건 대응 콜은 11:35에 생성되었습니다. |
13:05 | Workers KV와 Cloudflare Access에 대한 우회(bypass)가 구현되어, 영향이 감소. | 조사 과정에서 Workers KV와 Cloudflare Access에 대해 내부 시스템 우회(bypass)를 사용하여 이전 버전의 핵심 프록시로 되돌렸습니다. 이전 프록시 버전에서도 문제가 존재했지만, 아래 설명과 같이 영향은 더 적었습니다. |
13:37 | 작업은 Bot Management 구성 파일을 마지막으로 정상 작동하던 버전으로 롤백하는 데 집중되었습니다. | 우리는 Bot Management 구성 파일이 이번 사건의 원인(trigger)임을 확신했습니다. 팀은 여러 작업 흐름(workstream)으로 서비스를 복구하는 방법을 진행했으며, 가장 신속한 방법은 파일의 이전 버전을 복원하는 것이었습니다. |
14:24 | 새로운 Bot Management 구성 파일의 생성 및 전파를 중단. | 우리는 Bot Management 모듈이 500 오류의 원인임을 확인했고, 이는 잘못된 구성 파일 때문이었습니다. 이에 따라 새로운 Bot Management 구성 파일의 자동 배포를 중단했습니다. |
14:24 | 새 구성 파일 테스트가 완료. | 이전 버전의 구성 파일을 사용하여 성공적으로 복구되는 것을 확인한 후, 글로벌 배포 속도를 높이는 데 집중했습니다. |
14:30 | 주요 영향이 해결되었고, 하류에 영향을 받던 서비스들도 오류가 감소하기 시작. | 정상적인 Bot Management 구성 파일이 전 세계적으로 배포되었고, 대부분의 서비스가 정상적으로 작동하기 시작했습니다. |
17:06 | 모든 서비스가 정상화되었고, 영향은 종료되었습니다. | 모든 하위 서비스가 재시작되었고, 모든 운영이 완전히 복구되었습니다. |
Cloudflare의 Connectivity Cloud는 기업 전체 네트워크를 보호하고, 고객이 인터넷 규모의 애플리케이션을 효율적으로 구축하도록 돕습니다. 또한 모든 웹사이트나 인터넷 애플리케이션 속도를 가속화하고, DDoS 공격을 막으며, 해커로부터 보호하고, Zero Trust 환경 구축에도 도움을 줍니다.
어떤 기기에서든 1.1.1.1에 접속하면 인터넷 속도를 빠르고 안전하게 만들어주는 무료 앱을 이용할 수 있습니다.
더 나은 인터넷을 구축하는 Cloudflare의 미션에 대해 알고 싶다면 여기에서 시작하고, 새로운 경력 기회를 찾고 있다면 채용 공고를 확인할 수 있습니다.
2.1. 원본[편집]

On 18 November 2025 at 11:20 UTC (all times in this blog are UTC), Cloudflare's network began experiencing significant failures to deliver core network traffic. This showed up to Internet users trying to access our customers' sites as an error page indicating a failure within Cloudflare's network.

The issue was not caused, directly or indirectly, by a cyber attack or malicious activity of any kind. Instead, it was triggered by a change to one of our database systems' permissions which caused the database to output multiple entries into a “feature file” used by our Bot Management system. That feature file, in turn, doubled in size. The larger-than-expected feature file was then propagated to all the machines that make up our network.
The software running on these machines to route traffic across our network reads this feature file to keep our Bot Management system up to date with ever changing threats. The software had a limit on the size of the feature file that was below its doubled size. That caused the software to fail.
After we initially wrongly suspected the symptoms we were seeing were caused by a hyper-scale DDoS attack, we correctly identified the core issue and were able to stop the propagation of the larger-than-expected feature file and replace it with an earlier version of the file. Core traffic was largely flowing as normal by 14:30. We worked over the next few hours to mitigate increased load on various parts of our network as traffic rushed back online. As of 17:06 all systems at Cloudflare were functioning as normal.
We are sorry for the impact to our customers and to the Internet in general. Given Cloudflare's importance in the Internet ecosystem any outage of any of our systems is unacceptable. That there was a period of time where our network was not able to route traffic is deeply painful to every member of our team. We know we let you down today.
This post is an in-depth recount of exactly what happened and what systems and processes failed. It is also the beginning, though not the end, of what we plan to do in order to make sure an outage like this will not happen again.
The outage
The chart below shows the volume of 5xx error HTTP status codes served by the Cloudflare network. Normally this should be very low, and it was right up until the start of the outage.

The volume prior to 11:20 is the expected baseline of 5xx errors observed across our network. The spike, and subsequent fluctuations, show our system failing due to loading the incorrect feature file. What’s notable is that our system would then recover for a period. This was very unusual behavior for an internal error.
The explanation was that the file was being generated every five minutes by a query running on a ClickHouse database cluster, which was being gradually updated to improve permissions management. Bad data was only generated if the query ran on a part of the cluster which had been updated. As a result, every five minutes there was a chance of either a good or a bad set of configuration files being generated and rapidly propagated across the network.
This fluctuation made it unclear what was happening as the entire system would recover and then fail again as sometimes good, sometimes bad configuration files were distributed to our network. Initially, this led us to believe this might be caused by an attack. Eventually, every ClickHouse node was generating the bad configuration file and the fluctuation stabilized in the failing state.
Errors continued until the underlying issue was identified and resolved starting at 14:30. We solved the problem by stopping the generation and propagation of the bad feature file and manually inserting a known good file into the feature file distribution queue. And then forcing a restart of our core proxy.
The remaining long tail in the chart above is our team restarting remaining services that had entered a bad state, with 5xx error code volume returning to normal at 17:06.
The following services were impacted:
Service / Product | Impact description |
Core CDN and security services | HTTP 5xx status codes. The screenshot at the top of this post shows a typical error page delivered to end users. |
Turnstile | Turnstile failed to load. |
Workers KV | Workers KV returned a significantly elevated level of HTTP 5xx errors as requests to KV’s “front end” gateway failed due to the core proxy failing. |
Dashboard | While the dashboard was mostly operational, most users were unable to log in due to Turnstile being unavailable on the login page. |
Email Security | While email processing and delivery were unaffected, we observed a temporary loss of access to an IP reputation source which reduced spam-detection accuracy and prevented some new-domain-age detections from triggering, with no critical customer impact observed. We also saw failures in some Auto Move actions; all affected messages have been reviewed and remediated. |
Access | Authentication failures were widespread for most users, beginning at the start of the incident and continuing until the rollback was initiated at 13:05. Any existing Access sessions were unaffected. All failed authentication attempts resulted in an error page, meaning none of these users ever reached the target application while authentication was failing. Successful logins during this period were correctly logged during this incident. Any Access configuration updates attempted at that time would have either failed outright or propagated very slowly. All configuration updates are now recovered. |
As well as returning HTTP 5xx errors, we observed significant increases in latency of responses from our CDN during the impact period. This was due to large amounts of CPU being consumed by our debugging and observability systems, which automatically enhance uncaught errors with additional debugging information.
How Cloudflare processes requests, and how this went wrong today
Every request to Cloudflare takes a well-defined path through our network. It could be from a browser loading a webpage, a mobile app calling an API, or automated traffic from another service. These requests first terminate at our HTTP and TLS layer, then flow into our core proxy system (which we call FL for “Frontline”), and finally through Pingora, which performs cache lookups or fetches data from the origin if needed.
We previously shared more detail about how the core proxy works here.

As a request transits the core proxy, we run the various security and performance products available in our network. The proxy applies each customer’s unique configuration and settings, from enforcing WAF rules and DDoS protection to routing traffic to the Developer Platform and R2. It accomplishes this through a set of domain-specific modules that apply the configuration and policy rules to traffic transiting our proxy.
One of those modules, Bot Management, was the source of today’s outage.
Cloudflare’s Bot Management includes, among other systems, a machine learning model that we use to generate bot scores for every request traversing our network. Our customers use bot scores to control which bots are allowed to access their sites — or not.
The model takes as input a “feature” configuration file. A feature, in this context, is an individual trait used by the machine learning model to make a prediction about whether the request was automated or not. The feature configuration file is a collection of individual features.
This feature file is refreshed every few minutes and published to our entire network and allows us to react to variations in traffic flows across the Internet. It allows us to react to new types of bots and new bot attacks. So it’s critical that it is rolled out frequently and rapidly as bad actors change their tactics quickly.
A change in our underlying ClickHouse query behaviour (explained below) that generates this file caused it to have a large number of duplicate “feature” rows. This changed the size of the previously fixed-size feature configuration file, causing the bots module to trigger an error.
As a result, HTTP 5xx error codes were returned by the core proxy system that handles traffic processing for our customers, for any traffic that depended on the bots module. This also affected Workers KV and Access, which rely on the core proxy.
Unrelated to this incident, we were and are currently migrating our customer traffic to a new version of our proxy service, internally known as FL2. Both versions were affected by the issue, although the impact observed was different.
Customers deployed on the new FL2 proxy engine, observed HTTP 5xx errors. Customers on our old proxy engine, known as FL, did not see errors, but bot scores were not generated correctly, resulting in all traffic receiving a bot score of zero. Customers that had rules deployed to block bots would have seen large numbers of false positives. Customers who were not using our bot score in their rules did not see any impact.
Throwing us off and making us believe this might have been an attack was another apparent symptom we observed: Cloudflare’s status page went down. The status page is hosted completely off Cloudflare’s infrastructure with no dependencies on Cloudflare. While it turned out to be a coincidence, it led some of the team diagnosing the issue to believe that an attacker may be targeting both our systems as well as our status page. Visitors to the status page at that time were greeted by an error message:

In the internal incident chat room, we were concerned that this might be the continuation of the recent spate of high volume Aisuru DDoS attacks:

The query behaviour change
I mentioned above that a change in the underlying query behaviour resulted in the feature file containing a large number of duplicate rows. The database system in question uses ClickHouse’s software.
For context, it’s helpful to know how ClickHouse distributed queries work. A ClickHouse cluster consists of many shards. To query data from all shards, we have so-called distributed tables (powered by the table engine Distributed) in a database called default. The Distributed engine queries underlying tables in a database r0. The underlying tables are where data is stored on each shard of a ClickHouse cluster.
Queries to the distributed tables run through a shared system account. As part of efforts to improve our distributed queries security and reliability, there’s work being done to make them run under the initial user accounts instead.
Before today, ClickHouse users would only see the tables in the default database when querying table metadata from ClickHouse system tables such as system.tables or system.columns.
Since users already have implicit access to underlying tables in r0, we made a change at 11:05 to make this access explicit, so that users can see the metadata of these tables as well. By making sure that all distributed subqueries can run under the initial user, query limits and access grants can be evaluated in a more fine-grained manner, avoiding one bad subquery from a user affecting others.
The change explained above resulted in all users accessing accurate metadata about tables they have access to. Unfortunately, there were assumptions made in the past, that the list of columns returned by a query like this would only include the “default” database:
SELECT
name,
type
FROM system.columns
WHERE
table = 'http_requests_features'
order by name;Note how the query does not filter for the database name. With us gradually rolling out the explicit grants to users of a given ClickHouse cluster, after the change at 11:05 the query above started returning “duplicates” of columns because those were for underlying tables stored in the r0 database.
This, unfortunately, was the type of query that was performed by the Bot Management feature file generation logic to construct each input “feature” for the file mentioned at the beginning of this section.
The query above would return a table of columns like the one displayed (simplified example):

However, as part of the additional permissions that were granted to the user, the response now contained all the metadata of the r0 schema effectively more than doubling the rows in the response ultimately affecting the number of rows (i.e. features) in the final file output.
Memory preallocation
Each module running on our proxy service has a number of limits in place to avoid unbounded memory consumption and to preallocate memory as a performance optimization. In this specific instance, the Bot Management system has a limit on the number of machine learning features that can be used at runtime. Currently that limit is set to 200, well above our current use of ~60 features. Again, the limit exists because for performance reasons we preallocate memory for the features.
When the bad file with more than 200 features was propagated to our servers, this limit was hit — resulting in the system panicking. The FL2 Rust code that makes the check and was the source of the unhandled error is shown below:

This resulted in the following panic which in turn resulted in a 5xx error:
thread fl2_worker_thread panicked: called Result::unwrap() on an Err valueOther impact during the incident
Other systems that rely on our core proxy were impacted during the incident. This included Workers KV and Cloudflare Access. The team was able to reduce the impact to these systems at 13:04, when a patch was made to Workers KV to bypass the core proxy. Subsequently, all downstream systems that rely on Workers KV (such as Access itself) observed a reduced error rate.
The Cloudflare Dashboard was also impacted due to both Workers KV being used internally and Cloudflare Turnstile being deployed as part of our login flow.
Turnstile was impacted by this outage, resulting in customers who did not have an active dashboard session being unable to log in. This showed up as reduced availability during two time periods: from 11:30 to 13:10, and between 14:40 and 15:30, as seen in the graph below.

The first period, from 11:30 to 13:10, was due to the impact to Workers KV, which some control plane and dashboard functions rely upon. This was restored at 13:10, when Workers KV bypassed the core proxy system. The second period of impact to the dashboard occurred after restoring the feature configuration data. A backlog of login attempts began to overwhelm the dashboard. This backlog, in combination with retry attempts, resulted in elevated latency, reducing dashboard availability. Scaling control plane concurrency restored availability at approximately 15:30.
Remediation and follow-up steps
Now that our systems are back online and functioning normally, work has already begun on how we will harden them against failures like this in the future. In particular we are:
- Hardening ingestion of Cloudflare-generated configuration files in the same way we would for user-generated input
- Enabling more global kill switches for features
- Eliminating the ability for core dumps or other error reports to overwhelm system resources
- Reviewing failure modes for error conditions across all core proxy modules
Today was Cloudflare's worst outage since 2019. We've had outages that have made our dashboard unavailable. Some that have caused newer features to not be available for a period of time. But in the last 6+ years we've not had another outage that has caused the majority of core traffic to stop flowing through our network.
An outage like today is unacceptable. We've architected our systems to be highly resilient to failure to ensure traffic will always continue to flow. When we've had outages in the past it's always led to us building new, more resilient systems.
On behalf of the entire team at Cloudflare, I would like to apologize for the pain we caused the Internet today.
Time(UTC) | Status | Description |
11:05 | Normal. | Database access control change deployed. |
11:28 | Impact starts. | Deployment reaches customer environments, first errors observed on customer HTTP traffic. |
11:32-13:05 | The team investigated elevated traffic levels and errors to Workers KV service. | The initial symptom appeared to be degraded Workers KV response rate causing downstream impact on other Cloudflare services. Mitigations such as traffic manipulation and account limiting were attempted to bring the Workers KV service back to normal operating levels. The first automated test detected the issue at 11:31 and manual investigation started at 11:32. The incident call was created at 11:35. |
13:05 | Workers KV and Cloudflare Access bypass implemented — impact reduced. | During investigation, we used internal system bypasses for Workers KV and Cloudflare Access so they fell back to a prior version of our core proxy. Although the issue was also present in prior versions of our proxy, the impact was smaller as described below. |
13:37 | Work focused on rollback of the Bot Management configuration file to a last-known-good version. | We were confident that the Bot Management configuration file was the trigger for the incident. Teams worked on ways to repair the service in multiple workstreams, with the fastest workstream a restore of a previous version of the file. |
14:24 | Stopped creation and propagation of new Bot Management configuration files. | We identified that the Bot Management module was the source of the 500 errors and that this was caused by a bad configuration file. We stopped automatic deployment of new Bot Management configuration files. |
14:24 | Test of new file complete. | We observed successful recovery using the old version of the configuration file and then focused on accelerating the fix globally. |
14:30 | Main impact resolved. Downstream impacted services started observing reduced errors. | A correct Bot Management configuration file was deployed globally and most services started operating correctly. |
17:06 | All services resolved. Impact ends. | All downstream services restarted and all operations fully restored. |
Cloudflare's connectivity cloud protects entire corporate networks, helps customers build Internet-scale applications efficiently, accelerates any website or Internet application, wards off DDoS attacks, keeps hackers at bay, and can help you on your journey to Zero Trust.
Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.
To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
3. 실시간 공지[편집]
Cloudflare Global Network experiencing issues
Resolved - This incident has been resolved.
Nov 18, 2025 - 19:28 UTC
Update - Cloudflare services are currently operating normally. We are no longer observing elevated errors or latency across the network.
Our engineering teams continue to closely monitor the platform and perform a deeper investigation into the earlier disruption, but no configuration changes are being made at this time.
At this point, it is considered safe to re-enable any Cloudflare services that were temporarily disabled during the incident. We will provide a final update once our investigation is complete.
Nov 18, 2025 - 17:44 UTC
Update - We continue to monitor the system through recovery and we are seeing errors and latency return to normal levels. A full post-incident investigation and details about the incident will be made available asap.
Nov 18, 2025 - 17:14 UTC
Update - We continue to see errors drop as we work through services globally and clearing remaining errors and latency.
Nov 18, 2025 - 16:46 UTC
Update - We continue to see errors and latency improve but still have reports of intermittent errors. The team continues to monitor the situation as it improves, and looking for ways to accelerate full recovery.
Nov 18, 2025 - 16:27 UTC
Update - Bot scores will be impacted intermittently while we undergo global recovery. We will update once we believe bot scores are fully recovered.
Nov 18, 2025 - 16:04 UTC
Update - The team is continuing to focus on restoring service post-fix. We are mitigating several issues that remain post-deployment.
Nov 18, 2025 - 15:40 UTC
Update - We are continuing to monitor for any further issues.
Nov 18, 2025 - 15:23 UTC
Update - Some customers may be still experiencing issues logging into or using the Cloudflare dashboard. We are working on a fix to resolve this, and continuing to monitor for any further issues.
Nov 18, 2025 - 14:57 UTC
Monitoring - A fix has been implemented and we believe the incident is now resolved. We are continuing to monitor for errors to ensure all services are back to normal.
Nov 18, 2025 - 14:42 UTC
Update - We've deployed a change which has restored dashboard services. We are still working to remediate broad application services impact
Nov 18, 2025 - 14:34 UTC
Update - We are continuing to work on a fix for this issue.
Nov 18, 2025 - 14:22 UTC
Update - We are continuing working on restoring service for application services customers.
Nov 18, 2025 - 13:58 UTC
Update - We are continuing working on restoring service for application services customers.
Nov 18, 2025 - 13:35 UTC
Update - We have made changes that have allowed Cloudflare Access and WARP to recover. Error levels for Access and WARP users have returned to pre-incident rates.
We have re-enabled WARP access in London.
We are continuing to work towards restoring other services.
Nov 18, 2025 - 13:13 UTC
Identified - The issue has been identified and a fix is being implemented.
Nov 18, 2025 - 13:09 UTC
Update - During our attempts to remediate, we have disabled WARP access in London. Users in London trying to access the Internet via WARP will see a failure to connect.
Nov 18, 2025 - 13:04 UTC
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 12:53 UTC
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 12:37 UTC
Update - We are seeing services recover, but customers may continue to observe higher-than-normal error rates as we continue remediation efforts.
Nov 18, 2025 - 12:21 UTC
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 12:03 UTC
Investigating - Cloudflare is experiencing an internal service degradation. Some services may be intermittently impacted. We are focused on restoring service. We will update as we are able to remediate. More updates to follow shortly.
Nov 18, 2025 - 11:48 UTC
Resolved - This incident has been resolved.
Nov 18, 2025 - 19:28 UTC
Update - Cloudflare services are currently operating normally. We are no longer observing elevated errors or latency across the network.
Our engineering teams continue to closely monitor the platform and perform a deeper investigation into the earlier disruption, but no configuration changes are being made at this time.
At this point, it is considered safe to re-enable any Cloudflare services that were temporarily disabled during the incident. We will provide a final update once our investigation is complete.
Nov 18, 2025 - 17:44 UTC
Update - We continue to monitor the system through recovery and we are seeing errors and latency return to normal levels. A full post-incident investigation and details about the incident will be made available asap.
Nov 18, 2025 - 17:14 UTC
Update - We continue to see errors drop as we work through services globally and clearing remaining errors and latency.
Nov 18, 2025 - 16:46 UTC
Update - We continue to see errors and latency improve but still have reports of intermittent errors. The team continues to monitor the situation as it improves, and looking for ways to accelerate full recovery.
Nov 18, 2025 - 16:27 UTC
Update - Bot scores will be impacted intermittently while we undergo global recovery. We will update once we believe bot scores are fully recovered.
Nov 18, 2025 - 16:04 UTC
Update - The team is continuing to focus on restoring service post-fix. We are mitigating several issues that remain post-deployment.
Nov 18, 2025 - 15:40 UTC
Update - We are continuing to monitor for any further issues.
Nov 18, 2025 - 15:23 UTC
Update - Some customers may be still experiencing issues logging into or using the Cloudflare dashboard. We are working on a fix to resolve this, and continuing to monitor for any further issues.
Nov 18, 2025 - 14:57 UTC
Monitoring - A fix has been implemented and we believe the incident is now resolved. We are continuing to monitor for errors to ensure all services are back to normal.
Nov 18, 2025 - 14:42 UTC
Update - We've deployed a change which has restored dashboard services. We are still working to remediate broad application services impact
Nov 18, 2025 - 14:34 UTC
Update - We are continuing to work on a fix for this issue.
Nov 18, 2025 - 14:22 UTC
Update - We are continuing working on restoring service for application services customers.
Nov 18, 2025 - 13:58 UTC
Update - We are continuing working on restoring service for application services customers.
Nov 18, 2025 - 13:35 UTC
Update - We have made changes that have allowed Cloudflare Access and WARP to recover. Error levels for Access and WARP users have returned to pre-incident rates.
We have re-enabled WARP access in London.
We are continuing to work towards restoring other services.
Nov 18, 2025 - 13:13 UTC
Identified - The issue has been identified and a fix is being implemented.
Nov 18, 2025 - 13:09 UTC
Update - During our attempts to remediate, we have disabled WARP access in London. Users in London trying to access the Internet via WARP will see a failure to connect.
Nov 18, 2025 - 13:04 UTC
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 12:53 UTC
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 12:37 UTC
Update - We are seeing services recover, but customers may continue to observe higher-than-normal error rates as we continue remediation efforts.
Nov 18, 2025 - 12:21 UTC
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 12:03 UTC
Investigating - Cloudflare is experiencing an internal service degradation. Some services may be intermittently impacted. We are focused on restoring service. We will update as we are able to remediate. More updates to follow shortly.
Nov 18, 2025 - 11:48 UTC
SYD (Sydney) on 2025-11-18
In progress - Scheduled maintenance is currently in progress. We will provide updates as necessary.
Nov 18, 2025 - 15:01 UTC
Scheduled - We will be performing scheduled maintenance in SYD (Sydney) datacenter on 2025-11-18 between 15:00 and 19:00 UTC.
Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable.
You can now subscribe to these notifications via Cloudflare dashboard and receive these updates directly via email, PagerDuty and webhooks (based on your plan): https://developers.cloudflare.com/notifications/notification-available/#cloudflare-status.
Nov 18, 2025 15:00-19:00 UTC
In progress - Scheduled maintenance is currently in progress. We will provide updates as necessary.
Nov 18, 2025 - 15:01 UTC
Scheduled - We will be performing scheduled maintenance in SYD (Sydney) datacenter on 2025-11-18 between 15:00 and 19:00 UTC.
Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable.
You can now subscribe to these notifications via Cloudflare dashboard and receive these updates directly via email, PagerDuty and webhooks (based on your plan): https://developers.cloudflare.com/notifications/notification-available/#cloudflare-status.
Nov 18, 2025 15:00-19:00 UTC
PPT (Tahiti) on 2025-11-18
In progress - Scheduled maintenance is currently in progress. We will provide updates as necessary.
Nov 18, 2025 - 12:00 UTC
Scheduled - We will be performing scheduled maintenance in PPT (Tahiti) datacenter on 2025-11-18 between 12:00 and 16:00 UTC.
Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable.
You can now subscribe to these notifications via Cloudflare dashboard and receive these updates directly via email, PagerDuty and webhooks (based on your plan): https://developers.cloudflare.com/notifications/notification-available/#cloudflare-status.
Nov 18, 2025 12:00-16:00 UTC
In progress - Scheduled maintenance is currently in progress. We will provide updates as necessary.
Nov 18, 2025 - 12:00 UTC
Scheduled - We will be performing scheduled maintenance in PPT (Tahiti) datacenter on 2025-11-18 between 12:00 and 16:00 UTC.
Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable.
You can now subscribe to these notifications via Cloudflare dashboard and receive these updates directly via email, PagerDuty and webhooks (based on your plan): https://developers.cloudflare.com/notifications/notification-available/#cloudflare-status.
Nov 18, 2025 12:00-16:00 UTC
ATL (Atlanta) on 2025-11-18
In progress - Scheduled maintenance is currently in progress. We will provide updates as necessary.
Nov 18, 2025 - 07:02 UTC
Scheduled - We will be performing scheduled maintenance in ATL (Atlanta) datacenter between 2025-11-18 07:00 and 2025-11-19 22:00 UTC.
Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable.
You can now subscribe to these notifications via Cloudflare dashboard and receive these updates directly via email, PagerDuty and webhooks (based on your plan): https://developers.cloudflare.com/notifications/notification-available/#cloudflare-status.
Nov 18, 2025 07:00 - Nov 19, 2025 22:00 UTC
In progress - Scheduled maintenance is currently in progress. We will provide updates as necessary.
Nov 18, 2025 - 07:02 UTC
Scheduled - We will be performing scheduled maintenance in ATL (Atlanta) datacenter between 2025-11-18 07:00 and 2025-11-19 22:00 UTC.
Traffic might be re-routed from this location, hence there is a possibility of a slight increase in latency during this maintenance window for end-users in the affected region. For PNI / CNI customers connecting with us in this location, please make sure you are expecting this traffic to fail over elsewhere during this maintenance window as network interfaces in this datacentre may become temporarily unavailable.
You can now subscribe to these notifications via Cloudflare dashboard and receive these updates directly via email, PagerDuty and webhooks (based on your plan): https://developers.cloudflare.com/notifications/notification-available/#cloudflare-status.
Nov 18, 2025 07:00 - Nov 19, 2025 22:00 UTC
Support Portal Availability Issues
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 15:16 UTC
Investigating - Our support portal is currently experiencing issues, and as such customers might encounter errors viewing or responding to support cases. Responses on customer inquiries are not affected, and customers can still reach us via live chat (Business and Enterprise) through the Cloudflare Dashboard, or via the emergency telephone line (Enterprise).
We are working to understand the full impact and mitigate this problem.
Nov 18, 2025 - 11:17 UTC
Update - We are continuing to investigate this issue.
Nov 18, 2025 - 15:16 UTC
Investigating - Our support portal is currently experiencing issues, and as such customers might encounter errors viewing or responding to support cases. Responses on customer inquiries are not affected, and customers can still reach us via live chat (Business and Enterprise) through the Cloudflare Dashboard, or via the emergency telephone line (Enterprise).
We are working to understand the full impact and mitigate this problem.
Nov 18, 2025 - 11:17 UTC
4. 피해 상황[편집]
4.1. 위키[편집]
4.2. 커뮤니티[편집]
- 아카라이브: 로그인 불가.
- X: 전반적인 시스템 이용 불가.
4.3. 게임[편집]
- 리그 오브 레전드: 접속 불가.
- Geometry Dash: 온라인 서버 이용 불가.
- 던전앤파이터: 접속 불가.
- Limbus Company
- 콜 오브 듀티
- 발로란트
4.4. 정부 기관[편집]
- 미국 뉴저지 교통국: 일부 서비스 중단.
4.5. 대기업[편집]
4.6. 기타[편집]
- 불법 OTT 사이트: 접속 불가.
- 코인베이스: 신용평가 서비스 중단.
- 무디스: 신용평가 서비스 중단.
- Shopify
- Claude
- 인디드
5. 반응[편집]
5.1. Cloudflare[편집]
- 회사측은 회사 창업 이후 유례없는 최악의 사태라고 평을 내렸다.
5.2. 위키[편집]
5.3. 커뮤니티[편집]
- 불법 사이트 봐야하는데 안되서 빡친다는 반응이 있었다.
5.4. 언론[편집]
5.5. 일반인[편집]
- 해킹 당한거 아니냐는 반응이 있었다.
- 과제해야하는 GPT가 안되서 짜증나 하는 반응이 있었다.
- 롤 렙 올려야하는데 롤도 안되서 아쉬워하는 반응도 있었다. #
