การวิเคราะห์เหตุการณ์: การเปลี่ยนแปลง `iss` ที่คาดไม่ถึงของ JWT
รายงานเหตุการณ์สำหรับการเปลี่ยนแปลง `iss` ที่คาดไม่ถึงของ JWT เมื่อวันที่ 2024-03-18
สรุป
เมื่อวันที่ 2024-03-18 การอัปเดตที่เปลี่ยนพฤติกรรมของตัวออกบัตร (issuer) ของ JWT ใน Logto Cloud ทำให้กระบวนการตรวจสอบยืนยันของผู้ใช้ที่มีโดเมนที่กำหนดเองและการตรวจสอบ iss
ถูกขัดขวาง การแก้ไขจำเป็นต้องให้ผู้ใช้เหล่านี้อัปเดตตรรกะการยืนยันของพวกเขา
- ผู้ใช้ที่ได้รับผลกระทบ: ผู้ใช้ที่มีโดเมนที่กำหนดเองเปิดใช้งานและทำการยืนยัน
iss
- ความรุนแรง: วิกฤติ, ทำลายการยืนยัน
iss
ในกระบวนการตรวจสอบยืนยัน
สาเหตุหลัก
การอัปเดตเปลี่ยนแปลงฟิลด์ iss
ให้ตรงกับโดเมนที่ร้องขอ ทำให้การยืนยันที่มีอยู่ซึ่งคาดหว ังตัวออกบัตรเริ่มต้นก่อนหน้านี้ถูกขัดขวาง
ไทม์ไลน์
- 2024-03-18 10:00 (UTC): การอัปเดตถูกปรับใช้, เปลี่ยนพฤติกรรม
iss
- 2024-03-18 23:30 (UTC): รับรายงานจากผู้ใช้คนแรกเกี่ยวกับพฤติกรรมที่มีอยู่ที่ถูกรบกวน
- 2024-03-19 12:00 (UTC): ยืนยันปัญหาและเริ่มการสืบสวน
- 2024-03-19 14:00 (UTC): ระบุสาเหตุหลักและผลกระทบ
- 2024-03-20 20:00 (UTC): เตรียมอีเมลไปยังผู้ใช้ที่ได้รับผลกระทบ
- 2024-03-20 06:00 (UTC): ส่งอีเมลไปยังผู้ใช้ที่ได้รับผลกระทบทั้งหมด
การวิเคราะห์ผลกระทบ
รายละเอียดของการออก
Logto Cloud สนับสนุนโดเมนที่กำหนดเองสำหรับการตรวจสอบยืนยัน นักพัฒนาที่มีผู้เช่าโดเมนที่กำหนดเองสามารถตั้งค่าเอนด์พ้อยต์ไปที่โดเมนที่กำหนดเองใน SDK จากนั้นผู้ใช้งานจะใช้เอนด์พ้อยต์นี้ในการเริ่มกระบวนการตรวจสอบยืนยันและรับโทเค็น บางโทเค็นจะอยู่ในรูปแบบของ JWT ที่มีฟิลด์ iss
ระบุผู้ที่ออกโทเค็นนี้ ก่อนหน้านี้ แม้ว่าเอนด์พ้อยต์โดเมนที่กำหนดเองจะถูกใช้ในการร้องขอโทเค็นการเข้าถึง ตัวออกบัตรก็ยังคงตั้งค่าให้โดเมนปกติของเรา ([tenant-id].logto.app
)
แต่โดเมนของตัวออกบัตรควรจะเหมือนกับเอนด์พ้อยต์ที่ร้องขอ ดังนั้นเราจึงออกอัปเดตเพื่อแก้ไขปัญหานี้ และตอนนี้ฟิลด์ iss
จะสะท้อนโดเมนที่ใช้ในการร้องขอโดยอัตโนมัติ
สำหรับผู้ที่ใช้โดเมนที่กำหนดเองในการมอบหมายโทเค็นและมีการยืนยันฟิลด์ iss ในเซิร์ฟเวอร์ทรัพยากร นี่อาจเป็นก ารเปลี่ยนแปลงที่มีผลกระทบอย่างรุนแรง การตรวจสอบการตรวจสอบยืนยันที่มีอยู่จะล้มเหลวเนื่องจากการเปลี่ยนแปลงของตัวออกบัตร เพื่อแก้ไขปัญหานี้ นักพัฒนาต้องเปลี่ยนโค้ดยืนยัน แทนที่ตัวออกบัตรที่คาดหวังให้เป็นตัวออกบัตรใหม่ที่มีโดเมนที่กำหนดเอง
เราล้มเหลวในการคำนึงถึงผลกระทบทั้งหมดที่มีต่อการยืนยัน iss
ที่มีอยู่ ส่งผลให้การออกนี้กลายเป็นการเปลี่ยนแปลงที่มีผลกระทบอย่างรุนแรงโดยไม่มีการแจ้งล่วงหน้า
การแก้ปัญหา
แจ้งเตือนผู้ใช้ที่ได้รับผลกระทบผ่านทางอีเมล แนะนำให้พวกเขาอัปเดตการยืนยัน iss
ของพวกเขาให้ตรงกับโดเมนที่ร้องขอ
มีการย้อนกลับไหม?
การเปลี่ยนแปลงนี้เป็นการแก้ไขที่จำเป็นสำหรับฟิลด์ตัวออกบัตร และบางผู้ใช้อาจได้ปรับตัวกับพฤติกรรมใหม่แล้ว การย้อนกลับจะทำให้เกิดความสับสนและความไม่สม่ำเสมอ
บทเรียนที่ได้เรียนรู้
- การเปลี่ยนแปลงโค้ดที่มีผลต่อการตรวจสอบยืนยันหลักต้องได้รับการอนุมัติจากทีมเพิ่มจากการตรวจสอบปกติ
- การทดสอบอัตโนมัติควรครอบคลุมกรณีเพิ่มเติม โดยเฉพาะสถานการณ์เฉพาะสำหรับคลาวด์
มาตรการแก้ไขและป้องกัน
- เพิ่มการทดสอบการรวม: เพิ่มกรณีการทดสอบเพื่อคร อบคลุมสถานการณ์ในเหตุการณ์นี้
- โปรเจกต์เฝ้าติดตามคุณสมบัติ: นอกจาก Logto Cloud สร้างโปรเจกต์ย่อยของเราเองและผสานเข้ากับ Logto อย่างลึกซึ้งเพื่อตรวจจับปัญหาที่อาจเกิดขึ้นก่อนที่การออกจะเปิดตัว