+− THE DAILY DIFFdev & AI news
SHIP IT

یک regex، کلودفلر را از کار انداخت. ۲۷ دقیقه.

۲ ژوئیه ۲۰۱۹، ۱۳:۴۲ UTC: یک قانون جدید برای Web Application Firewall کلودفلر در بیش از ۱۸۰ شهر در حدود دو ثانیه فعال می‌شود.

۲ ژوئیه ۲۰۱۹، ۱۳:۴۲ UTC: یک قانون جدید برای Web Application Firewall کلودفلر در بیش از ۱۸۰ شهر در حدود دو ثانیه فعال می‌شود. این یک قانون XSS در حالت شبیه‌سازی است، بنابراین چیزی را مسدود نمی‌کند، اما همچنان روی هر درخواست اجرا می‌شود و به .*(?:.*=.*) ختم می‌شود. PCRE دچار بک‌ترک می‌شود، تمام هسته‌های CPU که درخواست‌های HTTP را سرویس‌دهی می‌کنند به ۱۰۰٪ می‌رسند، و هر سایت پراکسی‌شده کلودفلر به مدت ۲۷ دقیقه خطای ۵۰۲ را برمی‌گرداند؛ ترافیک ۸۲٪ کاهش می‌یابد. سوئیچ قطع اضطراری پشت Cloudflare Access قرار دارد، که آن نیز پشت Cloudflare است. پس از وقوع، از یادداشت خود کلودفلر: محافظ CPU که هفته‌ها قبل در یک بازنویسی با هدف صرفه‌جویی در CPU حذف شده بود، رویه‌ای که به هر قانونی اجازه می‌داد مرحله‌بندی را رد کند، موتور بدون تضمین پیچیدگی، ۱۱ علت و ۷ راه حل. حکم بر روی راه‌حل: SHIP IT.

نسخه نوشتاری را بخوانید (انگلیسی) ↗

این ویدیو چه مواردی را پوشش می‌دهد

  • ۱۳:۳۱–۱۳:۴۲ UTC: PR ادغام شد، CI سبز (بدون تست CPU)، Quicksilver قانون را به بیش از ۱۸۰ شهر ارسال می‌کند؛ قوانین WAF مراحل DOG → PIG → Canary را رد می‌کنند
  • ۱۳:۴۵–۱۴:۰۷: اولین صفحه؛ CPU در سراسر جهان ۱۰۰٪، ترافیک ۸۲٪-، ۵۰۲ در همه جا؛ پنل کنترل داخلی پشت Cloudflare Access است، که از کار افتاده است؛ برخی از اطلاعات کاربری منقضی شده‌اند؛ یک دور زدن نادر که کمتر آزمایش شده است
  • ۱۴:۰۷–۱۴:۰۹: توقف جهانی WAF؛ ترافیک و CPU پس از ۲۷ دقیقه عادی می‌شود؛ ۱۴:۵۲ WAF بدون آن قانون برمی‌گردد
  • ۲ ژوئیه (۱۵:۵۰ UTC) و ۱۲ ژوئیه: کلودفلر یادداشت همان روز و گزارش کامل پس از وقوع را منتشر می‌کند؛ محافظ CPU دوباره اضافه شد، ۳,۸۶۸ قانون دوباره بررسی شدند، استقرار مرحله‌ای، انتقال به یک موتور regex با زمان خطی

رونوشت ترجمه شده

ترجمه شده از روایت اصلی انگلیسی. صوت و زیرنویس‌های موجود توسط YouTube کنترل می‌شوند.

0:00 یک عبارت باقاعده به طور همزمان روی هر سرور کلودفلر فعال می‌شود، و برای بیست و هفت دقیقه بعدی سایت‌های پشت آن صفحه ۵۰۲ را نشان می‌دهند، که برای یک فایروال، سخت‌گیرانه‌ترین تنظیم ممکن است. ۲ ژوئیه ۲۰۱۹، ۱۳:۴۲ UTC. کلودفلر ظرف دو ساعت پست می‌کند: حمله نبوده، یک استقرار بد بوده است، ترافیک ۸۲ درصد کاهش یافته است. ده روز بعد CTO جان گراهام-کامینگ گزارش کامل پس از وقوع را منتشر می‌کند، regex هم در آن گنجانده شده است، و Hacker News به آن ۶۹۸ امتیاز می‌دهد،

0:26 که برای یک قطعی، به منزله تشویق ایستاده است. چگونه اتفاق می‌افتد، چرا ممکن است، و چه کسی واقعاً مقصر است. این The Daily Diff است، پس از وقوع. ۱۳:۳۱. یک درخواست پول مرج می‌شود: یک قانون فایروال جدید علیه کراس‌سایت اسکریپتینگ، در حالت شبیه‌سازی، بنابراین چیزی را مسدود نمی‌کند. ۱۳:۳۷، تست‌ها پاس می‌شوند؛ هیچکدام CPU را اندازه‌گیری نمی‌کنند. ۱۳:۴۲، قانون در دو ثانیه به ۱۸۰ شهر ارسال می‌شود، زیرا قوانین WAF مراحل سگ، خوک و قناری را که دیگر ریلیزها طی می‌کنند، رد می‌کنند.

