สรุปสั้น

Mozilla และ Chrome Root Program ของ Google ยืนยันเมื่อวันที่ 20 ตุลาคม 2569 ว่ากุญแจส่วนตัว (private key) ของใบรับรอง CA ตัวกลาง (intermediate CA) 8 ใบของบริษัท eMudhra ผู้ให้บริการใบรับรองดิจิทัลสัญชาติอินเดียที่ขายใบรับรองภายใต้แบรนด์ emSign ถูกเปิดเผยออกไป CA ตัวกลางคือผู้ลงนามใบรับรองที่เว็บไซต์ใช้แสดงต่อเบราว์เซอร์ ใครก็ตามที่ถือกุญแจเหล่านี้จึงออกใบรับรอง TLS ให้เว็บไซต์ใดก็ได้ที่เบราว์เซอร์จะยอมรับ เปิดทางให้ดักฟังหรือปลอมตัวเป็นเว็บไซต์จริงแบบ man-in-the-middle ได้ นักวิจัยที่ใช้ชื่อว่า Wayne แจ้งเรื่องต่อ root program ต่าง ๆ เมื่อค่ำวันที่ 17 ตุลาคม โดยลงนามข้อความ “We have a problem here - Wayne” ด้วยกุญแจทั้ง 8 ดอกเป็นหลักฐาน และ Chrome กับ Firefox บล็อกใบรับรองทั้งหมดได้ภายในไม่กี่ชั่วโมง

ข่าวดีคือก่อน Chrome บล็อก ไม่มีใบรับรอง TLS ใดที่ต่อสายมาจาก CA ตัวกลางทั้ง 6 ใบสำหรับเว็บไซต์ถูกบันทึกลง Certificate Transparency (CT) เลย จึงไม่มีใบใดที่ Chrome หรือเบราว์เซอร์ที่บังคับ CT จะเชื่อถือโดยค่าเริ่มต้น แต่ยังไม่มีใครรู้ว่ากุญแจหลุดออกจาก eMudhra ได้อย่างไร เมื่อไหร่ และมีใครนอกจากนักวิจัยถือกุญแจอยู่อีกหรือไม่ ปัญหาใหญ่อยู่ที่ซอฟต์แวร์นอกเบราว์เซอร์ เช่น โปรแกรมที่เขียนด้วย Go หรือใช้ชุดราก certifi ของ Python ซึ่งไม่ตรวจการเพิกถอนใบรับรอง จะเชื่อถือต่อไปจนกว่าจะอัปเดตโค้ดหรือชุดราก Go จึงออกแพตช์ฉุกเฉิน CVE-2026-111943 ส่วน Firefox ออก CVE-2026-113470 และ Mozilla ถอดราก emSign ECC Root CA - G3 ออกจาก NSS แล้ว

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 20 ตุลาคม 2569 ว่า Chrome Root Program ได้รับรายงานเวลา 18:05 UTC ของวันที่ 17 ตุลาคม และหลังยืนยันข้อมูลแล้วก็ผลักอัปเดต CRLSet บล็อก CA ตัวกลางสำหรับ TLS ทั้ง 6 ใบได้ภายในเวลา 19:45 UTC ส่วน Mozilla ได้รับรายงานเวลา 20:06 UTC และผลักรายการบล็อก OneCRL ไปยัง Firefox ที่ตั้งค่ามาตรฐานเสร็จเวลา 22:59 UTC ทั้ง CRLSet และ OneCRL เป็นรายการเพิกถอนที่เบราว์เซอร์ดึงเองเป็นระยะ ผู้ใช้จึงไม่ต้องอัปเดตหรือรีสตาร์ตเบราว์เซอร์

การบล็อกของ Chrome จับคู่ที่กุญแจสาธารณะ (public key) ไม่ใช่ตัวใบรับรอง จึงครอบคลุมสำเนาที่ Sectigo ลงนามไขว้ (cross-sign) ไว้ด้วย และเป็นกลไกเดียวกับที่ Chrome ใช้ต้นเดือนนี้กับใบรับรองปลอมของโดเมน Google (ดูโพสต์ 046) ด้าน eMudhra เพิกถอนใบรับรองทั้ง 8 ใบแล้ว Apple บล็อกเมื่อ 19 ตุลาคม และ Microsoft บล็อกเมื่อ 20 ตุลาคม ตามข้อมูลจากเว็บไซต์ที่นาย Dennis Jackson วิศวกรด้านวิทยาการเข้ารหัสลับของ Mozilla เผยแพร่ลายเซ็นและรายการใบรับรอง

