ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

ΠŸΠΎΡ‡Ρ‚ΠΈ 9 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ Cloudflare Π±Ρ‹Π»Π° ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ, Π° я Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² Π½Π΅ΠΉ, Π±Ρ‹Π» просто ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π§Π΅Ρ€Π΅Π· мСсяц послС запуска Cloudflare я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΅ΠΌ сайтикС jgc.org, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ DNS. Π’ Cloudflare внСсли ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Protocol Buffers, Π° Ρ‚Π°ΠΌ Π±Ρ‹Π» ΠΏΠΎΠ»ΠΎΠΌΠ°Π½Π½Ρ‹ΠΉ DNS.

Π― сразу написал ΠœΡΡ‚ΡŒΡŽ ΠŸΡ€ΠΈΠ½ΡΡƒ (Matthew Prince), ΠΎΠ·Π°Π³Π»Π°Π²ΠΈΠ² письмо Β«Π“Π΄Π΅ ΠΌΠΎΠΉ DNS?Β», Π° ΠΎΠ½ прислал Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚, ΠΏΠΎΠ»Π½Ρ‹ΠΉ тСхничСских подробностСй (всю пСрСписку Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ здСсь), Π½Π° Ρ‡Ρ‚ΠΎ я ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»:

ΠžΡ‚: Π”ΠΆΠΎΠ½ Грэхэм-Камминг
Π”Π°Ρ‚Π°: 7 октября 2010 Π³ΠΎΠ΄Π°, 9:14
Π’Π΅ΠΌΠ°: Re: Π“Π΄Π΅ ΠΌΠΎΠΉ DNS?
ΠšΠΎΠΌΡƒ: ΠœΡΡ‚ΡŒΡŽ ΠŸΡ€ΠΈΠ½Ρ

ΠšΠ»Π°ΡΡΠ½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚, спасибо. Π― ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ позвоню, Ссли Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. НавСрноС, стоит Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ± этом пост, ΠΊΠΎΠ³Π΄Π° собСрСтС всю Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„Ρƒ. Π”ΡƒΠΌΠ°ΡŽ, людям понравится ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΈ чСстный рассказ. ОсобСнно Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ вырос Ρ‚Ρ€Π°Ρ„ΠΈΠΊ послС запуска.

Π£ мСня Π½Π° сайтС Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, ΠΈ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ SMS ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сбоС. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сбой Π±Ρ‹Π» с 13:03:07 Π΄ΠΎ 14:04:12. ВСсты проводятся ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ ΠΏΡΡ‚ΡŒ ΠΌΠΈΠ½ΡƒΡ‚.

Π£Π²Π΅Ρ€Π΅Π½, Π²Ρ‹ со всСм Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ. Π’Π°ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ свой Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² Π•Π²Ρ€ΠΎΠΏΠ΅? πŸ™‚

А ΠΎΠ½ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»:

ΠžΡ‚: ΠœΡΡ‚ΡŒΡŽ ΠŸΡ€ΠΈΠ½Ρ
Π”Π°Ρ‚Π°: 7 октября 2010 Π³ΠΎΠ΄Π°, 9:57
Π’Π΅ΠΌΠ°: Re: Π“Π΄Π΅ ΠΌΠΎΠΉ DNS?
ΠšΠΎΠΌΡƒ: Π”ΠΆΠΎΠ½ Грэхэм-Камминг

Бпасибо. ΠœΡ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ всСм, ΠΊΡ‚ΠΎ написал. Π― сСйчас Π΅Π΄Ρƒ Π² офис, ΠΈ ΠΌΡ‹ напишСм Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π±Π»ΠΎΠ³Π΅ ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠΌ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ пост Π½Π° нашСй доскС объявлСний. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн, Ρ‡Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ β€” нашС всС.

БСйчас Cloudflare β€” Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ большая компания, я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² Π½Π΅ΠΉ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ½Π΅ приходится ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎ нашСй ошибкС, Π΅Π΅ послСдствиях ΠΈ Π½Π°ΡˆΠΈΡ… дСйствиях.

Бобытия 2 июля

2 июля ΠΌΡ‹ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² управляСмых ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… для WAF, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… процСссорныС рСсурсы Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»ΠΈΡΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ядрС процСссора, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ HTTP/HTTPS Π² сСти Cloudflare ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. ΠœΡ‹ постоянно ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅ΠΌ управляСмыС ΠΏΡ€Π°Π²ΠΈΠ»Π° для WAF Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ уязвимости ΠΈ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹. Π’ ΠΌΠ°Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ поспСшили Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ уязвимости Π² SharePoint. Вся ΡΡƒΡ‚ΡŒ нашСго WAF β€” Π² возмоТности быстрого ΠΈ глобального развСртывания ΠΏΡ€Π°Π²ΠΈΠ».

К соТалСнию, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π³Π° содСрТало рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΎ Π½Π° бэктрСкинг слишком ΠΌΠ½ΠΎΠ³ΠΎ процСссорных рСсурсов, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… для HTTP/HTTPS. ΠžΡ‚ этого пострадали наши основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прокси, CDN ΠΈ WAF. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ процСссорныС рСсурсы для обслуТивания Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° HTTP/HTTPS доходят ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄ΠΎ 100% Π½Π° сСрвСрах Π² нашСй сСти.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°
ИспользованиС процСссорных рСсурсов Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚ΠΎΡ‡Π΅ΠΊ присутствия Π²ΠΎ врСмя ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π°

Π’ ΠΈΡ‚ΠΎΠ³Π΅ наши ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²) ΡƒΠΏΠΈΡ€Π°Π»ΠΈΡΡŒ Π² страницу с ошибкой 502 Π² Π΄ΠΎΠΌΠ΅Π½Π°Ρ… Cloudflare. Ошибки 502 Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Ρ„Ρ€ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Π΅Π±-сСрвСрами Cloudflare, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Ρ‰Π΅ Π±Ρ‹Π»ΠΈ свободныС ядра, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ с процСссами, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ HTTP/HTTPS.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, сколько нСудобств это доставило нашим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. Нам уТасно стыдно. И этот сбой мСшал Π½Π°ΠΌ эффСктивно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠΌ.

