# ביטוי רגולרי הפיל את Cloudflare. למשך 27 דקות.

Published: 2026-09-12

2 ביולי 2019, 13:42 UTC: כלל חדש אחד עבור ה-Web Application Firewall של Cloudflare עולה לאוויר ביותר מ-180 ערים תוך כשתי שניות. זהו כלל XSS במצב סימולציה, כך שהוא לא חוסם דבר, אך הוא עדיין פועל על כל בקשה, והוא מסתיים ב-.\*(?:.\*=.\*). PCRE מבצע חזרה לאחור (backtracking), כל ליבת CPU המשרתת בקשות HTTP מגיעה ל-100%, וכל אתר מתווך על ידי Cloudflare מחזיר 502 למשך 27 דקות; התעבורה יורדת ב-82%. מתג ההריגה יושב מאחורי Cloudflare Access, שיושב מאחורי Cloudflare. לאחר מות, מתוך הדו"ח של Cloudflare עצמה: מגן ה-CPU שהוסר שבועות קודם לכן בשינוי מבנה שנועד לחסוך ב-CPU, הפרוצדורה שאפשרה לכל כלל לדלג על שלב ה-staging, המנוע ללא ערובת מורכבות, 11 הגורמים ו-7 התיקונים. פסק דין על התיקון: SHIP IT.

Canonical: https://thedailydiff.dev/he/video/2026-09-12-cloudflare-regex/

## מה מכסה הסרטון הזה

- 13:31–13:42 UTC: בקשת משיכה (PR) מוזגה, CI ירוק (אין בדיקת CPU), Quicksilver דוחף את הכלל ליותר מ-180 ערים; כללי WAF מדלגים על שלבי DOG → PIG → Canary
- 13:45–14:07: דף ראשון; CPU 100% ברחבי העולם, תעבורה −82%, 502s בכל מקום; לוח הבקרה הפנימי נמצא מאחורי Cloudflare Access, שמושבת; חלק מהאישורים פגו; עקיפה שמעולם לא תורגלה כמעט
- 14:07–14:09: הפסקת WAF גלובלית; תעבורה ו-CPU רגילים לאחר 27 דקות; 14:52 WAF חוזר ללא הכלל
- 2 ביולי (15:50 UTC) ו-12 ביולי: Cloudflare מפרסמת את ההודעה מהיום ואת הדו"ח המלא לאחר מות; מגן CPU מתווסף מחדש, 3,868 כללים נקראים מחדש, פריסות מדורגות, מעבר למנוע ביטויים רגולריים בזמן ליניארי

## תמליל מתורגם

תורגם מהקריינות המקורית באנגלית. זמינות אודיו וכתוביות נשלטת על ידי 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, בדיקות עוברות; אף אחת לא מודדת CPU. 13:42, הכלל נשלח ל-180 ערים תוך שתי שניות, מכיוון שכללי WAF מדלגים על שלבי הכלב, החזיר והקנרית שמהדורות אחרות מקבלות.

0:54 13:45, הדף הראשון. 13:49, ב-Hacker News יש שרשור על דף הסטטוס, שעדיין אומר שכל המערכות פועלות. הכלל מסתיים בנקודה-כוכבית, נקודה-כוכבית, שווה, נקודה-כוכבית: כל דבר, ואז כל דבר, ואז סימן שווה. PCRE מנחש בחמדנות, נכשל, ומבצע חזרה לאחור דרך כל פיצול אחר. x שווה x לוקח 23 צעדים. עשרים איקסים אחרי השווה: 555.

1:15 עשרים איקסים, ללא סימן שווה: 4,067 צעדים כדי לא למצוא דבר. הפעל זאת על כל בקשה וכל ליבה תהיה במאה אחוז, לא עושה כלום, ביסודיות. שני שומרים היו צריכים לתפוס את זה. מגבלת ה-CPU על כללים הוסרה בטעות שבועות קודם לכן, בשינוי מבנה שנועד לגרום ל-WAF להשתמש בפחות CPU. והפרוצדורה מאפשרת לכל כלל לדלג על שלב ה-staging, מכיוון שכללים קיימים כדי לעצור התקפות חיות; זה לא היה מצב חירום, וזה בכל זאת עבר גלובלית.

