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… ;-)
- 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
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01