Regex ໄດ້ເຮັດໃຫ້ Cloudflare ລົ້ມ. 27 ນາທີ.
ວັນທີ 2 ກໍລະກົດ 2019, ເວລາ 13:42 UTC: ກົດລະບຽບໃໝ່ໜຶ່ງຂໍ້ສຳລັບ Web Application Firewall ຂອງ Cloudflare ເລີ່ມໃຊ້ງານໃນຫຼາຍກວ່າ 180 ເມືອງໃນເວລາປະມານສອງວິນາທີ.
ວັນທີ 2 ກໍລະກົດ 2019, ເວລາ 13:42 UTC: ກົດລະບຽບໃໝ່ໜຶ່ງຂໍ້ສຳລັບ Web Application Firewall ຂອງ Cloudflare ເລີ່ມໃຊ້ງານໃນຫຼາຍກວ່າ 180 ເມືອງໃນເວລາປະມານສອງວິນາທີ. ມັນເປັນກົດລະບຽບ XSS ໃນໂໝດຈຳລອງ, ດັ່ງນັ້ນມັນບໍ່ໄດ້ບລັອກຫຍັງ, ແຕ່ມັນຍັງຄົງເຮັດວຽກໃນທຸກຄຳຮ້ອງຂໍ, ແລະມັນຈົບລົງດ້ວຍ .*(?:.*=.*). PCRE ຖອຍຫຼັງ, ທຸກ CPU core ທີ່ໃຫ້ບໍລິການ HTTP ຕີ 100%, ແລະທຸກເວັບໄຊທີ່ເປັນໂປຣແກຣມ Cloudflare ສົ່ງຄືນ 502 ເປັນເວລາ 27 ນາທີ; ການຈະລາຈອນຫຼຸດລົງ 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%, 502s ທົ່ວໄປ; ແຜງຄວບຄຸມພາຍໃນຢູ່ເບື້ອງຫຼັງ Cloudflare Access, ເຊິ່ງລົ້ມ; ຂໍ້ມູນປະຈໍາຕົວບາງອັນໝົດອາຍຸ; ການຂ້າມຜ່ານທີ່ບໍ່ຄ່ອຍໄດ້ຝຶກ
- 14:07–14:09: ການຢຸດ WAF ທົ່ວໂລກ; ການຈະລາຈອນ ແລະ CPU ກັບມາເປັນປົກກະຕິຫຼັງຈາກ 27 ນາທີ; 14:52 WAF ກັບມາໂດຍບໍ່ມີກົດລະບຽບ
- ວັນທີ 2 ກໍລະກົດ (15:50 UTC) ແລະ 12 ກໍລະກົດ: Cloudflare ເຜີຍແຜ່ບັນທຶກວັນດຽວກັນ ແລະ ບົດລາຍງານຫຼັງເກີດເຫດເຕັມຮູບແບບ; ການປ້ອງກັນ CPU ຖືກເພີ່ມຄືນ, 3,868 ກົດລະບຽບຖືກອ່ານຄືນ, ການເປີດຕົວແບບມີຂັ້ນຕອນ, ຍ້າຍໄປໃຊ້ເຄື່ອງຈັກ regex ແບບ linear-time
ບົດບັນທຶກທີ່ແປແລ້ວ
ແປຈາກຄຳບັນຍາຍຕົ້ນສະບັບພາສາອັງກິດ. ສຽງ ແລະ ຄຳບັນຍາຍທີ່ມີໃຫ້ແມ່ນຄວບຄຸມໂດຍ YouTube.
0:00 ນິພົດປົກກະຕິໜຶ່ງອັນຖືກນຳໃຊ້ໃນທຸກໆເຊີບເວີ Cloudflare ພ້ອມກັນ, ແລະເປັນເວລາຊາວເຈັດນາທີຕໍ່ມາ ເວັບໄຊຕ່າງໆທີ່ຢູ່ເບື້ອງຫຼັງມັນແມ່ນໜ້າ 502, ເຊິ່ງສຳລັບ Firewall, ແມ່ນການຕັ້ງຄ່າທີ່ເຂັ້ມງວດທີ່ສຸດເທົ່າທີ່ເປັນໄປໄດ້. ວັນທີ 2 ກໍລະກົດ 2019, 13:42 UTC. Cloudflare ປະກາດພາຍໃນສອງຊົ່ວໂມງ: ບໍ່ແມ່ນການໂຈມຕີ, ເປັນການຕິດຕັ້ງທີ່ບໍ່ດີ, ການຈະລາຈອນຫຼຸດລົງ 82 ເປີເຊັນ. ສິບມື້ຕໍ່ມາ CTO John Graham-Cumming ໄດ້ເຜີຍແຜ່ບົດລາຍງານຫຼັງເກີດເຫດເຕັມຮູບແບບ, ລວມທັງ regex, ແລະ Hacker News ໃຫ້ຄະແນນ 698 ຄະແນນ,
0:26 ເຊິ່ງສຳລັບການຢຸດເຮັດວຽກແມ່ນການລຸກຢືນຂຶ້ນຕົບມື. ມັນເກີດຂຶ້ນແນວໃດ, ເປັນຫຍັງມັນຈຶ່ງເປັນໄປໄດ້, ແລະໃຜທີ່ຖືກຕໍານິ. ນີ້ແມ່ນ The Daily Diff, ບົດລາຍງານຫຼັງເກີດເຫດ. 13:31. ການຮ້ອງຂໍດຶງຖືກລວມເຂົ້າກັນ: ກົດລະບຽບ Firewall ໃໝ່ໜຶ່ງຂໍ້ຕໍ່ການຂຽນສະຄຣິບຂ້າມເວັບໄຊ ໃນໂໝດຈຳລອງ, ສະນັ້ນມັນບໍ່ໄດ້ບລັອກຫຍັງ. 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 ຂັ້ນຕອນເພື່ອຊອກຫາບໍ່ມີຫຍັງ. ດໍາເນີນການນັ້ນໃນທຸກຄໍາຮ້ອງຂໍ ແລະທຸກ core ແມ່ນຢູ່ທີ່ໜຶ່ງຮ້ອຍເປີເຊັນ, ບໍ່ໄດ້ເຮັດຫຍັງ, ຢ່າງລະອຽດ. ຜູ້ຮັກສາສອງຄົນຄວນຈະຈັບມັນໄດ້. ຂີດຈໍາກັດ 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 ໃນທຸກ core, ໃນທຸກເມືອງ. ແຜງຄວບຄຸມ ແລະ API ຢູ່ເບື້ອງຫຼັງ edge ດຽວກັນ, ດັ່ງນັ້ນລູກຄ້າບໍ່ສາມາດປິດມັນໄດ້, Hacker News, ພາຍໃຕ້ບົດລາຍງານຫຼັງເກີດເຫດ: ພວກເຂົາມີບັນຫາໜຶ່ງ, ໃຊ້ regular expression, ຕອນນີ້ພວກເຂົາມີສອງ. ເລື່ອງຕະຫລົກເກົ່າ. ຍັງຄົງລວບລວມ.
2:28 ຜົນການຕັດສິນ, ຫຼັງເກີດເຫດ: SHIP IT. ການປ້ອງກັນ CPU ກັບມາແລ້ວ, ກົດລະບຽບທັງໝົດ 3,868 ຖືກອ່ານດ້ວຍມື, ກົດລະບຽບຜ່ານການຈັດວາງ, ແລະເຄື່ອງຈັກຍ້າຍໄປຫາອັນທີ່ມີ linear-time ການຮັບປະກັນ, ຈັດພິມໂດຍ Ken Thompson ໃນປີ 1968. ວັນຈັນ: ບໍ່ມີ dot-star dot-star ໃນສິ່ງທີ່ດໍາເນີນການຕໍ່ຄໍາຮ້ອງຂໍ, ແລະຮັກສາສະວິດປິດການໃຊ້ງານອອກຈາກສິ່ງທີ່ມັນປິດ. ສົ່ງເຫດການທີ່ທ່ານຍັງບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ເວົ້າເຖິງມາໃຫ້ຂ້ອຍ, ໃນຄໍາເຫັນ, ຫຼືທີ່ the daily diff dot dev.
2:53 ແລະນັ້ນຄື diff ສໍາລັບມື້ນີ້. ຂ້ອຍ Niko ຈາກ 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



