Deweloper SaaS odkrył, że włączenie Cloudflare Bot Fight Mode dla każdej domeny na swoim koncie wstrzymało ruch API na cały miesiąc, uniemożliwiając płacącym klientom korzystanie z kluczowych funkcji produktu.

Problem ujawnił się, gdy deweloper zauważył nagłe spłaszczenie metryk użytkowania. Liczba nowych rejestracji nadal rosła, ale liczba aktywnych sesji przestała się zwiększać. Po tygodniach przepisywania kodu i debugowania okazało się, że winowajcą była pojedyncza funkcja bezpieczeństwa: Cloudflare Bot Fight Mode oznaczał własny punkt końcowy (endpoint) AWS Lambda usługi SaaS jako złośliwego bota i blokował go.

Jak jedno ustawienie zepsuło całą usługę

Stos technologiczny dewelopera opierał się na wywołaniach server-to-server. Wewnętrzna funkcja Lambda regularnie przesyłała dane z powrotem do publicznej domeny SaaS – jest to wzorzec powszechny w nowoczesnych architekturach mikroserwisowych. Bot Fight Mode rzuca wyzwania lub blokuje żądania, które wyglądają jak zautomatyzowane skrapery, chroniąc strony oparte na treści przed masowym pobieraniem danych (data harvesting).

Gdy tryb ten został włączony we wszystkich strefach, Cloudflare potraktował wychodzące żądanie Lambdy jako kolejnego zautomatyzowanego klienta. Żądanie nigdy nie dotarło do aplikacji, a ponieważ blokada nastąpiła na brzegu sieci (edge), narzędzia monitorujące SaaS nie wykryły błędu – ruch po prostu zniknął. Zużycie CPU w Cloudflare Workers dewelopera gwałtownie wzrosło, co skłoniło go do podejrzeń, że przyczyną jest zewnętrzny skraper, a nie jego własny backend.

Dopiero po przeanalizowaniu logów Cloudflare zauważył wpisy „Bot Fight Mode” blokujące zakresy IP Lambdy. Wyłączył tę funkcję dla dotkniętych stref, a ruch API powrócił do normy, przywracając metryki użytkowania na właściwe tory.

Dlaczego ten błąd jest istotny dla operatorów SaaS

  • Produkty skoncentrowane na API potrzebują otwartych kanałów server-to-server. Bot Fight Mode zakłada, że główny ruch stanowią żądania przeglądarek ludzkich po pliki HTML, obrazy lub zasoby statyczne. Platformy SaaS udostępniające API, webhooki lub wewnętrzne callbacki mogą zostać ograniczone lub zablokowane bez wyświetlenia kodu błędu w warstwie aplikacji.
  • Globalne ustawienia bezpieczeństwa rzadko pasują do każdego obciążenia. Stosowanie jednej konfiguracji Cloudflare do wszystkich domen sprawia, że każda strona jest traktowana tak, jakby miała ten sam model zagrożeń. Strony z treściami, fora i backendy SaaS mają bardzo różne wymagania dotyczące bezpieczeństwa.
  • Ciche awarie niszczą przychody. System alertowania dewelopera nie zadziałał, ponieważ zablokowane żądania nigdy nie dotarły do aplikacji. Tylko spadek metryk zaangażowania użytkowników zasugerował problem. Bez proaktywnego przeglądu logów na poziomie brzegu sieci, podobne problemy mogą trwać niepostrzeżenie.

Co deweloperzy mogą zrobić, aby uniknąć tego samego losu

  1. Przeanalizuj profil ruchu dla każdej strefy. Przed włączeniem Bot Fight Mode wypisz typy żądań, których spodziewa się Twoja domena: przeglądarki ludzkie, wywołania API, callbacki webhooków lub wywołania wewnętrznych usług. Jeśli którekolwiek z nich są niezbędne dla kluczowej funkcjonalności, traktuj strefę jako „API-first” i ogranicz ustawienia łagodzenia ataków botów do minimum.
  2. Testuj zmiany w środowisku stagingowym. Cloudflare pozwala na zastosowanie ustawień do pojedynczej subdomeny lub strefy stagingowej. Zweryfikuj, czy legalna automatyzacja nadal działa, zanim wdrożysz zmianę globalnie.
  3. Monitoruj logi na poziomie brzegu sieci jako część stosu observability. Przesyłaj logi zapory sieciowej (firewall) i mechanizmów łagodzenia ataków botów Cloudflare do systemu SIEM, Loki lub dowolnej usługi agregującej. Koreluj skoki liczby blokowanych żądań ze spadkami metryk aplikacji, aby wcześnie wykrywać ciche awarie.
  4. Zadbaj o odwracalność ustawień bezpieczeństwa. Przygotuj udokumentowany plan wycofania zmian (rollback). Jeśli nowa reguła spowoduje nieoczekiwane zachowanie, najpierw ją wyłącz i potwierdź zmianę, zanim zaczniesz poświęcać czas na szukanie obejść w kodzie.
  5. Zadawaj właściwe pytania. Zamiast pytać „jak mogę powstrzymać skrapery?”, zapytaj „czy to narzędzie rozwiązuje konkretny problem, z którym się mierzę?”. Funkcja bezpieczeństwa, która blokuje skrapery, może nie być odpowiednią odpowiedzią dla usługi SaaS, która wymaga otwartego dostępu do API.

Szersza perspektywa

Bot Fight Mode pozostaje wartościowy dla witryn, które muszą chronić statyczne treści przed agresywnymi crawlerami. Jego wadą jest niezdolność do odróżnienia wrogiego skrapera od legalnego, zautomatyzowanego klienta, który stosuje te same wzorce HTTP.

Podsumowanie

Zarządzając wieloma domenami w ramach jednego konta Cloudflare, traktuj każdą z nich jako odrębną strefę bezpieczeństwa. Włączaj Bot Fight Mode tylko tam, gdzie ruch jest generowany wyłącznie przez ludzi; w przypadku obciążeń SaaS opartych na API, pozostaw to ustawienie wyłączone lub dostosuj je za pomocą niestandardowych reguł zapory sieciowej (firewall rules). Jedno kliknięcie może uciszyć legalny ruch równie skutecznie, co zatrzymać skrapera.