วันนี้ดู Tweet เรื่อง การวิเคราะห์ต้นเหตุปัญหาของ API ของ ClubHouse ที่โดนโจมตี
ยกตัวอย่างเช่น
ผู้ใช้งานหนึ่งคนสามารถทำการเปิดและเข้าห้อง stream ได้มากกว่า 1 ห้อง
โดยใช้งานผ่าน web browser ได้เลย
ซึ่งแน่นอนว่า มันขัดแย้งกับ terms of service อย่างแรง
โดยใน Tweet ข้างต้นจากคุณ Daniel Sinclair ได้สรุปไว้ดังนี้
เริ่มจากระบบ ClubHouse ที่ทำงานบน web browser
ทำการอธิบายโครงสร้างการทำงานของ ClubHouse
ทำการ stream การพูดคุยผ่านระบบของ Agora
ส่วนการ publish และ subscribe ต่าง ๆ ใช้งานผ่าน PubNub
แสดงดังรูป
จาก incident หรือ ปัญหา หรือ การโจมตี หรือ บุกรุก ดังกล่าวนั้น
พบว่าปัญหามาจากเรื่องของระบบ API และ Token
แต่ตัวที่เป็นปัญหาหลักเลยคือ Token ที่ได้จากระบบของ Agora
ซึ่งให้สำหรับการ stream เสียงของการพูดคุยในแต่ละห้องนั้น
พบว่า 1 คนจะมี Token ของ Agora 1 token
ใช้ token นั้นไม่มีวันหมดอายุ
และ ไม่เปลี่ยน token เมื่อผู้ใช้ออกจากห้องด้วย
ทำให้ผู้โจมตีสามารถ ใช้งาน token นั้น ๆ
ไปสร้าง bot เพื่อเข้าร่วมห้องต่าง ๆ ได้หลาย ๆ ห้องพร้อมกัน
ทำให้เห็นว่า การออกแบบระบบต้องนี้
มันแยกการทำงานไปเลย ซึ่งกลายมาเป็นช่องโหว่ของระบบ
ส่งผลให้เกิด drama ขึ้นมาจาก project ClubHouse บน web จากข้างต้นนั่นเอง
โดย code ของ project ดังกว่าพัฒนาด้วยภาษา Python
จึงเขียน code ในการเข้าร่วมหลาย ๆ ห้องไว้ดังนี้
ดังนั้น จากการวิเคราะห์นี้
ทำให้เห็นว่า เราควรให้ความสำคัญต่อ Token lifecycle ของระบบงานอย่างมาก
รวมทั้งการเชื่อมต่อหรือ integrate เข้ากับระบบอื่น ๆ
ว่าทั้งผู้ใช้งาน และผู้ให้บริการ (service provider)
ควรจัดการให้ดีมากกว่านี้ เพื่อลดความผิดพลาดและปัญหาที่ตามมา
อีกทั้งยิ่งระบบงานเป็นที่นิยมมากเท่าไร
บรรดาผู้โจมตีก็ยิ่งสนใจมากเท่านั้น
ดังนั้นผู้ดูแลและพัฒนาระบบ ควรระวังเรื่องเหล่านี้ให้มากขึ้น