Klikając „Akceptuj wszystkie pliki cookie”, zgadzasz się na przechowywanie plików cookie na swoim urządzeniu w celu ułatwienia nawigacji po stronie, analizy korzystania ze strony oraz wspierania naszych działań marketingowych. Zobacz naszą Politykę prywatności, aby uzyskać więcej informacji.
Case Study

Jak Cloudflare zDDOS-owało samo siebie… przez jeden mały błąd w użyciu React.

Igor Ziniewicz

Ekspert zarządzania kryzysowego i ciągłości działania

Przyczyną chaosu był jeden z najbardziej znanych, ale i zdradliwych hooków w React.

Wyobraź sobie ten scenariusz: jest spokojne popołudnie, wprowadzasz drobną poprawkę do kodu, wdrażasz ją na produkcję. Chwilę później na firmowym Slacku zaczyna się burza. Płoną alerty, kluczowe systemy padają jeden po drugim, a nikt nie wie, co się dzieje. Brzmi jak koszmar każdego programisty, prawda? A teraz wyobraź sobie, że to nie Ty, a inżynierowie z Cloudflare, jednego z filarów współczesnego internetu.

Właśnie to im się niedawno przydarzyło. I co najciekawsze – sami sobie zafundowali ten kryzys. To historia o tym, jak potężna firma niechcący przeprowadziła atak DDoS na własną infrastrukturę za pomocą... błędu w użyciu komponentu React.

Atak panelu administracyjnego

W wielkim skrócie: panel administracyjny Cloudflare, z którego korzystają miliony użytkowników do zarządzania swoimi usługami, zaczął zachowywać się jak wściekły botnet. Każda otwarta w przeglądarce sesja panelu zaczęła generować niekończącą się lawinę zapytań do jednego z wewnętrznych, krytycznych systemów API. Ten system, przytłoczony gigantyczną falą ruchu od własnych klientów, po prostu się poddał. A ponieważ był on kluczowy dla autoryzacji, pociągnął za sobą inne usługi, powodując efekt domina. W efekcie panel i API przestały działać.

Problematyczna implementacja

Dla nas, programistów, to jest sedno całej tej historii. Przyczyną chaosu był jeden z najbardziej znanych, ale i zdradliwych hooków w React.

Jak wiemy, useEffect pozwala na wykonanie kodu po renderowaniu komponentu, a jego ponowne uruchomienie jest kontrolowane przez tzw. tablicę zależności (dependency matrix). Jeśli coś w tej tablicy się zmieni, efekt odpala się na nowo. W tym właśnie był problem. Błąd w kodzie Cloudflare polegał na tym, że do tej tablicy zależności przekazano obiekt, który był tworzony od nowa przy każdym renderze komponentu. Ponieważ JavaScript porównuje obiekty przez referencję (miejsce w pamięci), a nie przez wartość (zawartość), dla Reacta ten obiekt był zawsze nowy.

Jak wygląda atak?

  1. Komponent się renderuje.
  2. Tworzy nowy obiekt i przekazuje do tablicy zależności useEffect.
  3. React porównuje "nowy" obiekt ze "starym" i stwierdza zmianę.
  4. Uruchamia kod w useEffect, który wysyła zapytanie do API.
  5. Odpowiedź z API powoduje aktualizację stanu, co... ponownie renderuje komponent.
  6. Wracamy do punktu 1.

Tak powstała samonapędzająca się pętla, która z przeglądarki każdego użytkownika wysyłała niekończące się zapytania do serwerów Cloudflare.

Separacja systemów powstrzymała większe szkody

Na szczęście architektura Cloudflare zdała egzamin w najważniejszym miejscu. Awaria dotyczyła wyłącznie "płaszczyzny zarządzania" (panel i API). Cały ruch internetowy ich klientów, ochrona stron i działanie DNS pozostały nietknięte. To kluczowe rozróżnienie pokazuje, jak ważna jest separacja systemów.

Oczywiście, zespół Cloudflare szybko namierzył i naprawił błąd, ale mleko się rozlało.

Moje 3 wnioski

Pokora, pokora i jeszcze raz pokora. To może się zdarzyć każdemu. Nawet w firmie, która dosłownie napisała podręcznik o ochronie przed atakami DDoS, jeden mały błąd programisty może wywołać kryzys.

