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… ;-)
- Poznaj aplikację DroneTower, czyli nowy (i teoretycznie obecnie jedyny) sposób zgłaszania lotów dronami - 1970-01-01
- WordPress 6.5 i „Requires Plugins”, czyli autor wtyczki może teraz w prosty sposób określić, jakie wtyczki są niezbędne (wymagane), do działania jego wtyczki - 1970-01-01
- Przegląd nowości w aktualizacji 01.03.1300 oprogramowania kontrolera DJI RC (RM330) - 1970-01-01