+− 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 публикува бележката от същия ден и пълния посмъртен анализ; защитата на процесора е възстановена, 3 868 правила са препрочетени, поетапни разгръщания, преминаване към двигател за регулярни изрази с линейно време

Преведен препис

Преведено от оригиналния английски разказ. Наличните аудио и субтитри се контролират от YouTube.

0:00 Един регулярен израз започва работа на всеки Cloudflare сървър едновременно, и през следващите двадесет и седем минути сайтовете зад него са страница с код 502, което за защитна стена е най-строгата възможна настройка. 2 юли 2019 г., 13:42 UTC. Cloudflare публикува до два часа: не е атака, лошо разгръщане, трафикът е намалял с 82 процента. Десет дни по-късно техническият директор Джон Греъм-Къминг публикува пълния посмъртен анализ, включително регулярен израз, и 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 стъпки. Двадесет x-а след равното: 555.

1:15 Двадесет x-а, без знак за равенство: 4 067 стъпки, за да не намери нищо. Изпълнете това при всяка заявка и всяко ядро е на сто процента, като не прави нищо, изцяло. Двама охранители трябваше да го хванат. Лимитът на процесора за правилата беше премахнат по погрешка седмици по-рано, при рефакториране, предназначено да накара WAF да използва по-малко процесор. И процедурата позволява на всяко правило да пропуска стейджинг, защото правилата съществуват, за да спират живи атаки; тази не беше спешна и все пак стана глобална.

1:37 14:00, WAF е идентифициран; без атака. 14:02, някой предлага глобалното прекратяване: един компонент, изключен, по целия свят. Превключвателят е зад Cloudflare Access. Cloudflare Access е зад Cloudflare. Някои идентификационни данни са изтекли от неизползване, така че най-бързата мрежа в интернет прекарва пет минути в байпас, който никой не е тренирал. 14:07, убиване. 14:09, трафик нормален. git blame: разгръщане с една скорост, глобално; защитен процесор, рефактуриран по

2:04 случайност; двигател за регулярен израз без горна граница. Не инженерът, който е написал правилото: посмъртният анализ изброява единадесет причини и не назовава никого. Радиус на взрива: 27 минути, 82 процента от трафика, 100 процента процесор на всяко ядро, във всеки град. Таблото за управление и API се намират зад същия край, така че клиентите дори не могат да го изключат, Hacker News, под посмъртния анализ: имаха един проблем, използваха регулярен израз, сега имат два. Стара шега. Все още се компилира.

2:28 Присъда, посмъртно: ship it. Защитата на процесора е върната, всички 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 · bg · 25.09.2026 г.

Една милисекунда бъг спря въздушния трафик в Обединеното кралство. За шест часа.

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

3:06 ↗