Если Π²Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², вас это, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½Π°ΠΏΡƒΠ³Π°Π»ΠΎ, рассСрдило ΠΈ расстроило. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ нас ΡƒΠΆΠ΅ 6 Π»Π΅Ρ‚ Π½Π΅ Π±Ρ‹Π»ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… сбоСв. Высокий расход процСссорных рСсурсов ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΈΠ·-Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° WAF с ΠΏΠ»ΠΎΡ…ΠΎ сформулированным рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ бэктрСкингу. Π’ΠΎΡ‚ Π²ΠΈΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: (?:(?:"|'|]|}||d|(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))

Π₯отя ΠΎΠ½ΠΎ само ΠΏΠΎ сСбС интСрСсноС (ΠΈ Π½ΠΈΠΆΠ΅ я расскаТу ΠΎ Π½Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅), сСрвис Cloudflare отрубился Π½Π° 27 ΠΌΠΈΠ½ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·-Π·Π° Π½Π΅Π³ΠΎΠ΄Π½ΠΎΠ³ΠΎ рСгулярного выраТСния. Нам понадобилось врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ сбою, поэтому ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΈ ΠΌΡ‹ нСбыстро. Π’ ΠΊΠΎΠ½Ρ†Π΅ поста я ΠΎΠΏΠΈΡˆΡƒ бэктрСкинг Π² рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈ расскаТу, Ρ‡Ρ‚ΠΎ с этим Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ

НачнСм ΠΏΠΎ порядку. ВсС врСмя здСсь ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² UTC.

Π’ 13:42 ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉΡΡ мСТсСтСвыми экранами, внСс нСбольшиС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»Π° для обнаруТСния XSS с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ автоматичСского процСсса. БоотвСтствСнно, Π±Ρ‹Π» создан Ρ‚ΠΈΠΊΠ΅Ρ‚ запроса Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΈΠΌΠΈ Ρ‚ΠΈΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΌΡ‹ управляСм Ρ‡Π΅Ρ€Π΅Π· Jira (ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ Π½ΠΈΠΆΠ΅).

Π§Π΅Ρ€Π΅Π· 3 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ появилась пСрвая страница PagerDuty, ΡΠΎΠΎΠ±Ρ‰Π°Π²ΡˆΠ°Ρ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с WAF. Π­Ρ‚ΠΎ Π±Ρ‹Π» синтСтичСский тСст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ WAF (Ρƒ нас Ρ‚Π°ΠΊΠΈΡ… сотни) Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Cloudflare, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π—Π°Ρ‚Π΅ΠΌ сразу послСдовали страницы с оповСщСниями ΠΎ сбоях Π΄Ρ€ΡƒΠ³ΠΈΡ… сквозных тСстов сСрвисов Cloudflare, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ, повсСмСстных ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… 502, ΠΈ ΠΊΡƒΡ‡Π° ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈΠ· Π½Π°ΡˆΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ присутствия (PoP) Π² Π³ΠΎΡ€ΠΎΠ΄Π°Ρ… ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΡƒ процСссорных рСсурсов.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» нСсколько Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ, сорвался со встрСчи ΠΈ ΡƒΠΆΠ΅ шСл ΠΊ столу, ΠΊΠΎΠ³Π΄Π° Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ нашСго ΠΎΡ‚Π΄Π΅Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ сказал, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ потСряли 80% Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°. Π― ΠΏΠΎΠ±Π΅ΠΆΠ°Π» ΠΊ нашим SRE-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π½Π°Π΄ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ это какая-Ρ‚ΠΎ нСизвСстная Π°Ρ‚Π°ΠΊΠ°.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

SRE-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ Cloudflare разбросаны ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ круглосуточно. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ оповСщСния ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‚ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… панСлях ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π·Π° дСнь. Но Ρ‚Π°ΠΊΠΈΠ΅ страницы ΠΈ увСдомлСния ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅, ΠΈ SRE-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ сразу объявили ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΡΡ‚ΠΈ P0 ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ ΠΊ руководству ΠΈ систСмным ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°ΠΌ.

Наши лондонскиС ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡΠ»ΡƒΡˆΠ°Π»ΠΈ Π»Π΅ΠΊΡ†ΠΈΡŽ Π² Π³Π»Π°Π²Π½ΠΎΠΌ Π·Π°Π»Π΅. Π›Π΅ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ, всС ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π² большом ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†-Π·Π°Π»Π΅, ΠΏΠΎΠ·Π²Π°Π»ΠΈ Π΅Ρ‰Π΅ спСциалистов. Π­Ρ‚ΠΎ Π½Π΅ Π±Ρ‹Π»Π° обычная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ SRE ΠΌΠΎΠ³Π»ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ сами. НуТно Π±Ρ‹Π»ΠΎ срочно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… спСцов.

Π’ 14:00 ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с WAF ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π°Ρ‚Π°ΠΊΠΈ Π½Π΅Ρ‚. ΠžΡ‚Π΄Π΅Π» ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ процСссорах, ΠΈ стало ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ½ΠΎΠ²Π°Ρ‚ WAF. Π”Ρ€ΡƒΠ³ΠΎΠΉ сотрудник ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» эту Ρ‚Π΅ΠΎΡ€ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ strace. Π•Ρ‰Π΅ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Π» Π² Π»ΠΎΠ³Π°Ρ…, Ρ‡Ρ‚ΠΎ с WAF Π±Π΅Π΄Π°. Π’ 14:02 вся ΠΊΠΎΠΌΠ°Π½Π΄Π° явилась ΠΊΠΎ ΠΌΠ½Π΅, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ global kill β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, встроСнный Π² Cloudflare, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ.

Как ΠΌΡ‹ сдСлали global kill для WAF β€” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ история. ВсС Π½Π΅ Ρ‚Π°ΠΊ просто. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ собствСнныС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹, Π° Ρ€Π°Π· наш сСрвис Access Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ Π²ΠΎΠΉΡ‚ΠΈ Π² панСль Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ контроля (ΠΊΠΎΠ³Π΄Π° всС ΠΏΠΎΡ‡ΠΈΠ½ΠΈΠ»ΠΎΡΡŒ, ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ потСряли доступ ΠΈΠ·-Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ бСзопасности, которая ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ссли Π΄ΠΎΠ»Π³ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ панСль Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ контроля).

И ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ своих Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сСрвисов, Π²Ρ€ΠΎΠ΄Π΅ Jira ΠΈΠ»ΠΈ систСмы сборки. НуТСн Π±Ρ‹Π» ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ использовали нСчасто (это Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ). НаконСц, ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΡ‚Ρ€ΡƒΠ±ΠΈΡ‚ΡŒ WAF Π² 14:07, Π° Π² 14:09 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ процСссора Π²Π΅Π·Π΄Π΅ вСрнулся Π² Π½ΠΎΡ€ΠΌΡƒ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Cloudflare Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ занялись восстановлСниСм Ρ€Π°Π±ΠΎΡ‚Ρ‹ WAF. Битуация Π±Ρ‹Π»Π° ΠΈΠ· ряда Π²ΠΎΠ½, поэтому ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ тСсты (спросив сСбя, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² этом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ) ΠΈ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ (ΡƒΠ±Π΅Π΄ΠΈΠ²ΡˆΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ°Ρ‚ сработал) Π² ΠΎΠ΄Π½ΠΎΠΌ Π³ΠΎΡ€ΠΎΠ΄Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, пСрСнСся ΠΎΡ‚Ρ‚ΡƒΠ΄Π° ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

Π’ 14:52 ΠΌΡ‹ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ поняли ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈ внСсли исправлСниС, ΠΈ снова Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ WAF.

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Cloudflare

Π’ Cloudflare Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ управляСмыми ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ для WAF. Они ΡΡ‚Π°Ρ€Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ обнаруТСния, ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ количСство Π»ΠΎΠΆΠ½ΠΎΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈ быстро Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… появлСния. Π—Π° послСдниС 60 Π΄Π½Π΅ΠΉ Π±Ρ‹Π»ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ 476 запросов Π½Π° измСнСния для управляСмых ΠΏΡ€Π°Π²ΠΈΠ» для WAF (Π² срСднСм, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 3 часа).

Π­Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ симуляции, Π³Π΄Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ блокируСтся. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ этот Ρ€Π΅ΠΆΠΈΠΌ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ эффСктивности ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ измСрСния Π΄ΠΎΠ»ΠΈ Π»ΠΎΠΆΠ½ΠΎΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π»ΠΎΠΆΠ½ΠΎΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Но Π΄Π°ΠΆΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ симуляции ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ фактичСски Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, Π° Π² этом случаС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ содСрТало рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΠ²ΡˆΠ΅Π΅ слишком ΠΌΠ½ΠΎΠ³ΠΎ процСссорных рСсурсов.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· запроса Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠ»Π°Π½ развСртывания, ΠΏΠ»Π°Π½ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈ ссылка Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ (SOP) для этого Ρ‚ΠΈΠΏΠ° развСртывания. SOP для измСнСния ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ глобально. Π’ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ Π² Cloudflare всС устроСно совсСм ΠΈΠ½Π°Ρ‡Π΅, ΠΈ SOP прСдписываСт сначала ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ПО Π½Π° тСстированиС ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ использованиС Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ присутствия (PoP) (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ наши сотрудники), ΠΏΠΎΡ‚ΠΎΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ мСстС, ΠΏΠΎΡ‚ΠΎΠΌ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ числу ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ всСму ΠΌΠΈΡ€Ρƒ.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ git Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ систСмС Ρ‡Π΅Ρ€Π΅Π· BitBucket. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°Π΄ измСнСниями, ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собираСтся Π² TeamCity, ΠΈ ΠΊΠΎΠ³Π΄Π° сборка ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚, Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π²ΡŒΡŽΠ΅Ρ€Ρ‹. Когда ΠΏΡƒΠ»-рСквСст одобряСтся, ΠΊΠΎΠ΄ собираСтся ΠΈ проводится ряд тСстов (Π΅Ρ‰Π΅ Ρ€Π°Π·).

Если сборка ΠΈ тСсты Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, создаСтся запрос Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Jira, ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ спСциалист. ПослС одобрСния происходит Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«PoP-Π·Π²Π΅Ρ€ΠΈΠ½Π΅Ρ†Β»: DOG, PIG ΠΈ Canary (собака, свинка ΠΈ ΠΊΠ°Π½Π°Ρ€Π΅ΠΉΠΊΠ°).

DOG PoP β€” это Cloudflare PoP (ΠΊΠ°ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ· Π½Π°ΡˆΠΈΡ… Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ²), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сотрудники Cloudflare. PoP для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ использования позволяСт Π²Ρ‹Π»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΅Ρ‰Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². ПолСзная ΡˆΡ‚ΡƒΠΊΠ°.

Если DOG-тСст ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΡ‚Π°Π΄ΠΈΡŽ PIG (подопытная свинка). Π­Ρ‚ΠΎ Cloudflare PoP, Π³Π΄Π΅ нСбольшой объСм Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° бСсплатных ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄.
Если всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Canary. Π£ нас Ρ‚Ρ€ΠΈ Canary PoP Π² Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… ΠΌΠΈΡ€Π°. Π’ Π½ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… ΠΈ бСсплатных ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΈ это послСдняя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ошибки.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°
ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ€Π΅Π»ΠΈΠ·Π° ПО Π² Cloudflare

Если с ΠΊΠΎΠ΄ΠΎΠΌ всС Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π² Canary, ΠΌΡ‹ Π΅Π³ΠΎ выпускаСм. ΠŸΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· всС стадии β€” DOG, PIG, Canary, вСсь ΠΌΠΈΡ€ β€” Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ нСсколько часов ΠΈΠ»ΠΈ Π΄Π½Π΅ΠΉ, Π² зависимости ΠΎΡ‚ измСнСния ΠΊΠΎΠ΄Π°. Благодаря ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡŽ сСти ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Cloudflare ΠΌΡ‹ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ тСстируСм ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π»ΠΈΠ·ΠΎΠΌ для всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Но WAF ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ слСдуСт этому процСссу, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ быстро.

Π£Π³Ρ€ΠΎΠ·Ρ‹ WAF
Π’ послСдниС нСсколько Π»Π΅Ρ‚ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… прилоТСниях ΡƒΠ³Ρ€ΠΎΠ· стало Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС. Π­Ρ‚ΠΎ связано с большСй Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ инструмСнтов тСстирования ПО. НапримСр, Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΌΡ‹ писали ΠΏΡ€ΠΎ Ρ„Π°Π·Π·ΠΈΠ½Π³).

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://cvedetails.com/

ΠžΡ‡Π΅Π½ΡŒ часто ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ создаСтся ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ публикуСтся Π½Π° Github, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠ³Π»ΠΈ быстро ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Cloudflare Π½ΡƒΠΆΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ Π°Ρ‚Π°ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ своС ПО.

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ быстрой Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Cloudflare β€” Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ срСдств Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ уязвимости SharePoint Π² ΠΌΠ°Π΅ (Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ здСсь). ΠŸΠΎΡ‡Ρ‚ΠΈ сразу послС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ объявлСний ΠΌΡ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² установках SharePoint Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². Наши рСбята постоянно ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ ΠΈ ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π³ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ ΠΎΡ‚ мСТсайтового скриптинга (XSS). Π’Π°ΠΊΠΈΡ… Π°Ρ‚Π°ΠΊ Ρ‚ΠΎΠΆΠ΅ стало ΠΊΡƒΠ΄Π° большС Π·Π° послСдниС Π³ΠΎΠ΄Ρ‹.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://cvedetails.com/

Бтандартная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° для измСнСния управляСмого ΠΏΡ€Π°Π²ΠΈΠ»Π° для WAF прСдписываСт ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ тСстированиС Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ (CI) Π΄ΠΎ глобального развСртывания. Π’ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π³ ΠΌΡ‹ это сдСлали ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°. Π’ 13:31 ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΠ»-рСквСст с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π’ 13:37 TeamCity собрал ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΡ€ΠΎΠ³Π½Π°Π» тСсты ΠΈ Π΄Π°Π» Π΄ΠΎΠ±Ρ€ΠΎ. Набор тСстов для WAF провСряСт основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» WAF ΠΈ состоит ΠΈΠ· большого количСства ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ПослС ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов ΠΌΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° для WAF с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ числа HTTP-запросов. HTTP-запросы ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ запросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ WAF (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒ), Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС подряд ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»ΠΎΠΆΠ½ΠΎΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²). Но ΠΌΡ‹ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ тСсты Π½Π° Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ использованиС процСссорных рСсурсов, ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… сборок WAF ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ врСмя выполнСния тСстов с ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΎΡΡŒ, ΠΈ слоТно Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ рСсурсов Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚.