Front-end to nie zabawa. Ta historia przypomina, że błąd w kodzie front-endowym może mieć równie katastrofalne skutki, co dziura w zabezpieczeniach serwera. Aplikacja kliencka to potężne narzędzie, które może stać się bronią hakerów.

Zrozum swoje narzędzia. Frameworki takie jak React dają nam ogromną moc, ale z wielką mocą wiąże się wielka odpowiedzialność. Musimy dogłębnie rozumieć, jak działają ich mechanizmy, a nie tylko kopiować i wklejać kod ze Stack Overflow. Porównywanie obiektów przez referencję w tablicy zależności useEffect to klasyk, o którym nie myśli już wielu z nas.

Historia Cloudflare to świetne przypomnienie, że w świecie inżynierii oprogramowania granica między drobną poprawką a globalnym kryzysem potrafi być zaskakująco cienka. Warto więc nie tylko pisać kod, ale i uważnie myśleć o jego konsekwencjach — bo czasem największe „ataki” na nasze systemy nie przychodzą z zewnątrz, lecz rodzą się w naszych własnych edytorach.

Zapisz się już teraz! 

Subskrybując newsletter Davidson Consulting, otrzymujesz merytoryczne analizy z zakresu zarządzania ryzykiem, ciągłości działania, cyberbezpieczeństwa i compliance (m.in. DORA, NIS2), a także informacje o naszych usługach i produktach, które pomogą Ci skutecznie wdrożyć prezentowane strategie.  

Pamiętaj, Twoja subskrypcja jest w pełni dobrowolna i możesz ją anulować w każdej chwili jednym kliknięciem.
* - Pole obowiązkowe
Dziękujemy za zapisanie się do Forum Ekspertów Odporności Operacyjnej.
Ups! Coś poszło nie tak podczas uzupełnienia formy. Spróbuj ponownie lub skontaktuj się bezpośrednio.

Najnowsze artykuły

ENISA 2025: wyzwania i zalecenia dla UE

Europejska Agencja ds. Cyberbezpieczeństwa (ENISA) opublikowała raport Threat Landscape 2025, przedstawiający przegląd ekosystemu cyberzagrożeń w Europie wokresie od lipca 2024 do czerwca 2025 roku.
Czytaj dalej
Raport

ENISA 2025: wyzwania i zalecenia dla UE

Cyberbezpieczeństwo
Geopolityka a biznes
Bezpieczeństwo łańcucha dostaw
ENISA, raport, cyberbezpieczeństwo, threats
Administracja publiczna
IT i technologia

Globalna awaria Azure Front Door

Analiza incydentu i wnioski dla sektora finansowego (i nie tylko)
Czytaj dalej
Case Study

Globalna awaria Azure Front Door

Cyberbezpieczeństwo
Zarządzanie kryzysowe
Bezpieczeństwo łańcucha dostaw
Incydenty
awaria Microsoft Azure, awaria Azure Front Door, globalna awaria Microsoft, Azure Front Door outage, Microsoft Azure outage, awaria usług Microsoft, niedostępność usług Microsoft, Azure AD, Entra ID, App Service, Azure SQL Database, Azure Portal, Xbox, Minecraft, chmura Microsoft, awaria chmury, błąd konfiguracji Azure, konfiguracja tenant, software defect, wada oprogramowania, błąd ludzki Microsoft, human error Azure, efekt kaskadowy, przeciążenie węzłów Azure, awaria DNS, Azure DNS outage, rollback Azure, last known good configuration, LKGC, Site Reliability Engineering, SRE, defense in depth, automatyzacja wdrożeń, błąd walidacji konfiguracji, błędna konfiguracja, kontrola konfiguracji Azure, edge case Azure, control plane, data plane, failure in validation, awaria globalna, Microsoft incident report, Post Incident Report, PIR Microsoft, YKYN-BWZ, resilience Azure, cloud resilience, odporność operacyjna, operational resilience, DORA, Digital Operational Resilience Act, regulacje DORA, zgodność z DORA, compliance DORA, KNF, Komisja Nadzoru Finansowego, nadzór finansowy, ryzyko koncentracji, third party risk, ryzyko dostawcy chmury, cloud risk management, vendor lock-in, multicloud, multi-cloud, multi-region, geodywersyfikacja, architektura odporna, cloud architecture, disaster recovery, DRP, business continuity, BCP, cloud outage analysis, audyt chmurowy, cloud audit, SOC 2, cloud governance, SLA, RTO, RPO, czas odtworzenia Azure, Microsoft downtime, outage recovery, chaos engineering, testy negatywne, automatyczny rollback, Canary Deployment, phased deployment, failover Azure, critical third party provider, CCP, ESAs, EBA, EIOPA, ESMA, nadzór nad dostawcami chmury, resilience banking, odporność banków, ryzyko chmurowe w sektorze finansowym, ryzyko technologiczne, ciągłość działania, cloud compliance, architektura wielochmurowa, cloud diversification, multivendor strategy, strategia multicloud, optymalizacja kosztów chmury, cloud cost optimization, cloud latency, Azure performance, globalna infrastruktura Microsoft, awarie AWS, porównanie Azure AWS, cloud dependency, single point of failure, SPOF, cloud reliability, cloud security, błędy operacyjne Microsoft, analiza incydentu Azure, raport Microsoft Azure, zarządzanie ryzykiem ICT, cloud risk, infrastruktura krytyczna, cloud incident response, audyt poawaryjny, analiza PIR, Microsoft transparency report, cloud service disruption, krytyczne usługi ICT, chmura publiczna, odporność regulacyjna, zgodność z regulacjami UE, dyrektywa DORA, bezpieczeństwo chmury, cloud compliance EU, KNF DORA wytyczne, architektura bankowa, infrastruktura finansowa, cloud resilience strategy, zarządzanie ciągłością działania, ryzyko operacyjne, ryzyko ICT, cyberbezpieczeństwo sektora finansowego.
IT i technologia
Bankowość i rynki finansowe
Firmy w Polsce

