Регуларни израз је срушио Cloudflare. 27 минута.
2.
2. јул 2019, 13:42 УТЦ: једно ново правило за Cloudflare-ов Веб Апликативни Фајервол ступа на снагу у 180+ градова за око две секунде. То је XSS правило у симулационом режиму, тако да ништа не блокира, али и даље ради на сваком захтеву и завршава се са .*(?:.*=.*). PCRE враћа уназад, свако ЦПУ језгро које опслужује ХТТП достиже 100 %, и сваки Cloudflare-проксирани сајт враћа 502 током 27 минута; саобраћај пада за 82 %. Прекидач за искључивање се налази иза Cloudflare Access-а, који се налази иза Cloudflare-а. Постмортем, из Cloudflare-овог сопственог извештаја: ЦПУ заштита уклоњена недељама раније у рефакторисању намењеном уштеди ЦПУ-а, процедура која је омогућила било ком правилу да прескочи припрему, механизам без гаранције сложености, 11 узрока и 7 поправки. Пресуда за поправку: SHIP IT.
Прочитајте писано издање (енглески) ↗
Шта овај видео покрива
- 13:31–13:42 УТЦ: ПР спојен, ЦИ зелен (без ЦПУ теста), Quicksilver гура правило у 180+ градова; WAF правила прескачу DOG → PIG → Canary фазе
- 13:45–14:07: прва страница; ЦПУ 100 % широм света, саобраћај −82 %, 502с свуда; интерна контролна табла је иза Cloudflare Access-а, који је ван функције; неки акредитиви су истекли; ретко увежбаван заобилазни пут
- 14:07–14:09: глобално WAF гашење; саобраћај и ЦПУ нормални након 27 минута; 14:52 WAF поново ради без правила
- 2. јул (15:50 УТЦ) и 12. јул: Cloudflare објављује напомену истог дана и комплетан постмортем; ЦПУ заштита поново додата, 3.868 правила поново прочитано, постепена примена, прелазак на regex механизам са линеарним временом
Преведени транскрипт
Преведено са оригиналне енглеске нарације. Доступни аудио и титлови контролисани су од стране YouTube-а.
0:00 Један регуларни израз истовремено ступа на снагу на сваком Cloudflare серверу, и наредних двадесет седам минута сајтови иза њега су страница са грешком 502, што је, за заштитни зид, најстроже могуће подешавање. 2. јул 2019. године, 13:42 УТЦ. Cloudflare објављује у року од два сата: није напад, лоша примена, саобраћај смањен за 82 процента. Десет дана касније CTO Џон Грејем-Каминг објављује комплетан постмортем, укључујући регуларни израз, и Hacker News му даје 698 поена,
0:26 што је за прекид рада стојеће овације. Како се то дешава, зашто је то могуће и ко је заправо крив. Ово је The Daily Diff, постмортем. 13:31. Захтев за повлачење се спаја: једно ново правило заштитног зида против међусајтног скриптовања, у симулационом режиму, тако да ништа не блокира. 13:37, тестови пролазе; ниједан не мери ЦПУ. 13:42, правило се шаље у 180 градова за две секунде, јер WAF правила прескачу фазе пса, свиње и канаринца које добијају друга издања.
0:54 13:45, прва страница. 13:49, Hacker News има тему на страници статуса, која и даље каже да су сви системи оперативни. Правило се завршава са тачка-звезда, тачка-звезда, једнако, тачка-звезда: било шта, затим било шта, затим знак једнакости. PCRE претпоставља похлепно, не успева и враћа се кроз сваки други размак. x једнако x захтева 23 корака. Двадесет икс-ова након једнакости: 555.
1:15 Двадесет икс-ова, без знака једнакости: 4.067 корака да се ништа не пронађе. Покрените то на сваком захтеву и свако језгро је на сто посто, радећи ништа, темељно. Два чувара су требала да то ухвате. Ограничење ЦПУ-а на правилима уклоњено је грешком недељама раније, у рефакторисању које је требало да омогући WAF-у да користи мање ЦПУ-а. А процедура омогућава било ком правилу да прескочи припрему, јер правила постоје да би зауставила активне нападе; овај није био хитан, а ипак је отишао глобално.
1:37 14:00, WAF је идентификован; нема напада. 14:02, неко предлаже глобално гашење: једна компонента, искључена, широм света. Прекидач је иза Cloudflare Access-а. Cloudflare Access је иза Cloudflare-а. Неки акредитиви су истекли од некоришћења, тако да најбржа мрежа на интернету проводи пет минута на заобилазни пут који нико није увежбао. 14:07, искључивање. 14:09, саобраћај нормалан. git blame: примена са једном брзином, глобална; ЦПУ заштита рефакторисана случајно;
2:04 regex механизам без горње границе. Није инжењер који је написао правило: постмортем наводи једанаест узрока и никога не именује. Радијус експлозије: 27 минута, 82 процента саобраћаја, 100 посто ЦПУ-а на сваком језгру, у сваком граду. Контролна табла и АПИ налазе се иза истог руба, тако да корисници не могу чак ни да га искључе. Hacker News, испод постмортема: имали су један проблем, користили су регуларни израз, сада имају два. Стара шала. Још увек се компајлира.
2:28 Пресуда, постмортем: SHIP IT. ЦПУ заштита је поново укључена, свих 3.868 правила се чита ручно, правила пролазе кроз припрему, и механизам прелази на онај са гаранцијама линеарног времена, које је објавио Кен Томпсон 1968. године. Понедељак: без тачка-звезда тачка-звезда у било чему што се покреће по захтеву, и држите прекидач за искључивање од ствари коју искључује. Пошаљите ми инцидент о коме вам још увек није дозвољено да говорите, у коментарима, или на the daily diff dot dev.
2:53 И то је разлика за данас. Ја сам Нико из Axrisi-ја. Спајајте одговорно.
Извори
- John Graham-Cumming, "Details of the Cloudflare outage on July 2, 2019" (Jul 12, 2019)blog.cloudflare.com
- Matthew Prince, "Cloudflare outage caused by bad software deploy (updated)" (Jul 2, 2019)blog.cloudflare.com
- Matthew Prince on X, Jul 2, 2019, 14:22 UTCx.com
- Matthew Prince on X, Jul 2, 2019, 14:36 UTC ("No evidence yet attack related")x.com
- Hacker News, Jul 2, 2019, 13:49 UTC — "Cloudflare Network Performance Issues" (631 points)news.ycombinator.com
- Hacker News, Jul 2, 2019 — "Cloudflare outage caused by bad software deploy" (348 points)news.ycombinator.com
- Hacker News, Jul 12, 2019 — "Details of the Cloudflare outage on July 2, 2019" (698 points)news.ycombinator.com
- TechCrunch, Jul 2, 2019techcrunch.com