0:54 ۱۳:۴۵، اولین صفحه. ۱۳:۴۹، Hacker News یک تاپیک در مورد صفحه وضعیت دارد، که هنوز می‌گوید همه سیستم‌ها عملیاتی هستند. قانون به دات-استار، دات-استار، مساوی، دات-استار ختم می‌شود: هر چیزی، سپس هر چیزی، سپس یک علامت مساوی. PCRE با حرص حدس می‌زند، شکست می‌خورد، و از هر تقسیم دیگر بازمی‌گردد. x مساوی x، ۲۳ گام طول می‌کشد. بیست x بعد از علامت مساوی: ۵۵۵.

1:15 بیست x، بدون علامت مساوی: ۴,۰۶۷ گام برای پیدا کردن هیچ چیز. این را روی هر درخواست و هر هسته اجرا کنید و هر هسته در صد درصد است، بدون انجام هیچ کاری، به طور کامل. دو نگهبان باید آن را گرفته بودند. محدودیت CPU بر روی قوانین هفته‌ها پیش به اشتباه حذف شد، در یک بازطراحی که قرار بود WAF کمتر از CPU استفاده کند. و این رویه به هر قانونی اجازه می‌دهد تا مرحله‌بندی را رد کند، زیرا قوانین برای متوقف کردن حملات زنده وجود دارند؛ این یکی اضطراری نبود، و به هر حال جهانی شد.

1:37 ۱۴:۰۰، WAF شناسایی می‌شود؛ حمله‌ای وجود ندارد. ۱۴:۰۲، کسی توقف جهانی را پیشنهاد می‌کند: یک مؤلفه، خاموش، در سراسر جهان. سوئیچ پشت Cloudflare Access است. Cloudflare Access پشت Cloudflare است. برخی از اطلاعات کاربری به دلیل عدم استفاده منقضی شده‌اند، بنابراین سریع‌ترین شبکه در اینترنت پنج دقیقه را صرف یک دور زدن می‌کند که هیچ کس آن را تمرین نکرده بود. ۱۴:۰۷، قطع. ۱۴:۰۹، ترافیک عادی. git blame: یک رول‌اوت با یک سرعت، جهانی؛ یک محافظ CPU که به اشتباه بازطراحی شد؛

2:04 یک موتور regex بدون حد بالا. مهندسی که قانون را نوشت نیست: گزارش پس از وقوع یازده علت را لیست می‌کند و از کسی نام نمی‌برد. شعاع آسیب: ۲۷ دقیقه، ۸۲ درصد ترافیک، ۱۰۰ درصد CPU در هر هسته، در هر شهر. داشبورد و API پشت همین لبه قرار دارند، بنابراین مشتریان حتی نمی‌توانند آن را خاموش کنند. Hacker News، زیر گزارش پس از وقوع: آنها یک مشکل داشتند، از یک عبارت باقاعده استفاده کردند، حالا دو مشکل دارند. جوک قدیمی. هنوز کامپایل می‌شود.

2:28 حکم، پس از وقوع: SHIP IT. محافظ CPU برگشته است، همه ۳,۸۶۸ قانون به صورت دستی خوانده می‌شوند، قوانین از مرحله‌بندی عبور می‌کنند، و موتور به موتوری با زمان خطی تضمین‌ها، که توسط کن تامپسون در سال ۱۹۶۸ منتشر شد، منتقل می‌شود. دوشنبه: هیچ دات-استار دات-استار در هر چیزی که به ازای هر درخواست اجرا می‌شود، و سوئیچ قطع اضطراری را از چیزی که می‌کشد دور نگه دارید. حادثه‌ای را که هنوز اجازه صحبت درباره آن را ندارید برای من بفرستید، در نظرات، یا در 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 · fa · ۳ مهر ۱۴۰۵

یک باگ یک میلی‌ثانیه‌ای ترافیک هوایی بریتانیا را شش ساعت متوقف کرد.

در ساعت ۱۰:۰۰ روز سه‌شنبه، ۸ سپتامبر، یک درخواست معمول کد اسکواک در سیستم ملی حریم هوایی NATS (NAS) توسط یک پیام با اولویت بالاتر، در حین به‌روزرسانی مقداری از آن، قطع می‌شود. پنجره تماس حدود یک میلی‌

3:06 ↗
postmortem · fa · ۳۱ شهریور ۱۴۰۵

یک راه‌اندازی مجدد تلسترا را به سال 2006 بازگرداند. نه میلیون تلفن.

یک مهندس در ملبورن یک شاسی زمان‌سنجی را ساعت 2:50 صبح دوباره روشن می‌کند، و تا زمان صبحانه بزرگترین شبکه تلفن همراه استرالیا با این موضوع موافقت می‌کند که نوامبر 2006 است. 8 ژوئیه 2026: یک کارت GPS در

3:15 ↗