กุญแจชุดนี้คือชุดเดียวกับที่ Go บล็อกในรุ่นความปลอดภัยวันที่ 20 ตุลาคมโดยไม่เอ่ยชื่อ CA ค่าแฮช 8 ค่าในโค้ดของ Go ตรงกับใบรับรองทั้ง 8 ใบ และ Go จัดการแพตช์นี้ผ่านช่องทาง URGENT ซึ่งนโยบายสงวนไว้สำหรับภัยต่อความสมบูรณ์ของระบบนิเวศหรือช่องโหว่ที่ถูกใช้โจมตีจริง แต่ทั้ง issue และ release notes ไม่ระบุว่าเข้าเงื่อนไขข้อใด Mozilla ประเมินว่าตอนนี้ปัญหาไม่ลามไปถึง CA อื่น และ Chrome ระบุว่าได้ตรวจใบรับรอง CA ทุกใบใน store แล้ว “ไม่พบกรณีความล้มเหลวลักษณะนี้อีก”

รายละเอียดช่องโหว่

ใบรับรอง CA ตัวกลางที่กุญแจหลุดทั้ง 8 ใบ ออกโดย eMudhra BV (เนเธอร์แลนด์) และ eMudhra Inc (สหรัฐฯ):

ประเภทใบรับรอง
TLS แบบ Domain ValidatedEM DV TLS CA - G3B · EM DV TLS CA - G3C
TLS แบบ Organization ValidatedEM OV TLS CA - G3B · EM OV TLS CA - G3C
TLS แบบ Extended ValidationEM EV TLS CA - G3B · EM EV TLS CA - G3C
Code signingEM OV CS CA - G3B · EM OV CS CA - G3C

ใบรับรอง TLS ทั้ง 6 ใบออกโดย emSign Root TLS CA - G3 ซึ่งต่อสายไปยัง emSign ECC Root CA - G3 รากที่อยู่ใน store ของ Chrome และ Apple และอยู่ใน store ของ Mozilla จนถึงวันที่ 20 ตุลาคม นอกจากนี้ ใบรับรองแต่ละใบยังมีอีกสำเนาที่ใช้กุญแจสาธารณะเดียวกัน แต่ Sectigo ลงนามไขว้ภายใต้ราก AAA Certificate Services สำเนาเหล่านี้ไม่ได้เพิ่มความเสี่ยงใน Chrome หรือ Firefox เพราะทั้งคู่เลิกเชื่อถือราก AAA Certificate Services สำหรับเว็บไซต์ตั้งแต่เมษายน 2568 แต่รายการรากของ Apple สำหรับ iOS 26 และ macOS 26 ที่เผยแพร่ธันวาคม 2568 ยังมีรากนี้อยู่

สำหรับใบรับรอง code signing 2 ใบ Chrome ไม่จำเป็นต้องบล็อก เพราะตัวตรวจสอบ TLS ของ Chrome จะไม่สร้างเส้นทางผ่าน CA ตัวกลางที่จำกัดไว้ใช้ลงนามโค้ดเท่านั้น แต่ความเสี่ยงต่อการลงนามซอฟต์แวร์ปลอมยังไม่มีแหล่งใดประเมินไว้

จุดอ่อนสำคัญอยู่นอกเบราว์เซอร์ โปรแกรมจำนวนมากที่ตรวจใบรับรอง TLS ตั้งแต่ไบนารีที่เขียนด้วย Go ไปจนถึงทุกอย่างที่ใช้ชุดราก certifi ของ Python ไม่ตรวจข้อมูลการเพิกถอน และจะเชื่อถือสายใบรับรองนั้นต่อไปจนกว่าโค้ดหรือชุดรากจะเปลี่ยน นาย Filippo Valsorda ผู้ดูแลแพ็กเกจวิทยาการเข้ารหัสลับในไลบรารีมาตรฐานของ Go ชี้ว่า root store บน Linux ดูแลได้แย่เกินกว่าที่การเพิกถอนจะไปถึงแอปพลิเคชัน การฝังกุญแจลงในโค้ดจึงเป็นทางเลือกเดียวในตอนนี้ ตัวกรองของ Go ทำงานทุกครั้งที่โปรแกรมตรวจสายใบรับรอง ไม่มีค่าตั้งให้ปิด และจากโครงสร้างโค้ดยังมีผลแม้โปรแกรมจะกำหนดชุดรากที่เชื่อถือเอง ระบบภายในที่ตั้งใจเชื่อถือกุญแจเหล่านี้จึงเชื่อมต่อไม่ได้ด้วย โดยจะได้ข้อผิดพลาด x509: no valid chains built ซึ่งทีม Go ยังไม่ชี้แจงว่าเป็นพฤติกรรมที่ตั้งใจหรือไม่ ขณะที่ไม่มีแหล่งใดมีวิธีตรวจย้อนหลังว่ากุญแจเคยถูกใช้ในทางที่ผิดหรือไม่ นอกจากการค้นใน CT ของ Chrome ซึ่งครอบคลุมเฉพาะใบรับรองที่ถูกบันทึกเท่านั้น

ผลกระทบ

