Cloudflare แฉ Fina CA แอบออกใบรับรอง TLS ปลอมให้ 1.1.1.1 วิเคราะห์ดราม่าที่สะเทือนความปลอดภัยของอินเทอร์เน็ต และบทเรียนที่คนทำเว็บต้องรู้
เรื่องราวนี้เกี่ยวกับ 1.1.1.1 บริการ Public DNS Resolver ที่พวกเราหลายคนน่าจะคุ้นเคยกันดี ซึ่งถูกแอบอ้างชื่อไปออกใบรับรองความปลอดภัย (TLS/SSL Certificate) โดยไม่ได้รับอนุญาต
Cloudflare 1.1.1.1 Public DNS Resolver
Fina CA แอบออกใบรับรอง?
เมื่อไม่กี่วันที่ผ่านมา Cloudflare ได้ออกมาประกาศว่า Fina CA ซึ่งเป็น Certificate Authority (CA) หรือหน่วยงานที่มีหน้าที่ออกใบรับรองความปลอดภัย ได้ทำการออกใบรับรอง TLS ให้กับ IP Address 1.1.1.1 ของ Cloudflare โดยไม่ได้รับอนุญาต ทั้งหมด 12 ครั้ง ในช่วงเวลาเกือบ 2 ปี (ก.พ. 2024 - ส.ค. 2025)
จากการพูดคุย Fina CA อ้างว่าเป็นการออกใบรับรองเพื่อ การทดสอบภายใน (internal test) และเกิดข้อผิดพลาดขึ้น แต่ Cloudflare ก็ชี้ชัดว่าการกระทำแบบนี้เป็นการละเมิดหลักปฏิบัติความปลอดภัยอย่างร้ายแรง เพราะไม่มี CA ไหนควรจะออกใบรับรองให้กับโดเมนหรือ IP ที่ตัวเองไม่ได้เป็นเจ้าของหรือควบคุมอยู่ครับ
แล้วมันน่ากลัวแค่ไหน กระทบกับเราไหม?
Cloudflare ยืนยันว่าจากการตรวจสอบ ยังไม่มีหลักฐานว่ามีผู้ไม่หวังดีนำใบรับรองปลอมนี้ไปใช้โจมตีผู้ใช้งานได้สำเร็จ
การจะโจมตีแบบ Man-in-the-Middle (ดักฟังข้อมูล) ด้วยใบรับรองปลอมนี้ได้นั้น มันมีเงื่อนไขที่ซับซ้อนมากครับ คือผู้โจมตีจะต้องมีครบทั้ง 3 อย่างนี้พร้อมกัน คือ
มีใบรับรองปลอมและ Private Key ที่คู่กัน
เครื่องของผู้ใช้ต้อง "เชื่อถือ (Trusted)" Fina CA อยู่ใน Root Store ของตัวเอง (ซึ่งโชคดีที่ระบบปฏิบัติการหลัก ๆ อย่าง Android, Apple, หรือ Chrome ไม่ได้เชื่อถือเป็นค่าเริ่มต้น)
ต้องสามารถดักจับ Traffic ของผู้ใช้ที่วิ่งไปยัง 1.1.1.1 ได้
แม้ความเสี่ยงจะน้อย แต่การกระทำแบบนี้ถือเป็นการสั่นคลอนความไว้ใจ (Trust Infrastructure) บนโลกอินเทอร์เน็ตอย่างรุนแรงเลยครับ
เบื้องหลังทางเทคนิค
เพื่อน ๆ อาจจะสงสัยว่าทำไม IP Address อย่าง 1.1.1.1
ถึงต้องมี SSL Certificate ด้วย?
ปกติแล้ว SSL Certificate จะถูกออกให้กับชื่อโดเมน (เช่น contentmastery.io
)
แต่สำหรับเซอร์วิส DNS ยุคใหม่ที่เน้นความเป็นส่วนตัวอย่าง DNS over HTTPS (DoH) และ DNS over TLS (DoT) การเชื่อมต่อครั้งแรกสุดจะเกิดขึ้นผ่าน IP Address โดยตรง (เพราะตอนนั้นเครื่องเรายังไม่รู้จักโดเมน)
ดังนั้น Certificate ที่ใช้จึงจำเป็นต้องระบุ IP Address 1.1.1.1
ไว้ด้วย เพื่อให้เครื่องของผู้ใช้มั่นใจได้ว่ากำลังคุยกับ Server ของ Cloudflare จริง ๆ ไม่ใช่ผู้ที่แอบอ้าง
Certificate Transparency พระเอกตัวจริงของเรื่องนี้
แล้ว Cloudflare จับได้อย่างไร? คำตอบคือเทคโนโลยีที่เรียกว่า Certificate Transparency (CT) ครับ
ให้ลองนึกภาพว่า CT คือ บัญชีสาธารณะ หรือเปรียบเสมือน CCTV ของโลกอินเทอร์เน็ต ที่บังคับให้ CA ทุกเจ้าต้องส่งประวัติการออกใบรับรองทั้งหมดไปเก็บไว้ใน log ที่ทุกคนเข้ามาตรวจสอบได้
เทคโนโลยีนี้เองที่ทำให้มีคนตาดีไปเห็นใบรับรองแปลก ๆ ของ 1.1.1.1 ใน log แล้วแจ้งไปยัง Cloudflare จนกลายเป็นเรื่องขึ้นมา ถ้าไม่มีระบบ CT เรื่องนี้อาจจะถูกซุกไว้ใต้พรมไปอีกนานเลยก็ได้ครับ
หลายคนที่อ่านถึงตรงนี้ อาจจะสงสัยว่าเรื่องใหญ่ขนาดนี้มันแดงขึ้นมาได้อย่างไร? จากบล็อกของ Cloudflare เอง พวกเขาได้อ้างอิงถึงโพสต์บน Hacker News (ตามภาพด้านล่าง) ว่าเป็นหนึ่งในจุดที่ทำให้พวกเขาเริ่มการตรวจสอบอย่างจริงจัง
โพสต์บน Hacker News จุดเริ่มต้นที่ทำให้ Cloudflare เริ่มตรวจสอบ
และนี่คือหลักฐานชิ้นสำคัญที่ถูกพูดถึงทั้งบน Hacker News และใน Mailing List ของผู้เชี่ยวชาญด้าน Certificate Transparency ครับ
ภาพด้านบนคือข้อมูลจากเว็บไซต์ crt.sh
ซึ่งเป็นฐานข้อมูลสาธารณะของ Certificate Transparency ครับ มันแสดงให้เห็น "ใบรับรอง" ที่มีปัญหาซึ่งออกโดย Fina CA ให้กับ IP Address 1.1.1.1
ของ Cloudflare อย่างชัดเจน
ข้อมูลนี้ได้ถูกนำไปโพสต์ใน Mailing List ของผู้เชี่ยวชาญ และคุณ Chris Hartwig ก็ได้ตั้งคำถามสำคัญที่ทุกคนในวงการอยากรู้ทันทีว่า
"ใบรับรองนี้สามารถนำไปใช้โจมตีแบบ Man-in-the-Middle (MITM) กับบริการ DNS ของ Cloudflare ได้หรือไม่?"
"ถึงแม้จะไม่มีเจตนาร้าย แต่มันก็ยังถือเป็นการละเมิดข้อบังคับของ CA อยู่ดีใช่ไหม?"
สรุป
แม้เหตุการณ์นี้จะน่ากังวล แต่ในอีกแง่หนึ่งมันก็แสดงให้เห็นว่า ecosystem ของความปลอดภัยบนอินเทอร์เน็ตยังคงทำงานได้ดี (CT ช่วยให้จับได้) และการที่บริษัทใหญ่อย่าง Cloudflare เลือกที่จะโปร่งใสและยอมรับความผิดพลาดของตัวเอง ก็เป็นสัญญาณที่ดีที่ช่วยผลักดันให้ทั้งอุตสาหกรรมต้องพัฒนาไปในทางที่ดีขึ้นครับ
สำหรับคนทำเว็บอย่างเรา ๆ
นี่คือโอกาสที่ดีที่จะได้ทบทวนเรื่องความปลอดภัยของเว็บไซต์ตัวเอง
และตระหนักว่าโลกดิจิทัลที่เราอยู่นั้น
มันมีทั้งคนที่พยายามสร้างและคนที่อาจจะทำพลาดโดยไม่ตั้งใจ
การติดตามข่าวสารและป้องกันตัวเองอยู่เสมอจึงเป็นเรื่องที่สำคัญที่สุดครับ
ที่มา