• “Cloudflare พบช่องโหว่ในคอมไพเลอร์ Go บน arm64 — เมื่อการจัดการ stack กลายเป็นจุดอ่อนที่คาดไม่ถึง”

    Cloudflare ซึ่งใช้ภาษา Go ในระบบเครือข่ายขนาดใหญ่ ได้ค้นพบบั๊กที่ซ่อนอยู่ในคอมไพเลอร์ Go สำหรับสถาปัตยกรรม arm64 โดยบั๊กนี้ส่งผลให้เกิดการ crash แบบไม่คาดคิดในบริการควบคุมเครือข่าย เช่น Magic Transit และ Magic WAN ซึ่งแม้จะเป็นบริการที่ไม่ได้รับผลกระทบโดยตรงจากการหยุดทำงาน แต่ความถี่ของปัญหาทำให้ทีมวิศวกรต้องลงมือสืบค้นอย่างจริงจัง

    ปัญหาเริ่มต้นจากการพบ panic ที่ไม่สามารถ unwind stack ได้อย่างสมบูรณ์ ซึ่งบ่งชี้ถึงการเสียหายของ stack memory โดยเฉพาะใน goroutine ที่ใช้ panic/recover เป็นกลไกจัดการข้อผิดพลาด ทีมงานพบว่าการ recover panic จะเรียก deferred function และกระบวนการนี้เกี่ยวข้องกับการเดิน stack ซึ่งเป็นจุดที่เกิด crash

    หลังจากตรวจสอบอย่างละเอียด ทีมงานพบว่าบั๊กนี้เกี่ยวข้องกับการจัดการ immediate operand ในคำสั่งของ arm64 ซึ่งมีข้อจำกัดด้านความยาว เช่น add รองรับ immediate 12 บิต และ mov รองรับ 16 บิต หาก operand เกินขนาด คอมไพเลอร์ต้องใช้เทคนิคพิเศษในการจัดการ ซึ่งอาจนำไปสู่การสร้างโค้ดที่ไม่ปลอดภัย

    บั๊กนี้มีลักษณะเป็น race condition ที่เกิดขึ้นเฉพาะในบางสถานการณ์ เช่น เมื่อ stack ถูกใช้งานพร้อมกันหลาย thread หรือมีการ recover panic หลายครั้งในเวลาใกล้เคียงกัน โดย Cloudflare พบว่ามีทั้งการ crash จากการเข้าถึง memory ผิดพลาด และการตรวจพบข้อผิดพลาดแบบ fatal ที่ถูกบันทึกไว้

    แม้จะยังไม่มีคำอธิบายที่ชัดเจน 100% แต่การค้นพบนี้นำไปสู่การรายงานบั๊กใน Go (#73259) และการปรับปรุงคอมไพเลอร์ในเวอร์ชันถัดไป เพื่อป้องกันการเกิดปัญหาซ้ำในระบบที่ใช้ arm64

    ข้อมูลสำคัญจากข่าว
    Cloudflare พบบั๊กในคอมไพเลอร์ Go สำหรับ arm64 ที่ทำให้เกิด stack crash
    บั๊กเกิดจากการ unwind stack ไม่สมบูรณ์ระหว่างการ recover panic
    เกี่ยวข้องกับ immediate operand ที่เกินขนาดในคำสั่งของ arm64
    พบทั้งการ crash จาก memory access ผิดพลาด และ fatal error ที่ตรวจพบ
    บั๊กมีลักษณะเป็น race condition ที่เกิดในบางสถานการณ์เท่านั้น
    บริการที่ได้รับผลกระทบคือ Magic Transit และ Magic WAN
    บั๊กถูกรายงานใน Go issue #73259 เพื่อการแก้ไขในอนาคต
    คอมไพเลอร์ Go ต้องปรับเทคนิคการจัดการ operand เพื่อความปลอดภัย

    ข้อมูลเสริมจากภายนอก
    arm64 เป็นสถาปัตยกรรมที่ใช้ในเซิร์ฟเวอร์และอุปกรณ์พกพา เช่น Apple Silicon และ AWS Graviton
    immediate operand คือค่าคงที่ที่ฝังอยู่ในคำสั่งของ CPU โดยมีข้อจำกัดด้านขนาด
    panic/recover เป็นกลไกจัดการข้อผิดพลาดใน Go ที่ใช้ deferred function
    race condition คือสถานการณ์ที่ผลลัพธ์ขึ้นอยู่กับลำดับเวลาของการทำงานหลาย thread
    การ unwind stack คือกระบวนการย้อนกลับการเรียกฟังก์ชันเพื่อจัดการข้อผิดพลาด

    https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/
    🧩 “Cloudflare พบช่องโหว่ในคอมไพเลอร์ Go บน arm64 — เมื่อการจัดการ stack กลายเป็นจุดอ่อนที่คาดไม่ถึง” Cloudflare ซึ่งใช้ภาษา Go ในระบบเครือข่ายขนาดใหญ่ ได้ค้นพบบั๊กที่ซ่อนอยู่ในคอมไพเลอร์ Go สำหรับสถาปัตยกรรม arm64 โดยบั๊กนี้ส่งผลให้เกิดการ crash แบบไม่คาดคิดในบริการควบคุมเครือข่าย เช่น Magic Transit และ Magic WAN ซึ่งแม้จะเป็นบริการที่ไม่ได้รับผลกระทบโดยตรงจากการหยุดทำงาน แต่ความถี่ของปัญหาทำให้ทีมวิศวกรต้องลงมือสืบค้นอย่างจริงจัง ปัญหาเริ่มต้นจากการพบ panic ที่ไม่สามารถ unwind stack ได้อย่างสมบูรณ์ ซึ่งบ่งชี้ถึงการเสียหายของ stack memory โดยเฉพาะใน goroutine ที่ใช้ panic/recover เป็นกลไกจัดการข้อผิดพลาด ทีมงานพบว่าการ recover panic จะเรียก deferred function และกระบวนการนี้เกี่ยวข้องกับการเดิน stack ซึ่งเป็นจุดที่เกิด crash หลังจากตรวจสอบอย่างละเอียด ทีมงานพบว่าบั๊กนี้เกี่ยวข้องกับการจัดการ immediate operand ในคำสั่งของ arm64 ซึ่งมีข้อจำกัดด้านความยาว เช่น add รองรับ immediate 12 บิต และ mov รองรับ 16 บิต หาก operand เกินขนาด คอมไพเลอร์ต้องใช้เทคนิคพิเศษในการจัดการ ซึ่งอาจนำไปสู่การสร้างโค้ดที่ไม่ปลอดภัย บั๊กนี้มีลักษณะเป็น race condition ที่เกิดขึ้นเฉพาะในบางสถานการณ์ เช่น เมื่อ stack ถูกใช้งานพร้อมกันหลาย thread หรือมีการ recover panic หลายครั้งในเวลาใกล้เคียงกัน โดย Cloudflare พบว่ามีทั้งการ crash จากการเข้าถึง memory ผิดพลาด และการตรวจพบข้อผิดพลาดแบบ fatal ที่ถูกบันทึกไว้ แม้จะยังไม่มีคำอธิบายที่ชัดเจน 100% แต่การค้นพบนี้นำไปสู่การรายงานบั๊กใน Go (#73259) และการปรับปรุงคอมไพเลอร์ในเวอร์ชันถัดไป เพื่อป้องกันการเกิดปัญหาซ้ำในระบบที่ใช้ arm64 ✅ ข้อมูลสำคัญจากข่าว ➡️ Cloudflare พบบั๊กในคอมไพเลอร์ Go สำหรับ arm64 ที่ทำให้เกิด stack crash ➡️ บั๊กเกิดจากการ unwind stack ไม่สมบูรณ์ระหว่างการ recover panic ➡️ เกี่ยวข้องกับ immediate operand ที่เกินขนาดในคำสั่งของ arm64 ➡️ พบทั้งการ crash จาก memory access ผิดพลาด และ fatal error ที่ตรวจพบ ➡️ บั๊กมีลักษณะเป็น race condition ที่เกิดในบางสถานการณ์เท่านั้น ➡️ บริการที่ได้รับผลกระทบคือ Magic Transit และ Magic WAN ➡️ บั๊กถูกรายงานใน Go issue #73259 เพื่อการแก้ไขในอนาคต ➡️ คอมไพเลอร์ Go ต้องปรับเทคนิคการจัดการ operand เพื่อความปลอดภัย ✅ ข้อมูลเสริมจากภายนอก ➡️ arm64 เป็นสถาปัตยกรรมที่ใช้ในเซิร์ฟเวอร์และอุปกรณ์พกพา เช่น Apple Silicon และ AWS Graviton ➡️ immediate operand คือค่าคงที่ที่ฝังอยู่ในคำสั่งของ CPU โดยมีข้อจำกัดด้านขนาด ➡️ panic/recover เป็นกลไกจัดการข้อผิดพลาดใน Go ที่ใช้ deferred function ➡️ race condition คือสถานการณ์ที่ผลลัพธ์ขึ้นอยู่กับลำดับเวลาของการทำงานหลาย thread ➡️ การ unwind stack คือกระบวนการย้อนกลับการเรียกฟังก์ชันเพื่อจัดการข้อผิดพลาด https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/
    BLOG.CLOUDFLARE.COM
    How we found a bug in Go's arm64 compiler
    84 million requests a second means even rare bugs appear often. We'll reveal how we discovered a race condition in the Go arm64 compiler and got it fixed.
    0 Comments 0 Shares 45 Views 0 Reviews
  • อิสราเอลพร้อมจ่ายเงิน ๕ ล้านดอลลาร์สหรัฐฯ ให้แก่ตัวประกันทุกคนที่ได้รับอิสรภาพจากกลุ่มฮามาส, นายกรัฐมนตรี เบนจามิน เนทันยาฮู กล่าวขณะเยี่ยมชมฉนวนกาซา:
    .
    Israel is ready to pay $5 million for every hostage that is freed from the hands of Hamas, Prime Minister Benjamin Netanyahu said while touring the Gaza Strip:
    https://tass.com/world/1874887
    .
    3:15 AM · Nov 20, 2024 · 1,899 Views
    https://x.com/tassagency_en/status/1858967325925679183
    อิสราเอลพร้อมจ่ายเงิน ๕ ล้านดอลลาร์สหรัฐฯ ให้แก่ตัวประกันทุกคนที่ได้รับอิสรภาพจากกลุ่มฮามาส, นายกรัฐมนตรี เบนจามิน เนทันยาฮู กล่าวขณะเยี่ยมชมฉนวนกาซา: . Israel is ready to pay $5 million for every hostage that is freed from the hands of Hamas, Prime Minister Benjamin Netanyahu said while touring the Gaza Strip: https://tass.com/world/1874887 . 3:15 AM · Nov 20, 2024 · 1,899 Views https://x.com/tassagency_en/status/1858967325925679183
    Haha
    1
    0 Comments 0 Shares 483 Views 0 Reviews