ВСсты Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹, ΠΈ TeamCity Π½Π°Ρ‡Π°Π» автоматичСски Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² 13:42.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Quicksilver

ΠŸΡ€Π°Π²ΠΈΠ»Π° WAF Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° срочноС устранСниС ΡƒΠ³Ρ€ΠΎΠ·, поэтому ΠΌΡ‹ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ распрСдСлСнного Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ°Ρ€ Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β» Quicksilver, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ распространяСт измСнСния глобально Π·Π° считанныС сСкунды. ВсС наши ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ эту Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· API, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ благодаря Π΅ΠΉ ΠΌΡ‹ молниСносно Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° измСнСния.

ΠœΡ‹ ΠΌΠ°Π»ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Quicksilver. РаньшС ΠΌΡ‹ использовали Kyoto Tycoon ΠΊΠ°ΠΊ глобально распрСдСлСнноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠ°Ρ€ Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», Π½ΠΎ с Π½ΠΈΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΈ ΠΌΡ‹ написали своС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ€Π΅ΠΏΠ»ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π² 180 Π³ΠΎΡ€ΠΎΠ΄Π°Ρ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Quicksilver ΠΌΡ‹ отправляСм измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², обновляСм ΠΏΡ€Π°Π²ΠΈΠ»Π° WAF ΠΈ распространяСм ΠΊΠΎΠ΄ JavaScript, написанный ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ Π² Cloudflare Workers.