1:37 14:00, ה-WAF מזוהה; אין התקפה. 14:02, מישהו מציע את ההפסקה הגלובלית: רכיב אחד, כבוי, ברחבי העולם. המתג נמצא מאחורי Cloudflare Access. Cloudflare Access נמצא מאחורי Cloudflare. חלק מהאישורים פגו מחוסר שימוש, אז הרשת המהירה ביותר ב- אינטרנט מבלה חמש דקות על עקיפה שאף אחד לא תרגל. 14:07, הריגה. 14:09, תעבורה רגילה. git blame: פריסה במהירות אחת, גלובלית; מגן CPU שבוצע עליו שינוי מבנה והוסר ב-

2:04 טעות; מנוע ביטויים רגולריים ללא גבול עליון. לא המהנדס שכתב את הכלל: הדו"ח לאחר מות מפרט אחד עשר גורמים ו- לא מזכיר אף אחד בשם. רדיוס פיצוץ: 27 דקות, 82 אחוז מהתעבורה, 100 אחוז CPU על כל ליבה, בכל עיר. לוח המחוונים וה-API יושבים מאחורי אותו קצה, כך שלקוחות אפילו לא יכולים לכבות את זה. Hacker News, תחת הדו"ח לאחר מות: הייתה להם בעיה אחת, השתמשו בביטוי רגולרי, עכשיו יש להם שתיים. בדיחה ישנה. עדיין מתקמפלת.

2:28 פסק דין, דו"ח לאחר מות: SHIP IT. מגן ה-CPU חזר, כל 3,868 הכללים נקראים ביד, כללים עוברים דרך שלב ה-staging, והמנוע עובר לאחד עם ערבויות זמן ליניארי, שפורסמו על ידי קן תומפסון ב-1968. יום שני: אין נקודה-כוכבית נקודה-כוכבית בשום דבר שרץ לכל בקשה, ושמור את מתג ההריגה מחוץ לדבר שהוא הורג. שלח לי את האירוע שעדיין אסור לך לדבר עליו, בתגובות, או ב-the daily diff dot dev.

2:53 וזה הדיף להיום. אני ניקו מ-Axrisi. Merge responsibly.

## מקורות

- [John Graham-Cumming, "Details of the Cloudflare outage on July 2, 2019" (Jul 12, 2019)](https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/) — blog.cloudflare.com
- [Matthew Prince, "Cloudflare outage caused by bad software deploy (updated)" (Jul 2, 2019)](https://blog.cloudflare.com/cloudflare-outage/) — blog.cloudflare.com
- [Matthew Prince on X, Jul 2, 2019, 14:22 UTC](https://x.com/eastdakota/status/1146061591143538688) — x.com
- [Matthew Prince on X, Jul 2, 2019, 14:36 UTC ("No evidence yet attack related")](https://x.com/eastdakota/status/1146065231270907907) — x.com
- [Hacker News, Jul 2, 2019, 13:49 UTC — "Cloudflare Network Performance Issues" (631 points)](https://news.ycombinator.com/item?id=20334924) — news.ycombinator.com
- [Hacker News, Jul 2, 2019 — "Cloudflare outage caused by bad software deploy" (348 points)](https://news.ycombinator.com/item?id=20336332) — news.ycombinator.com
- [Hacker News, Jul 12, 2019 — "Details of the Cloudflare outage on July 2, 2019" (698 points)](https://news.ycombinator.com/item?id=20421538) — news.ycombinator.com
- [TechCrunch, Jul 2, 2019](https://techcrunch.com/2019/07/02/a-cloudflare-outage-is-impacting-sites-everywhere/) — techcrunch.com
