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

Strategiczna cisza po cyberataku na system wizowy w UK

prezentacja
Czytaj dalej
Case Study

Strategiczna cisza po cyberataku na system wizowy w UK

Incydenty
wojna, atak, cybertak, system wizowy, uk, Wielka Brytania,
Administracja publiczna

Awaria Porsche w Rosji

Analiza SPOF
Czytaj dalej
Raport

Awaria Porsche w Rosji

Bezpieczeństwo łańcucha dostaw
Ciągłość działania
Geopolityka a biznes
awaria Porsche Rosja 2025, Porsche VTS awaria, Vehicle Tracking System problem, Porsche nie uruchamia się, blokada silnika Porsche, cyberbezpieczeństwo samochodów, connected cars security, software-defined vehicle ryzyko, GPS spoofing samochody, zagłuszanie GPS Rosja, systemy antykradzieżowe VTS, zdalne wyłączenie pojazdu kill switch, cyfrowy kill switch technologia, single point of failure SPOF, awaria łańcucha dostaw technologia, supply chain risk management, zarządzanie ryzykiem dostawców, third party risk management TPRM, vendor risk management VRM, supplier risk management SRM, ryzyko technologiczne motoryzacja, sankcje technologiczne a dostępność usług, licencje oprogramowania ryzyko operacyjne, disaster recovery plan DRP, business continuity management BCM, cyber resilience organizacji, ryzyko geopolityczne technologii, UN R155 cybersecurity automotive, automotive cybersecurity 2025, analiza ryzyka dostawcy, vendor risk assessment, ERAMIS metodologia, cyfrowa suwerenność technologiczna, zależność od dostawcy technologii, bezpieczeństwo infrastruktury krytycznej
Transport i logistyka
E-commerce & retail
Motoryzacja

Insider threat. Sabotaż Davisa Lu jako przykład wewnętrznego zagrożenia dla ciągłości działania

Sprawa Lu dostarcza materiału analitycznego, nad którym powinna pochylić się każda organizacja.
Czytaj dalej
Case Study

Insider threat. Sabotaż Davisa Lu jako przykład wewnętrznego zagrożenia dla ciągłości działania

Cyberbezpieczeństwo
Incydenty
insider threat, zagrożenia wewnętrzne, cyberbezpieczeństwo, sabotaż w firmie, zarządzanie ryzykiem IT, ciągłość działania, bezpieczeństwo informacji, ochrona infrastruktury, Davis Lu, Eaton Corporation, złośliwy kod, zarządzanie uprawnieniami, audyt bezpieczeństwa, Business Continuity Plan, ryzyko osobowe, incydenty bezpieczeństwa, ochrona danych, zwolnienie pracownika IT, separacja obowiązków
Podmioty ważne i kluczowe

Atak Shai Hulud 2.0.

Ujawnienie krytycznych sekretów środowiska wykonawczego!
Czytaj dalej
Case Study

Atak Shai Hulud 2.0.

Cyberbezpieczeństwo
Ciągłość działania
Bezpieczeństwo łańcucha dostaw
Incydenty
Shai Hulud 2.0, atak supply chain npm, bezpieczeństwo CI/CD, złośliwe pakiety npm, non-human identities, zarządzanie sekretami, kradzież kluczy API, ochrona środowiska wykonawczego, rotacja poświadczeń, wyciek danych GitHub, dostęp Just-in-Time, malware w potokach CI/CD, audyt bezpieczeństwa ICT, environment.json, cyberbezpieczeństwo 2025
IT i technologia