ΠžΡ‚ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° API Π΄ΠΎ внСсСния измСнСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ всСго нСсколько сСкунд. ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ полюбилась эта ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ настройки. А Workers обСспСчиваСт ΠΈΠΌ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ глобальноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ПО. Π’ срСднСм Quicksilver распространяСт ΠΎΠΊΠΎΠ»ΠΎ 350 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² сСкунду.

И Quicksilver Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро. Π’ срСднСм ΠΌΡ‹ достигли 99-Π³ΠΎ процСнтиля 2,29 с для распространСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π’Π΅Π΄ΡŒ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ чиститС кэш, это происходит ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΈ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· Cloudflare Workers происходит с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ. Cloudflare ΠΎΠ±Π΅Ρ‰Π°Π΅Ρ‚ своим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ быстрыС Π°ΠΏΠ΄Π΅ΠΉΡ‚Ρ‹ Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Но Π² этом случаС ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ сыграла с Π½Π°ΠΌΠΈ Π·Π»ΡƒΡŽ ΡˆΡƒΡ‚ΠΊΡƒ, ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° измСнились повсСмСстно Π·Π° считанныС сСкунды. Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ WAF ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Lua. Cloudflare ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Lua Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ срСдС ΠΈ подробности Lua Π² WAF ΠΌΡ‹ ΡƒΠΆΠ΅ обсуТдали. Lua WAF ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ PCRE Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ примСняСт бэктрСкинг для сопоставлСния. Π£ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹ΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΈΠ·-ΠΏΠΎΠ΄ контроля. НиТС я ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ расскаТу ΠΎΠ± этом ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ с этим Π΄Π΅Π»Π°Π΅ΠΌ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π”ΠΎ развСртывания ΠΏΡ€Π°Π²ΠΈΠ» всС шло Π³Π»Π°Π΄ΠΊΠΎ: ΠΏΡƒΠ»-рСквСст Π±Ρ‹Π» создан ΠΈ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½, ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ CI/CD собрал ΠΈ протСстировал ΠΊΠΎΠ΄, запрос Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π² соотвСтствии с SOP, которая Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚, ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°
ΠŸΡ€ΠΎΡ†Π΅ΡΡ развСртывания WAF Π² Cloudflare

