Регулярдуу туюнтма Cloudflare'ди иштебей калды. 27 мүнөт.
2019-жылдын 2-июлу, саат 13:42 UTC: Cloudflare'дин Веб Колдонмо Брандмауэри үчүн бир жаңы эреже 180ден ашык шаарда эки секунддун ичинде иштей баштайт.
2019-жылдын 2-июлу, саат 13:42 UTC: Cloudflare'дин Веб Колдонмо Брандмауэри үчүн бир жаңы эреже 180ден ашык шаарда эки секунддун ичинде иштей баштайт. Бул симуляция режиминдеги XSS эрежеси, андыктан эч нерсени бөгөттөбөйт, бирок ар бир суроо-талапта иштейт жана .*(?:.*=.*) менен аяктайт. PCRE артка кайтат, HTTPди тейлеген ар бир CPU ядросу 100 %га жетет, жана ар бир Cloudflare проксиленген сайт 27 мүнөт бою 502 кайтарат; трафик 82 %га төмөндөйт. Өчүрүүчү которгуч Cloudflare Accessтин артында жайгашкан, ал Cloudflare'дин артында жайгашкан. Кырсыктан кийинки талдоо, Cloudflare'дин өзүнүн жазуусунан: CPU үнөмдөө үчүн бир нече жума мурун рефакторингде алынып салынган CPU коргоочусу, ар кандай эрежеге стейджингди өткөрүп жиберүүгө мүмкүндүк берген жол-жобо, татаалдык кепилдиги жок кыймылдаткыч, 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 токтотулду; 27 мүнөттөн кийин трафик жана CPU нормалдуу; 14:52 WAF эрежесиз кайра иштеди
- 2-июль (15:50 UTC) жана 12-июль: Cloudflare ошол эле күндөгү билдирүүнү жана толук кырсыктан кийинки талдоону жарыялайт; CPU коргоочусу кайра кошулду, 3,868 эреже кайра окулду, этаптуу жайылтуулар, сызыктуу убакыт regex кыймылдаткычына өтүү
Котормо стенограмма
Англис тилиндеги баштапкы баяндамадан которулган. Жеткиликтүү аудио жана коштомо жазуулар YouTube тарабынан көзөмөлдөнөт.
0:00 Бир регулярдуу туюнтма бир эле учурда ар бир Cloudflare серверинде иштей баштайт, жана кийинки жыйырма жети мүнөт бою анын артындагы сайттар 502 баракчасын көрсөтөт, бул брандмауэр үчүн эң катуу мүмкүн болгон жөндөө. 2019-жылдын 2-июлу, 13:42 UTC. Cloudflare эки сааттын ичинде жарыялайт: чабуул эмес, туура эмес жайылтуу, трафик 82 пайызга төмөндөдү. Он күндөн кийин CTO Джон Грэм-Камминг толук кырсыктан кийинки талдоону жарыялайт, regex кошулган, жана Hacker News ага 698 упай берет,
0:26 бул өчүрүү үчүн ордунан туруп кол чабуу. Кантип болгону, эмне үчүн мүмкүн болгону жана ким күнөөлүү. Бул The Daily Diff, кырсыктан кийинки талдоо. 13:31. Тартуу суроосу биригет: кросс-сайттыкка каршы бир жаңы брандмауэр эрежеси скриптинг, симуляция режиминде, андыктан эч нерсени бөгөттөбөйт. 13:37, тесттер өтөт; эч бири CPUну өлчөбөйт. 13:42, эреже эки секундада 180 шаарга жөнөтүлөт, анткени WAF эрежелери башка релиздер алган ит, чочко жана канар баскычтарын өткөрүп жиберет.
0:54 13:45, биринчи бет. 13:49, Hacker News статустук баракчада тред бар, ал дагы эле бардык системалар иштеп жатат дейт. Эреже чекит-жылдыз, чекит-жылдыз, барабар, чекит-жылдыз менен аяктайт: каалаган нерсе, андан кийин каалаган нерсе, анан барабар белгиси. PCRE ачкөздүк менен болжолдойт, ишке ашпайт жана ар бир башка бөлүнүүнү артка кайтарат. x барабар x 23 кадамды алат. Барабардан кийинки жыйырма x: 555.
1:15 Жыйырма x, барабар белгиси жок: эч нерсе таппаш үчүн 4,067 кадам. Муну ар бир суроо-талапта иштетсеңиз, ар бир ядро жүз пайыз иштейт, эч нерсе кылбай, кылдаттык менен. Эки сакчы муну кармап калышы керек эле. Эрежелердеги CPU чеги ката менен бир нече жума мурун алынып салынган, WAFтын CPUну азыраак колдонушуна багытталган рефакторингде. Жана жол-жобо ар кандай эрежеге стейджингди өткөрүп жиберүүгө мүмкүндүк берет, анткени эрежелер жандуу чабуулдарды токтотуу үчүн бар; бул өзгөчө кырдаал болгон эмес, бирок ал дүйнө жүзү боюнча жайылган.
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 пайыз CPU. Башкаруу панели жана API бир эле чектин артында жайгашкан, ошондуктан кардарлар аны өчүрө алышпайт. Hacker News, кырсыктан кийинки талдоонун астында: аларда бир көйгөй бар эле, регулярдуу туюнтманы колдонушту, эми аларда эки көйгөй бар. Эски тамаша. Дагы деле компиляцияланат.
2:28 Өкүм, кырсыктан кийинки талдоо: SHIP IT. CPU коргоочусу кайра орнотулду, бардык 3,868 эреже кол менен окулат, эрежелер стейджингден өтөт, жана кыймылдаткыч Кен Томпсон 1968-жылы жарыялаган сызыктуу убакыт кепилдиктери бар кыймылдаткычка өтөт. Дүйшөмбү: суроо-талап боюнча иштеген нерседе чекит-жылдыз чекит-жылдыз болбойт, жана өчүрүүчү которгучту ал өлтүргөн нерседен алыс кармагыла. Мага дагы эле айтууга уруксат берилбеген инцидентти жөнөтүңүз, комментарийлерде, же 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



