ซีทีโอ Mozilla เขียนอธิบายเหตุการณ์ใบรับรองหมดอายุทำ add-on บน Firefox ใช้ไม่ได้ พร้อมย้ำจะป้องกันไม่ให้เกิดซ้ำ

by nutmos
10 May 2019 - 15:19

หลังจาก Mozilla พบปัญหาใบรับรองหมดอายุจนทำให้ add-on หลายตัวไม่ทำงานพร้อมกัน ล่าสุด Eric Rescorla ซีทีโอของ Firefox ได้เขียนรายละเอียดเกี่ยวกับเหตุการณ์ครั้งนี้แล้วว่าทำไมจึงเกิดเหตุการณ์แบบนี้ได้ และจะป้องกันเหตุการณ์ที่จะเกิดขึ้นในอนาคตอย่างไร

Rescorla ระบุว่า ทุกวันนี้ Firefox มี add-on อยู่ราว 15,000 ตัว โดย Firefox กำหนดให้ add-on ทั้งหมดที่ถูกติดตั้งจะต้องผ่านการเซ็นรับรองด้วยด้วยลายเซ็นดิจิทัลเพื่อป้องกัน add-on ที่ไม่พึงประสงค์ โดยทีมงานของ Mozilla จะเป็นผู้ตรวจสอบ add-on เอง

Mozilla มีการใช้ root certificate ซึ่งเก็บไว้ออฟไลน์ใน hardware security module หรือ HSM เพื่อเซ็น intermediate certificate อีกทีหนึ่ง ซึ่ง intermediate certificate นี้จะเก็บไว้แบบออนไลน์และใช้ในกระบวนการเซ็น add-on โดยเมื่อ add-on มาแล้วก็จะสร้าง end-entity certificate โดยผ่านการเซ็นจาก intermediate certificate และใช้ end-entity นี้เพื่อรับรอง add-on


ภาพจาก Mozilla

ปัญหาที่เกิดขึ้นคือ intermediate certificate ที่ใช้เซ็น add-on เกือบทุกตัวนี้หมดอายุวันที่ 4 พฤษภาคม เวลาตีหนึ่งตาม UTC หรือราว 8 นาฬิกาตามเวลาประเทศไทย ทำให้ add-on ทั้งหมดที่เซ็นด้วย certificate นั้นใช้ ไม่ได้ ตัว Firefox เองไม่ได้ตรวจสอบสถานะใบรับรองตลอด แต่จะเช็คทุก 24 ชั่วโมง ซึ่งเวลาจะแตกต่างกันไปตามผู้ใช้แต่ละคน ทำให้แต่ละคนเจอปัญหาช้าเร็วไม่เท่ากัน ซึ่งคนในองค์กร Mozilla รู้ตัวว่าพบปัญหาราว 6 โมงเช้าตามเวลาแปซิฟิกในวันที่ 3 พฤษภาคม

หลังจากทราบเรื่อง Mozilla จึงสั่งหยุดเซ็น add-on ใหม่ทั้งหมด และออกระบบแก้ปัญหาด่วนสั่งยับยั้งระบบตรวจสอบลายเซ็นดิจิทัลของ add-on ทันทีเพื่อป้องกันผู้ใช้ที่ยังไม่ได้ตรวจสอบลายเซ็นให้ใช้ได้ก่อนซึ่งจะทำให้กลับมาเป็นปกติเมื่อแพทซ์แก้ปัญหาเสร็จสิ้น

