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.
Rosyjska balistyczna rakieta hiperdźwiękowa "Oriesznik" na wozie transportowym.

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.

Najnowsze artykuły

Plan ciągłości działania – instrukcja przetrwania dla Twojej firmy

Ostatni raz, kiedy tak dużo mówiło się o planach ciągłości działania to był chyba 2018 rok, gdy wchodziła w życie dyrektywa NIS. W 2025 roku wracamy do tematu ponownie ze względu na jej nowelizację - czyli NIS2 i oczekiwaną nowelizację ustawy o Krajowym Systemie Cyberbezpieczeństwa (UKSC).
Czytaj dalej
Baza wiedzy

Plan ciągłości działania – instrukcja przetrwania dla Twojej firmy

Ciągłość działania
plan ciągłości działania, ciągłość działania, tworzenie planów ciągłości działania, ocena ryzyka, ocena ryzyka w BCP, BCP
Podmioty ważne i kluczowe
Organizacje pozarządowe
Energetyka
Przemysł

Zarządzanie kryzysowe jako narzędzie zmniejszania lęku w organizacji

Każda organizacja prędzej czy później staje w obliczu kryzysu. 
Czytaj dalej
Baza wiedzy

Zarządzanie kryzysowe jako narzędzie zmniejszania lęku w organizacji

Zarządzanie kryzysowe
zarządzanie kryzysowe, zarządzanie ryzykiem, plan ciągłości działania,
Podmioty ważne i kluczowe
Firmy w Polsce
Administracja publiczna
Przemysł
FMCG

Dyrektywa NIS2: Nowe obowiązki i szanse dla polskich firm

Masz bardzo mało czasu, by być gotowym na implementację w Polsce.
Czytaj dalej
Baza wiedzy

Dyrektywa NIS2: Nowe obowiązki i szanse dla polskich firm

Cyberbezpieczeństwo
Zgodność
DORA, NIS2, dostawcy ICT, audyt, compliance, zgodność, zarządzanie ryzykiem, sektor finansowy, KNF, odporność operacyjna, wdrożenie DORA, kary DORA, weryfikacja dostawców, ICT Compliance Navigator, plany ciągłości działania, audyt KNF, ryzyko regulacyjne, ryzyko operacyjne, ISO 27031, ISO 22301, cyberodporność, zarządzanie łańcuchem dostaw ICT, narzędzie do audytu dostawców.
Bankowość i rynki finansowe
Ubezpieczenia

Planowanie ciągłości działania: kiedy lecą drony

W czasie wojny liminalnej celem nie jest bezpośrednia okupacja terenu, lecz sparaliżowanie państwa poprzez chaos, wywoływane konflikty wewnętrzne oraz destabilizację polityczną i gospodarczą.
Czytaj dalej
Artykuł

Planowanie ciągłości działania: kiedy lecą drony

Ciągłość działania
Bezpieczeństwo łańcucha dostaw
Geopolityka a biznes
Cyberbezpieczeństwo
Ochrona ludności
plan ciągłości działania, ciągłość działania, plan awaryjny dla firmy, zarządzanie ciągłością działania, ochrona biznesu przed cyberatakami, bezpieczeństwo IT w firmie, plan komunikacji kryzysowej, zarządzanie ryzykiem w przedsiębiorstwie, odporność biznesu, zagrożenia hybrydowe dla firm, wojna hybrydowa w Polsce, wojna liminalna co to, cyberataki w Polsce, sabotaż infrastruktury krytycznej, dezinformacja dla biznesu, zakłócenia łańcuchów dostaw, geopolityka a biznes, bezpieczeństwo narodowe a firmy, cyberatak ransomware, plan odzyskiwania danych po ataku, zagrożenia dla sektora medycznego, cyberbezpieczeństwo finansów, lawfare w biznesie, bezpieczeństwo systemów logistycznych, zagłuszanie GPS Polska, czy Polsce grozi wojna, jak przygotować firmę na kryzys, jak wojna hybrydowa wpływa na biznes, dlaczego firmy potrzebują BCP, jak chronić firmę przed dezinformacją
Energetyka
IT i technologia
Podmioty ważne i kluczowe
Przemysł