Π§Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ
Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», ΠΌΡ‹ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ нСдСлю Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌ дСсятки Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» WAF, ΠΈ Ρƒ нас Π΅ΡΡ‚ΡŒ мноТСство систСм Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… послСдствий Ρ‚Π°ΠΊΠΎΠ³ΠΎ развСртывания. И ΠΊΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это стСчСниС сразу Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π². Если Π½Π°ΠΉΡ‚ΠΈ всСго ΠΎΠ΄Π½Ρƒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ, это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ успокаиваСт, Π½ΠΎ Π½Π΅ всСгда соотвСтствуСт Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вмСстС ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ сбою нашСго сСрвиса HTTP/HTTPS.

  1. Π˜Π½ΠΆΠ΅Π½Π΅Ρ€ написал рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ бэктрСкингу.
  2. БрСдство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ расход процСссорных рСсурсов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π±Ρ‹Π»ΠΎ ΠΏΠΎ ошибкС ΡƒΠ΄Π°Π»Π΅Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅ WAF Π·Π° нСсколько нСдСль Π΄ΠΎ этого β€” Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Π±Ρ‹Π» Π½ΡƒΠΆΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ WAF потрСблял мСньшС рСсурсов.
  3. Π”Π²ΠΈΠΆΠΎΠΊ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΈΠΌΠ΅Π» Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ слоТности.
  4. Набор тСстов Π½Π΅ ΠΌΠΎΠ³ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ процСссорных рСсурсов.
  5. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° SOP Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ глобальноС Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ нСсрочных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ» Π±Π΅Π· многоэтапного процСсса.
  6. План ΠΎΡ‚ΠΊΠ°Ρ‚Π° Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΉ сборки WAF Π΄Π²Π°ΠΆΠ΄Ρ‹, Π° это Π΄ΠΎΠ»Π³ΠΎ.
  7. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ сработало слишком ΠΏΠΎΠ·Π΄Π½ΠΎ.
  8. ΠœΡ‹ ΠΏΡ€ΠΎΠΌΠ΅Π΄Π»ΠΈΠ»ΠΈ с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ страницы статуса.
  9. Π£ нас Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с доступом ΠΊ систСмам ΠΈΠ·-Π·Π° сбоя, Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±Ρ…ΠΎΠ΄Π° Π±Ρ‹Π»Π° нСдостаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°.
  10. SRE-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ потСряли доступ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ систСмам, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ срок дСйствия ΠΈΡ… ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… истСк ΠΏΠΎ сообраТСниям бСзопасности.
  11. Π£ Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ Π±Ρ‹Π»ΠΎ доступа ΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Cloudflare ΠΈΠ»ΠΈ API, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ проходят Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅Π³ΠΈΠΎΠ½ Cloudflare.

Π§Ρ‚ΠΎ измСнилось с ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π³Π°

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ остановили всС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Ρ€Π΅Π»ΠΈΠ·Π°ΠΌΠΈ для WAF ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ потрСблСния процСссорных рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ. (Π“ΠΎΡ‚ΠΎΠ²ΠΎ)
  2. Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ провСряСм всС 3868 ΠΏΡ€Π°Π²ΠΈΠ» Π² управляСмых ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… для WAF, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ случаи Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ бэктрСкинга. (ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°)
  3. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² Π½Π°Π±ΠΎΡ€ тСстов ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для всСх ΠΏΡ€Π°Π²ΠΈΠ». (ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ: 19 июля)
  4. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π΄Π²ΠΈΠΆΠΎΠΊ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ re2 ΠΈΠ»ΠΈ Rust β€” ΠΎΠ±Π° ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Π² срСдС выполнСния. (ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ: 31 июля)
  5. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ SOP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° поэтапно, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ПО Π² Cloudflare, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ экстрСнного глобального развСртывания, Ссли Π°Ρ‚Π°ΠΊΠΈ ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π»ΠΈΡΡŒ.
  6. Π Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ срочного Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Cloudflare ΠΈ API ΠΈΠ· Ρ€Π΅Π³ΠΈΠΎΠ½Π° Cloudflare.
  7. АвтоматизируСм ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ страницы Cloudflare Status.