Ataki na bankomaty Santander w Poznaniu

Analiza odpowiedzialności, zwrotu środków i wyzwań bezpieczeństwa.
Czytaj dalej
Case Study

Ataki na bankomaty Santander w Poznaniu

Incydenty
Zgodność
atak Santander, Santander bankomaty, zwrot środków po nieautoryzowanej transakcji, odpowiedzialność banku za straty klientów, skimming bankomatowy, zabezpieczenia bankomatów Santander, skradzione pieniądze Santander bank, umowy między bankiem a operatorem bankomatów, dyrektywa PSD2 w ochronie konsumentów, silne uwierzytelnianie klienta (SCA), monitoring bankomatów i wykrywanie oszustw, postępowanie prokuratorskie w sprawie skimmingu, odzyskiwanie pieniędzy przez bank, procedury bezpieczeństwa banku Santander, edukacja klientów w zakresie cyberbezpieczeństwa, System Bezpieczeństwa Danych Przemysłu Kart Płatniczych (PCI DSS), skimmery i kamery na bankomatach, operatorzy bankomatów Euronet i ITCARD, ryzyko prawne banku przy atakach na bankomaty, audyty i testy penetracyjne w sektorze bankowym, współpraca banku z organami ścigania w sprawach cyberprzestępczości.
Bankowość i rynki finansowe

Jak przygotowywać testy planów lub procedur awaryjnych

Incydent w Erding wyraźnie nas uczy: nie możemy sobie pozwolić na „uczenie się na błędach" w obszarach, gdzie stawką jest życie ludzkie.
Czytaj dalej
Case Study

Jak przygotowywać testy planów lub procedur awaryjnych

Komunikacja kryzysowa
Ochrona ludności
Zarządzanie kryzysowe
testy planów awaryjnych, testowanie procedur awaryjnych, zarządzanie ciągłością działania, plan reagowania kryzysowego, zarządzanie kryzysowe, analiza incydentu bezpieczeństwa, analiza incydentu Erding, incydent w Erding, Bundeswehra, ćwiczenia wojskowe Erding, strzelanina podczas ćwiczeń, błędy komunikacji między wojskiem a policją, zarządzanie ryzykiem operacyjnym, ćwiczenia międzyresortowe, komunikacja kryzysowa, błędy w komunikacji między służbami, unified command, testowanie odporności organizacji, analiza FMEA, zarządzanie incydentami, bezpieczeństwo infrastruktury krytycznej, planowanie testów bezpieczeństwa, kultura bezpieczeństwa, lessons learned, testowanie systemów łączności, dobre praktyki testowania procedur, kryzys w Bawarii, systemowe błędy bezpieczeństwa, koordynacja służb, komunikacja międzyresortowa, zarządzanie incydentami w czasie rzeczywistym
Administracja publiczna
Podmioty ważne i kluczowe