ซีทีโอระบุว่า วิธีแก้ปัญหาที่ถูกต้องคือการเซ็น add-on ด้วยใบรับรองใหม่และปล่อยออกไปใหม่ แต่ระบบ Firefox ไม่รองรับการเซ็นใบรับรองปริมาณมาก ๆ ในระยะเวลาอันสั้น และถ้าทำเสร็จแล้วผู้ใช้ต้องดาวน์โหลดใหม่ Mozilla จึงหาทางอื่นแทนโดยมีสองทางเลือก ระหว่างแพทซ์ Firefox ให้ระบบตรวจสอบกลับไปใช้วันที่ที่ใบรับรองยังไม่หมดอายุ กับสร้างใบรับรองทดแทน ซึ่ง Mozilla ตัดสินใจทำทั้งสองทางคู่ขนานกันไป และดีพลอยสิ่งที่เห็นว่าทำได้ก่อน คือทางเลือกที่สอง โดยวิธีที่ Mozilla ทำมีดังนี้

  1. สร้างใบรับรองใหม่
  2. วางใบรับรองลง Firefox
  3. อัลกอริทึมจะหาใบรับรองที่มี subject เหมือนกับผู้ออก end-entity certificate ซึ่งถ้ามีหลายใบ Firefox จะเลือกใบที่ยืนยันได้

ขั้นตอนการวางใบรับรองลง Firefox นี้ Mozilla ระบุว่ามี add-on ชนิดพิเศษหรือ system add-on (SAO) และเพื่อทำการทดสอบ Firefox ได้พัฒนาระบบที่เรียกว่า Normandy ที่ใช้ลง SAO ให้ผู้ใช้ Firefox โดย SAO จะรันบนเบราว์เซอร์อัตโนมัติเพื่อการทดสอบต่าง ๆ อย่างในกรณีนี้ก็ใช้เพื่อวางใบรับรองให้ Firefox และสั่งเบราว์เซอร์ให้ตรวจสอบใบรับรองใหม่

ทั้งนี้ Mozilla ระบุว่า เหตุผลที่ใช้เวลานานเนื่องจากต้องสร้างใบรับรองใหม่ วิศวกรต้องขับรถไปเอา root certificate ที่เก็บใน HSM และหลังออกใบรับรองใหม่ก็ต้องทดสอบก่อน จากนั้นจึงเขียน SAO และทดสอบให้มั่นใจว่าปล่อยออกไปแล้วจะไม่ได้ผลลัพธ์ที่แย่กว่าเดิม เมื่อมั่นใจแล้วจึงปล่อย SAO ออกไป ซึ่งต้องใช้เวลาสักระยะเนื่องจาก Normandy ใช้เวลาตรวจสอบราว 6 ชั่วโมงครั้ง

ส่วนผู้ใช้ที่จะไม่ได้รับการแก้ไขครั้งนี้ เช่น

  • ผู้ที่ปิดระบบ Telemetry หรือ Studies
  • ผู้ใช้ Firefox บน Android (Fennec) ที่ไม่มี Studies
  • ผู้ใช้ Firefox ESR ที่ไม่มี telemetry reporting
  • ผู้ใช้ที่อยู่ภายใต้ HTTPS Man-in-the-middle proxy
  • ผู้ใช้ Firefox เวอร์ชันเก่ามาก ๆ ซึ่งไม่มีวิธีนอกจากอัพเดต Firefox เป็นเวอร์ชันใหม่เท่านั้น

สุดท้าย ซีทีโอได้บอกว่าจะป้องกันเหตุการณ์ไม่ให้เกิดซ้ำ โดยต่อไปนี้จะหาวิธีติดตามสถานะต่าง ๆ ใน Firefox ที่มีโอกาสจะเป็นระเบิดเวลาให้ดีกว่าเดิม และจะหาวิธีที่ดีกว่านี้ในการปล่อยอัพเดตเมื่อทุกอย่างมีปัญหา อย่างกรณีนี้ใช้ Studies แต่ก็ไม่ใช่เครื่องมือที่ดีนัก เพราะผู้ใช้หลายคนไม่พึงประสงค์จะใช้ระบบนี้ และสุดท้ายคือจะพยายามหาสถาปัตยกรรมความปลอดภัยของ add-on ให้ดีกว่านี้เพื่อให้มั่นใจว่าวางระบบความปลอดภัยไว้อย่างถูกต้องและมีความเสี่ยงในการพังต่ำ

ที่มา - Mozilla Hacks Blog

Blognone Jobs Premium