Π’ долгосрочной пСрспСктивС ΠΌΡ‹ отказываСмся ΠΎΡ‚ Lua WAF, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я написал нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ WAF Π² Π½ΠΎΠ²ΡƒΡŽ систСму мСТсСтСвых экранов. Π’Π°ΠΊ WAF Π±ΡƒΠ΄Π΅Ρ‚ быстрСС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎΡ‚ сбой доставил нСприятности Π½Π°ΠΌ ΠΈ нашим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. ΠœΡ‹ быстро ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΈ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ изъянами процСссов, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΏΠ°Π΅ΠΌ Π΅Ρ‰Π΅ Π³Π»ΡƒΠ±ΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с рСгулярными выраТСниями Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, пСрСходя Π½Π° Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ.

Нам ΠΎΡ‡Π΅Π½ΡŒ стыдно Π·Π° этот сбой, ΠΈ ΠΌΡ‹ приносим извинСния нашим ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. НадССмся, эти измСнСния Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ большС Π½Π΅ повторится.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. БэктрСкинг рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

(?:(?:"|'|]|}||d
(?:nan|infinity|true|false|null|undefined|symbol|math)|`|-
|+)+[)]*;?((?:s|-|~|!|{}||||+)*.*(?:.*=.*)))

съСло всС процСссорныС рСсурсы, Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ стандартный Π΄Π²ΠΈΠΆΠΎΠΊ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚ΡƒΡ‚ Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅ .*(?:.*=.*). (?: ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ) β€” это Π½Π΅ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² скобках группируСтся ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅).

Π’ контСкстС Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ потрСблСния процСссорных рСсурсов ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ этот ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΠΊΠ°ΠΊ .*.*=.*. Π’ Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ выглядит излишнС слоТным. Но Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½Π΅Π΅, Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ Ρ‚Π°ΠΊΠΈΠ΅ выраТСния (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ слоТным выраТСниям Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… WAF), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просят Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ катастрофичСскому бэктрСкингу. И Π²ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π’ рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ . ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ символ, .* β€” ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ символов Β«ΠΆΠ°Π΄Π½ΠΎΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ² максимум символов, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ .*.*=.* ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ символов, ΠΏΠΎΡ‚ΠΎΠΌ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ символов, Π½Π°ΠΉΡ‚ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ символ =, ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ноль ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ символов.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ строку x=x. Она соотвСтствуСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ .*.*=.*. .*.* Π΄ΠΎ Π·Π½Π°ΠΊΠ° равСнства соотвСтствуСт ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ x (ΠΎΠ΄Π½Π° ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏ .* соотвСтствуСт x, Π° вторая β€” Π½ΡƒΠ»ΡŽ символов). .* послС = соотвСтствуСт послСднСму x.

Для Ρ‚Π°ΠΊΠΎΠ³ΠΎ сопоставлСния Π½ΡƒΠΆΠ½ΠΎ 23 шага. ΠŸΠ΅Ρ€Π²Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° .* Π² .*.*=.* дСйствуСт Β«ΠΆΠ°Π΄Π½ΠΎΒ» ΠΈ сопоставляСтся всСй строкС x=x. Π”Π²ΠΈΠΆΠΎΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ .*. Π£ нас большС Π½Π΅Ρ‚ символов для сопоставлСния, поэтому вторая Π³Ρ€ΡƒΠΏΠΏΠ° .* соотвСтствуСт Π½ΡƒΠ»ΡŽ символов (это допускаСтся). ΠŸΠΎΡ‚ΠΎΠΌ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°ΠΊΡƒ =. Π‘ΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² большС Π½Π΅Ρ‚ (пСрвая Π³Ρ€ΡƒΠΏΠΏΠ° .* использовала всС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ x=x), сопоставлСниС Π½Π΅ происходит.

И Ρ‚ΡƒΡ‚ Π΄Π²ΠΈΠΆΠΎΠΊ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ возвращаСтся ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ. Он ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ .* ΠΈ сопоставляСт Π΅Π΅ с x= (вмСсто x=x), Π° Π·Π°Ρ‚Π΅ΠΌ бСрСтся Π·Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒ .*. Вторая Π³Ρ€ΡƒΠΏΠΏΠ° .* сопоставляСтся со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ x, ΠΈ Ρƒ нас снова Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ символов. И ΠΊΠΎΠ³Π΄Π° Π΄Π²ΠΈΠΆΠΎΠΊ ΠΎΠΏΡΡ‚ΡŒ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ = Π² .*.*=.*, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ получаСтся. И ΠΎΠ½ снова Π΄Π΅Π»Π°Π΅Ρ‚ бэктрСкинг.

На этот Ρ€Π°Π· Π³Ρ€ΡƒΠΏΠΏΠ° .* всС Π΅Ρ‰Π΅ соотвСтствуСт x=, Π½ΠΎ вторая Π³Ρ€ΡƒΠΏΠΏΠ° .* большС Π½Π΅ x, Π° ноль символов. Π”Π²ΠΈΠΆΠΎΠΊ пытаСтся Π½Π°ΠΉΡ‚ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ символ = Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π΅ .*.*=.*, Π½ΠΎ Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ (вСдь Π΅Π³ΠΎ ΡƒΠΆΠ΅ заняла пСрвая Π³Ρ€ΡƒΠΏΠΏΠ° .*). И ΠΎΠ½ снова Π΄Π΅Π»Π°Π΅Ρ‚ бэктрСкинг.

На этот Ρ€Π°Π· пСрвая Π³Ρ€ΡƒΠΏΠΏΠ° .* Π±Π΅Ρ€Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ x. Но вторая Π³Ρ€ΡƒΠΏΠΏΠ° .* Β«ΠΆΠ°Π΄Π½ΠΎΒ» Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ =x. Π£ΠΆΠ΅ догадались, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚? Π”Π²ΠΈΠΆΠΎΠΊ пытаСтся ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ =, Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ бэктрСкинг.

ΠŸΠ΅Ρ€Π²Π°Ρ Π³Ρ€ΡƒΠΏΠΏΠ° .* всС Π΅Ρ‰Π΅ соотвСтствуСт ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ x. Вторая .* Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ =. РазумССтся, Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ =, вСдь это ΡƒΠΆΠ΅ сдСлала вторая Π³Ρ€ΡƒΠΏΠΏΠ° .*. И ΠΎΠΏΡΡ‚ΡŒ бэктрСкинг. И это ΠΌΡ‹ пытаСмся ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строку ΠΈΠ· Ρ‚Ρ€Π΅Ρ… символов!

Π’ ΠΈΡ‚ΠΎΠ³Π΅ пСрвая Π³Ρ€ΡƒΠΏΠΏΠ° .* сопоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ x, вторая .* β€” с Π½ΡƒΠ»Π΅ΠΌ символов, ΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π°ΠΊΠΎΠ½Π΅Ρ† сопоставляСт Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ = Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ с = Π² строкС. Π”Π°Π»ΡŒΡˆΠ΅ послСдняя Π³Ρ€ΡƒΠΏΠΏΠ° .* сопоставляСтся с послСдним x.

23 шага Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для x=x. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠ± использовании Perl Regexp::Debugger, Π³Π΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ происходят шаги ΠΈ бэктрСкинг.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½Π΅ΠΌΠ°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½ΠΎ Ρ‡Ρ‚ΠΎ Ссли вмСсто x=x Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ x=xx? Π­Ρ‚ΠΎ 33 шага. А Ссли x=xxx? 45. Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ линСйная. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ сопоставлСниС ΠΎΡ‚ x=x Π΄ΠΎ x=xxxxxxxxxxxxxxxxxxxx (20 x послС =). Если Ρƒ нас 20 x послС =, Π΄Π²ΠΈΠΆΠΎΠΊ выполняСт сопоставлСниС Π·Π° 555 шагов! (Мало Ρ‚ΠΎΠ³ΠΎ, Ссли Ρƒ нас потСрялся x= ΠΈ строка состоит просто ΠΈΠ· 20 x, Π΄Π²ΠΈΠΆΠΎΠΊ сдСлаСт 4067 шагов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ совпадСний Π½Π΅Ρ‚).

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π’ этом Π²ΠΈΠ΄Π΅ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ вСсь бэктрСкинг для сопоставлСния x=xxxxxxxxxxxxxxxxxxxx:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π‘Π΅Π΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° строки врСмя сопоставлСния растСт свСрхлинСйно. Но всС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ Ρ…ΡƒΠΆΠ΅, Ссли рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Допустим, Ρƒ нас Π±Ρ‹Π»ΠΎ Π±Ρ‹ .*.*=.*; (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° Π±Ρ‹Π»Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° с запятой). НапримСр, для сопоставлСния с Ρ‚Π°ΠΊΠΈΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠ°ΠΊ foo=bar;.

И здСсь бэктрСкинг стал Π±Ρ‹ настоящСй катастрофой. Для сопоставлСния x=x понадобится 90 шагов, Π° Π½Π΅ 23. И это число быстро растСт. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ x= ΠΈ 20 x, Π½ΡƒΠΆΠ½ΠΎ 5353 шага. Π’ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° значСния ΠΏΠΎ оси Y ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Если интСрСсно, посмотритС всС 5353 шага Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ сопоставлСния x=xxxxxxxxxxxxxxxxxxxx ΠΈ .*.*=.*;

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«Π»Π΅Π½ΠΈΠ²Ρ‹Π΅Β», Π° Π½Π΅ Β«ΠΆΠ°Π΄Π½Ρ‹Π΅Β» сопоставлСния, ΠΌΠ°ΡΡˆΡ‚Π°Π± бэктрСкинга ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Если ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° .*?.*?=.*?, для сопоставлСния x=x понадобится 11 шагов (Π° Π½Π΅ 23). Как ΠΈ для x=xxxxxxxxxxxxxxxxxxxx. ВсС ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ? послС .* Π²Π΅Π»ΠΈΡ‚ Π΄Π²ΠΈΠΆΠΊΡƒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ минимальноС число символов, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΠ΄Ρ‚ΠΈ дальшС.

Но Β«Π»Π΅Π½ΠΈΠ²Ρ‹Π΅Β» сопоставлСния Π½Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ бэктрСкинга ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ. Если Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ катастрофичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ .*.*=.*; Π½Π° .*?.*?=.*?;, врСмя выполнСния останСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ. x=x всС Ρ€Π°Π²Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ 555 шагов, Π° x= ΠΈ 20 x β€” 5353.

ЕдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ пСрСписывания ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° для большСй ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠΊΠΈ) β€” ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π΄Π²ΠΈΠΆΠΊΠ° рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π΅Π³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ бэктрСкинга. Π­Ρ‚ΠΈΠΌ ΠΌΡ‹ ΠΈ займСмся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ нСсколько нСдСль.

РСшСниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ извСстно Π΅Ρ‰Π΅ с 1968 Π³ΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° ΠšΠ΅Π½Ρ‚ Вомпсон написал ΡΡ‚Π°Ρ‚ΡŒΡŽ Programming Techniques: Regular expression search algorithm (Β«ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ программирования: Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ»). Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ описан ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹, Π° послС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ состояния Π² Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, врСмя выполнСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ зависит ΠΎΡ‚ сопоставляСмой строки.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ программирования
Алгоритм поиска рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
КСн Вомпсон (Ken Thompson)

Bell Telephone Laboratories, Inc., ΠœΡŽΡ€Ρ€Π΅ΠΉ-Π₯ΠΈΠ»Π», ΡˆΡ‚Π°Ρ‚ Нью-ДТСрси

Π—Π΄Π΅ΡΡŒ описываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ строки символов Π² тСкстС ΠΈ обсуТдаСтся рСализация этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅ компилятора. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² качСствС исходного ΠΊΠΎΠ΄Π° ΠΈ создаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для IBM 7094 Π² качСствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ тСкста для поиска ΠΈ ΠΏΠΎΠ΄Π°Π΅Ρ‚ сигнал ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° строка ΠΈΠ· тСкста сопоставляСтся с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ приводятся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Алгоритм
ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ поиска ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊ бэктрСкингу, Ссли частично ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ поиск Π½Π΅ Π΄Π°Π²Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ компиляции Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ с символами. Он ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ инструкции Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ происходит ΠΎΡ‡Π΅Π½ΡŒ быстро β€” послС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ списка автоматичСски выполняСтся поиск всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символов Π² рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.
Алгоритм компиляции ΠΈ поиска Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ с Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΊ контСкстный поиск. РазумССтся, это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ СдинствСнноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ поиска. НапримСр, Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ поиск символов ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² ассСмблСрС.
ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°ΠΊΠΎΠΌ с рСгулярными выраТСниями ΠΈ языком программирования ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° IBM 7094.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€
ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ этапов. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ этап β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ синтаксису, которая пропускаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ синтаксичСски ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ рСгулярныС выраТСния. На этом этапС Ρ‚Π°ΠΊΠΆΠ΅ вставляСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «·» для сопоставлСния рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. На Π²Ρ‚ΠΎΡ€ΠΎΠΌ этапС рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ прСобразуСтся Π² ΠΏΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. На Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ этапС создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 2 этапа ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹, ΠΈ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π½Π° Π½ΠΈΡ… ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Вомпсона Π½Π΅ говорится ΠΎ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°Ρ…, Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ объяснСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ прСдставлСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ALGOL-60, которая создаСт ΠΊΠΎΠ΄ языка сборки для IBM 7094. РСализация мудрСная, Π½ΠΎ сама идСя ΠΎΡ‡Π΅Π½ΡŒ простая.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ поиска. Он прСдставлСн Π·Π½Π°Ρ‡ΠΊΠΎΠΌ βŠ• с ΠΎΠ΄Π½ΠΈΠΌ Π²Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈ двумя Π²Ρ‹Ρ…ΠΎΠ΄Π°ΠΌΠΈ.
На рисункС 1 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ этапа компиляции ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рСгулярного выраТСния. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ символа Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ β€” a, b, c, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ создаСт ΡΡ‚Π΅ΠΊΠΎΠ²ΡƒΡŽ запись S[i] ΠΈ ΠΏΠΎΠ»Π΅ NNODE.

NNODE ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² СдинствСнной стСковой записи (см. рис. 5)

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядСло Π±Ρ‹ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ .*.*=.*, Ссли ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ… ΠΈΠ· ΡΡ‚Π°Ρ‚ΡŒΠΈ Вомпсона.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

На рис. 0 Π΅ΡΡ‚ΡŒ ΠΏΡΡ‚ΡŒ состояний, начиная с 0, ΠΈ 3 Ρ†ΠΈΠΊΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с состояний 1, 2 ΠΈ 3. Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Ρ€Π΅ΠΌ .* Π² рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. 3 ΠΎΠ²Π°Π»Π° с Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ символу. Овал со Π·Π½Π°ΠΊΠΎΠΌ = соотвСтствуСт Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠΌΡƒ символу =. БостояниС 4 являСтся ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ. Если ΠΌΡ‹ Π΅Π³ΠΎ достигли, Π·Π½Π°Ρ‡ΠΈΡ‚ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сопоставлСно.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΡƒΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ состояний ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сопоставлСния рСгулярного выраТСния .*.*=.*, ΠΌΡ‹ рассмотрим сопоставлСниС строки x=x. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° начинаСтся с состояния 0, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 1.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π§Ρ‚ΠΎΠ±Ρ‹ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π», конСчная машина Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… состояниях ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. НСдСтСрминированный ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ сдСлаСт всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Π•Ρ‰Π΅ Π½Π΅ успСв ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΠ±Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… состояния (1 ΠΈ 2), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 2.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

На рис. 2 Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ рассматриваСт ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ x Π² x=x. x ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒΡΡ с Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, пСрСйдя ΠΈΠ· состояния 1 ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² состояниС 1. Или x ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒΡΡ с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π½ΠΈΠΆΠ΅, пСрСйдя ΠΈΠ· состояния 2 ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² состояниС 2.

ПослС сопоставлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ x Π² x=x ΠΌΡ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π² состояниях 1 ΠΈ 2. ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ состояния 3 ΠΈΠ»ΠΈ 4, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ символ =.

Π—Π°Ρ‚Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ рассматриваСт = Π² x=x. Как ΠΈ x Π΄ΠΎ этого, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… Π²Π΅Ρ€Ρ…Π½ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΈΠ· состояния 1 ΠΈ Π² состояниС 1 ΠΈΠ»ΠΈ ΠΈΠ· состояния 2 Π² состояниС 2, Π½ΠΎ ΠΏΡ€ΠΈ этом Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ = ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΈΠ· состояниС 2 Π² состояниС 3 (ΠΈ сразу 4). Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 3.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ сбоя Π² Cloudflare 2 июля 2019 Π³ΠΎΠ΄Π°

Π—Π°Ρ‚Π΅ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ послСднСму x Π² x=x. Из состояний 1 ΠΈ 2 Ρ‚Π΅ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² состояния 1 ΠΈ 2. Из состояния 3 x ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒΡΡ с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ справа ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² состояниС 3.

На этом этапС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ символ x=x рассмотрСн, Π° Ρ€Π°Π· ΠΌΡ‹ достигли состояния 4, рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ соотвСтствуСт этой строкС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ символ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ зависит ΠΎΡ‚ Π΄Π»ΠΈΠ½Ρ‹ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки. И Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ бэктрСкинга.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ послС достиТСния состояния 4 (ΠΊΠΎΠ³Π΄Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сопоставил x=) всС рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сопоставлСно, ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ рассматривая x.

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com