วันนี้ดู Tweet เรื่อง การวิเคราะห์ต้นเหตุปัญหาของ API ของ ClubHouse ที่โดนโจมตี
ยกตัวอย่างเช่น
ผู้ใช้งานหนึ่งคนสามารถทำการเปิดและเข้าห้อง stream ได้มากกว่า 1 ห้อง
โดยใช้งานผ่าน web browser ได้เลย
ซึ่งแน่นอนว่า มันขัดแย้งกับ terms of service อย่างแรง

โดยใน Tweet ข้างต้นจากคุณ Daniel Sinclair ได้สรุปไว้ดังนี้

เริ่มจากระบบ ClubHouse ที่ทำงานบน web browser

https://opench.aix.uy/

ทำการอธิบายโครงสร้างการทำงานของ 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)
ควรจัดการให้ดีมากกว่านี้ เพื่อลดความผิดพลาดและปัญหาที่ตามมา

อีกทั้งยิ่งระบบงานเป็นที่นิยมมากเท่าไร
บรรดาผู้โจมตีก็ยิ่งสนใจมากเท่านั้น
ดังนั้นผู้ดูแลและพัฒนาระบบ ควรระวังเรื่องเหล่านี้ให้มากขึ้น