# Regex ทำให้ Cloudflare ล่มเป็นเวลา 27 นาที

Published: 2026-09-12

2 กรกฎาคม 2019, 13:42 UTC: กฎใหม่หนึ่งข้อสำหรับ Web Application Firewall ของ Cloudflare ใช้งานจริงในกว่า 180 เมืองในเวลาประมาณสองวินาที เป็นกฎ XSS ในโหมดจำลอง ดังนั้นจึงไม่บล็อกอะไรเลย แต่ยังคงทำงานในทุกคำขอ และลงท้ายด้วย .\*(?:.\*=.\*) PCRE ทำการแบ็คแทร็ค, ทุกคอร์ CPU ที่ให้บริการ HTTP ทำงานถึง 100%, และทุกไซต์ที่ใช้ Cloudflare เป็นพรอกซีส่งคืนค่า 502 เป็นเวลา 27 นาที; การเข้าชมลดลง 82% สวิตช์ฉุกเฉินอยู่เบื้องหลัง Cloudflare Access ซึ่งอยู่เบื้องหลัง Cloudflare รายงานหลังเกิดเหตุ จากการเขียนของ Cloudflare เอง: ตัวป้องกัน CPU ที่ถูกถอดออกไปเมื่อหลายสัปดาห์ก่อนในการปรับโครงสร้างเพื่อประหยัด CPU, ขั้นตอนที่อนุญาตให้กฎใดๆ ข้ามการจัดเตรียม, เอนจิ้นที่ไม่มีการรับประกันความซับซ้อน, 11 สาเหตุและ 7 วิธีแก้ไข คำตัดสินเกี่ยวกับวิธีแก้ไข: SHIP IT

Canonical: https://thedailydiff.dev/th/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 ข้อถูกอ่านใหม่, การเปิดตัวแบบเป็นขั้นตอน, ย้ายไปใช้เอนจิ้น regex ที่ใช้เวลาเชิงเส้น

## บทถอดเสียงที่แปลแล้ว

แปลจากการบรรยายภาษาอังกฤษต้นฉบับ เสียงและคำบรรยายที่มีให้จะควบคุมโดย YouTube

0:00 หนึ่งนิพจน์ทั่วไปทำงานบนเซิร์ฟเวอร์ Cloudflare ทุกเครื่องพร้อมกัน และในอีกยี่สิบเจ็ดนาทีถัดไป เว็บไซต์ที่อยู่เบื้องหลังก็กลายเป็นหน้า 502 ซึ่งสำหรับไฟร์วอลล์แล้ว ถือเป็นการตั้งค่าที่เข้มงวดที่สุดเท่าที่จะเป็นไปได้ 2 กรกฎาคม 2019, 13:42 UTC Cloudflare โพสต์ภายในสองชั่วโมง: ไม่ใช่การโจมตี แต่เป็นการปรับใช้ที่ผิดพลาด การเข้าชมลดลง 82 เปอร์เซ็นต์ สิบวันต่อมา CTO John Graham-Cumming เผยแพร่รายงานหลังเกิดเหตุฉบับเต็ม รวมถึง regex และ Hacker News ให้คะแนน 698 คะแนน

0:26 ซึ่งสำหรับการหยุดทำงานถือเป็นการปรบมือยืน มันเกิดขึ้นได้อย่างไร ทำไมถึงเป็นไปได้ และใครคือผู้ที่ถูกตำหนิอย่างแท้จริง นี่คือ The Daily Diff, รายงานหลังเกิดเหตุ 13:31 การรวมคำขอดึง: กฎไฟร์วอลล์ใหม่หนึ่งข้อเพื่อป้องกันการโจมตีข้ามไซต์ การเขียนสคริปต์ ในโหมดจำลอง ดังนั้นจึงไม่บล็อกอะไรเลย 13:37 การทดสอบผ่าน ไม่มีมาตรการวัด CPU 13:42 กฎส่งไปยัง 180 เมืองในสองวินาที เพราะกฎ WAF ข้ามขั้นตอน dog, pig และ canary ที่การเปิดตัวอื่นๆ ได้รับ

0:54 13:45 หน้าแรก 13:49 Hacker News มีกระทู้เกี่ยวกับหน้าสถานะ ซึ่งยังคงระบุว่าระบบทั้งหมดทำงานปกติ กฎลงท้ายด้วย dot-star, dot-star, equals, dot-star: อะไรก็ได้ จากนั้นอะไรก็ได้ จากนั้นเครื่องหมายเท่ากับ 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 อยู่เบื้องหลัง Edge เดียวกัน ดังนั้นลูกค้าจึงไม่สามารถปิด มันได้ Hacker News ภายใต้รายงานหลังเกิดเหตุ: พวกเขามีปัญหาหนึ่งอย่าง ใช้ regular expression ตอนนี้พวกเขามีสองอย่าง มุกตลกเก่า ยังคงทำงานได้

2:28 คำตัดสิน รายงานหลังเกิดเหตุ: SHIP IT CPU guard กลับมาแล้ว กฎ 3,868 ข้อทั้งหมดถูกอ่านด้วยมือ กฎผ่านการจัดเตรียม และเอนจิ้นย้ายไปใช้เอนจิ้นที่มีการรับประกันเวลาเชิงเส้น เผยแพร่โดย Ken Thompson ในปี 1968 วันจันทร์: ไม่มี dot-star dot-star ในสิ่งใดก็ตามที่ทำงานต่อคำขอ และเก็บสวิตช์ฆ่าออกห่างจากสิ่งที่มันฆ่า ส่งเหตุการณ์ที่คุณยังไม่ได้รับอนุญาตให้พูดถึง ในความคิดเห็น หรือที่ the daily diff dot dev

2:53 และนั่นคือความแตกต่างสำหรับวันนี้ ผม Niko จาก Axrisi รวมอย่างรับผิดชอบ

## แหล่งที่มา

- [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
