Na początku lipca pisałem o awarii usługi Cloudflare, przez co spora część internetu (strony WWW) przestała działać. Wspomniałem wtedy też, że ekipa z Cloudflare zapowiedziała, że niebawem napisze coś więcej na temat samego incydentu. I jak zapowiedzieli, tak zrobili…
Wyrażenie regularne, które zatrzymało Cloudflare i spory kawał(ek) internetu
Od pierwszych informacji na temat usterki była wiadomo, że przyczyną było wdrożenie błędnego wyrażenia regularnego (RegEx) w regułach WAF (Web Application Firewall), co spowodowało natychmiastowe obciążenie procesorów maszyn obsługujących usługę.
Wg informacji z bloga Cloudflare całe wyrażenie regularne wygląda tak:
?:(?:\"|'|\]|\}|\\|\d|(?:nan|infinity|true|false|null|undefined|symbol|math)|\`|\-|\+)+[)]*;?((?:\s|-|~|!|{}|\|\||\+)*.*(?:.*=.*)))
Z czego problematyczny fragment, który został dodany to niepozorne:
.*(?:.*=.*)
Te kilka niepozornych znaków pokazuje świetnie potęgę wyrażeń regularnych. Tylko tyle wystarczyło, by internet wstrzymał oddech.
Nie będę nawet usiłował wyjaśniać wyrażenia regularnego, zasady działania itp., bo choć zdarza mi się korzystać, to jest to tylko tyle, ile muszę. Choć wtedy często wpadam na szalony pomysł, by poświęcić trochę czasu i z wyrażeniami regularnymi zapoznać się dogłębnie. Na szczęście szybko wraca rozsądek i temat zostawiam… ;-)
- Home Assistant 2024.11, czyli „sekcje” domyślnym widokiem z opcją migracji, WebRTC oraz wirtualna kamera - 1970-01-01
- Black Friday w ZUS, czyli jest jeszcze kilka dni, by złożyć wniosek RWS i skorzystać z wakacji składkowych płacąc ZUS za grudzień 2024 - 1970-01-01
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01