+− THE DAILY DIFFdev & AI news
SHIP IT

Регуларен израз го сруши Cloudflare. 27 минути.

2 јули 2019 година, 13:42 UTC: едно ново правило за заштитниот ѕид на веб-апликации на Cloudflare стапува во сила во над 180 градови за околу две секунди.

2 јули 2019 година, 13:42 UTC: едно ново правило за заштитниот ѕид на веб-апликации на Cloudflare стапува во сила во над 180 градови за околу две секунди. Тоа е XSS правило во режим на симулација, така што не блокира ништо, но сепак работи на секое барање и завршува со .*(?:.*=.*). PCRE се враќа назад, секое процесорско јадро што опслужува HTTP достигнува 100 %, и секоја локација проксирана од Cloudflare враќа 502 за 27 минути; сообраќајот опаѓа за 82 %. Прекинувачот за итни случаи е зад Cloudflare Access, кој е зад Cloudflare. Постмортем, од сопствениот извештај на Cloudflare: процесорската заштита отстранета неколку недели порано во преработка наменета за заштеда на процесор, процедурата што дозволуваше секое правило да ја прескокне фазата на тестирање, моторот без гаранција за сложеност, 11-те причини и 7-те поправки. Пресуда за поправката: SHIP IT.

Прочитајте го пишаното издание (англиски) ↗

Што покрива ова видео

  • 13:31–13:42 UTC: PR споен, CI зелен (без CPU тест), Quicksilver го турка правилото до 180+ градови; WAF правилата ги прескокнуваат фазите DOG → PIG → Canary
  • 13:45–14:07: прва страница; CPU 100 % ширум светот, сообраќај −82 %, 502 насекаде; внатрешниот контролен панел е зад Cloudflare Access, кој не работи; некои ингеренции истечени; ретко вежбан бајпас
  • 14:07–14:09: глобално исклучување на WAF; сообраќајот и CPU нормални по 27 минути; 14:52 WAF се враќа без правилото
  • 2 јули (15:50 UTC) и 12 јули: Cloudflare ја објавува забелешката од истиот ден и целосната постмортем; CPU заштитата повторно додадена, 3.868 правила повторно прочитани, постепени имплементации, премин кон regex мотор со линеарно време

Преведен транскрипт

Преведено од оригиналната англиска нарација. Достапното аудио и наслови се контролирани од YouTube.

0:00 Еден регуларен израз стапува во сила на секој Cloudflare сервер одеднаш, и во наредните дваесет и седум минути, страниците зад него се страница 502, што, за заштитен ѕид, е најстрогата можна поставка. 2 јули 2019 година, 13:42 UTC. 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: имплементација со една брзина, глобална; CPU заштита преработена по

2:04 грешка; regex мотор без горна граница. Не инженерот што го напиша правилото: постмортем извештајот наведува единаесет причини и не споменува никого. Радиус на оштетување: 27 минути, 82 проценти од сообраќајот, 100 проценти процесор на секое јадро, во секој град. Контролната табла и API се зад истиот раб, така што корисниците не можат ниту да ја исклучат ја. Hacker News, под постмортем: имаа еден проблем, користеа регуларен израз, сега имаат два. Стара шега. Сè уште се компајлира.

2:28 Пресуда, постмортем: SHIP IT. CPU заштитата е вратена, сите 3.868 правила се читаат рачно, правилата минуваат низ фазата на тестирање, и моторот се префрла на таков со линеарно време гаранции, објавени од Кен Томпсон во 1968 година. Понеделник: без точка-ѕвезда точка-ѕвезда во ништо што работи по барање, и држете го прекинувачот за итни случаи подалеку од она што го убива. Испратете ми го инцидентот за кој сè уште не ви е дозволено да зборувате, во коментарите, или на daily diff dot dev.

2:53 И тоа е разликата за денес. Јас сум Нико од Axrisi. Спојувајте одговорно.

Извори

  1. John Graham-Cumming, "Details of the Cloudflare outage on July 2, 2019" (Jul 12, 2019)blog.cloudflare.com
  2. Matthew Prince, "Cloudflare outage caused by bad software deploy (updated)" (Jul 2, 2019)blog.cloudflare.com
  3. Matthew Prince on X, Jul 2, 2019, 14:22 UTCx.com
  4. Matthew Prince on X, Jul 2, 2019, 14:36 UTC ("No evidence yet attack related")x.com
  5. Hacker News, Jul 2, 2019, 13:49 UTC — "Cloudflare Network Performance Issues" (631 points)news.ycombinator.com
  6. Hacker News, Jul 2, 2019 — "Cloudflare outage caused by bad software deploy" (348 points)news.ycombinator.com
  7. Hacker News, Jul 12, 2019 — "Details of the Cloudflare outage on July 2, 2019" (698 points)news.ycombinator.com
  8. TechCrunch, Jul 2, 2019techcrunch.com

Поврзани видеа

postmortem · mk · 25 сеп. 2026 г.

Една милисекундна грешка го запре воздушниот сообраќај во Велика Британија. Шест часа.

Во 10:00 часот во вторник, 8 септември, едно рутинско барање за squawk-код во Националниот воздушен систем (NAS) на NATS е прекинато од порака со повисок приоритет додека делумно ажурира вредност. Про

3:06 ↗
postmortem · mk · 22 сеп. 2026 г.

Рестартирањето ја врати Телстра во 2006 година. Девет милиони телефони.

Инженер во Мелбурн повторно вклучува временски шасија во 2:50 часот по полноќ, и до појадок најголемата мобилна мрежа во Австралија се согласува дека е ноември 2006 година. 8 јули 2026 година: GPS кар

3:15 ↗