ผู้ใช้เบราว์เซอร์ Chrome และ Firefox ที่ตั้งค่ามาตรฐานได้รับการปกป้องแล้วโดยไม่ต้องทำอะไร แต่ความเสี่ยงยังค้างอยู่ในเซิร์ฟเวอร์ คอนเทนเนอร์ และเครื่องมือ CI/CD ที่ใช้ชุดรากของตัวเอง เช่น บริการที่เขียนด้วย Go ที่ยังไม่ rebuild แอป Python ที่ตรึงเวอร์ชัน certifi เก่า หรือ Node.js ซึ่งยังไม่มีแพตช์ หากกุญแจตกไปอยู่ในมือผู้โจมตีจริง ระบบเหล่านี้อาจถูกดักฟังทราฟฟิกที่เข้ารหัส เช่น การเรียก API ภายนอก การดึงอัปเดต หรือการส่งข้อมูลรับรองการเข้าระบบ

ด้านกลับกัน การแก้ด้วยการถอดรากออก (certifi, webpki-roots, Homebrew และ NSS) จะตัดความเชื่อถือใบรับรองที่ถูกต้องทุกใบที่ต่อสายมาจากรากเหล่านั้นด้วย Mozilla เตือนว่าเซิร์ฟเวอร์บางแห่งจะเชื่อมต่อไม่ได้สำหรับผู้ใช้ชุดรากของ Mozilla ที่ไม่ใช่ Firefox จนกว่าเซิร์ฟเวอร์เหล่านั้นจะย้ายไปใช้สายใบรับรองใหม่ ส่วน eMudhra เองเสี่ยงสูญเสียสถานะ CA ที่เชื่อถือได้ เพราะ Mozilla ถอดรากออกแล้ว Chrome จะถอดรากเดียวกันใน root store เวอร์ชัน 43 และกำลังทบทวนสถานะรากอีกตัวคือ emSign Root CA - G1 ด้วย

คำแนะนำ

  • อัปเดตซอฟต์แวร์ตามตารางแพตช์ด้านล่าง และ rebuild ไบนารี Go ทุกตัว ด้วย Go 1.27.3 หรือ 1.26.10 (Go 1.25 และเก่ากว่าหมดระยะซัพพอร์ต ไม่ได้รับแพตช์)
ซอฟต์แวร์เวอร์ชันที่แก้วิธีแก้สถานะ
Go1.27.3 และ 1.26.10ปฏิเสธสายใบรับรองที่มีกุญแจ 8 ดอก (CVE-2026-111943)ออกแล้ว 20 ต.ค. ต้อง rebuild
Firefox158.0.1 · ESR 115.43.1 · ESR 153.5.1ฝังรายการ OneCRL สำหรับเครื่องที่รับ Remote Settings ไม่ได้ (CVE-2026-113470)ออกแล้ว 20 ต.ค.
NSS3.131.1ถอด emSign ECC Root CA - G3ออกแล้ว 20 ต.ค.
Python certifi2026.10.19ถอด emSign ECC Root CA - G3ออกแล้ว
Rust webpki-roots1.0.10ถอด emSign ECC Root CA - G3ออกแล้ว
Homebrew ca-certificates2026-09-25_1ตัด emSign ECC Root CA - G3, emSign Root TLS CA - G3 และ AAA Certificate Servicesออกแล้ว
Node.jsยังไม่มีร่างแก้ไขเพื่อบล็อกกุญแจ 8 ดอกรอ
Composer ca-bundleยังไม่มีเปิด PR ถอด emSign ECC Root CA - G3รอ
  • ผู้ดูแล trust store ทำตามแนวทางของ Mozilla: ถ้าไคลเอนต์ตรวจการเพิกถอนได้แน่นอนและปฏิเสธการเชื่อมต่อเมื่อตรวจไม่ได้ ไม่ต้องทำอะไร · ถ้าซอฟต์แวร์บล็อก CA ตัวกลางรายใบได้ ให้บล็อกทั้ง 8 ใบทันที · ถ้าทำไม่ได้ ให้พิจารณาถอดความเชื่อถือรากที่ลงนามใบรับรองเหล่านั้น
  • ตรวจ base image ของคอนเทนเนอร์และแพ็กเกจ ca-certificates ของ distro ว่าอัปเดตแล้ว และไล่หาแอปที่ฝังชุดรากของตัวเอง (certifi, webpki-roots, ไฟล์ PEM ที่แนบมากับแอป)
  • Firefox ในองค์กรที่ปิด Remote Settings ด้วยนโยบายหรือบล็อกในเครือข่าย ต้องอัปเดตเป็นเวอร์ชันวันที่ 20 ตุลาคม
  • หากเว็บไซต์ขององค์กรใช้ใบรับรอง emSign ให้เตรียมย้ายไปใช้ CA อื่นก่อนที่ Chrome จะถอดราก และทดสอบว่าลูกค้าที่ใช้ certifi หรือ NSS ยังเชื่อมต่อได้
  • ตั้ง monitoring Certificate Transparency ของโดเมนตัวเองเพื่อจับใบรับรองที่ไม่ได้ขอ

แหล่งอ้างอิง