วันนี้ดู Tweet เรื่อง การวิเคราะห์ต้นเหตุปัญหาของ API ของ ClubHouse ที่โดนโจมตี
ยกตัวอย่างเช่น
ผู้ใช้งานหนึ่งคนสามารถทำการเปิดและเข้าห้อง stream ได้มากกว่า 1 ห้อง
โดยใช้งานผ่าน web browser ได้เลย
ซึ่งแน่นอนว่า มันขัดแย้งกับ terms of service อย่างแรง
โดยใน Tweet ข้างต้นจากคุณ Daniel Sinclair ได้สรุปไว้ดังนี้
เริ่มจากระบบ ClubHouse ที่ทำงานบน web browser
![](http://www.somkiat.cc/wp-content/uploads/2021/03/Screen-Shot-2564-03-03-at-12.22.46.png)
ทำการอธิบายโครงสร้างการทำงานของ ClubHouse
ทำการ stream การพูดคุยผ่านระบบของ Agora
ส่วนการ publish และ subscribe ต่าง ๆ ใช้งานผ่าน PubNub
แสดงดังรูป
![](http://www.somkiat.cc/wp-content/uploads/2021/03/clubhouse-architecture.png)
จาก incident หรือ ปัญหา หรือ การโจมตี หรือ บุกรุก ดังกล่าวนั้น
พบว่าปัญหามาจากเรื่องของระบบ API และ Token
แต่ตัวที่เป็นปัญหาหลักเลยคือ Token ที่ได้จากระบบของ Agora
ซึ่งให้สำหรับการ stream เสียงของการพูดคุยในแต่ละห้องนั้น
พบว่า 1 คนจะมี Token ของ Agora 1 token
ใช้ token นั้นไม่มีวันหมดอายุ
และ ไม่เปลี่ยน token เมื่อผู้ใช้ออกจากห้องด้วย
ทำให้ผู้โจมตีสามารถ ใช้งาน token นั้น ๆ
ไปสร้าง bot เพื่อเข้าร่วมห้องต่าง ๆ ได้หลาย ๆ ห้องพร้อมกัน
ทำให้เห็นว่า การออกแบบระบบต้องนี้
มันแยกการทำงานไปเลย ซึ่งกลายมาเป็นช่องโหว่ของระบบ
ส่งผลให้เกิด drama ขึ้นมาจาก project ClubHouse บน web จากข้างต้นนั่นเอง
โดย code ของ project ดังกว่าพัฒนาด้วยภาษา Python
จึงเขียน code ในการเข้าร่วมหลาย ๆ ห้องไว้ดังนี้
![](http://www.somkiat.cc/wp-content/uploads/2021/03/clubhouse-code-1024x459.jpeg)
ดังนั้น จากการวิเคราะห์นี้
ทำให้เห็นว่า เราควรให้ความสำคัญต่อ Token lifecycle ของระบบงานอย่างมาก
รวมทั้งการเชื่อมต่อหรือ integrate เข้ากับระบบอื่น ๆ
ว่าทั้งผู้ใช้งาน และผู้ให้บริการ (service provider)
ควรจัดการให้ดีมากกว่านี้ เพื่อลดความผิดพลาดและปัญหาที่ตามมา
อีกทั้งยิ่งระบบงานเป็นที่นิยมมากเท่าไร
บรรดาผู้โจมตีก็ยิ่งสนใจมากเท่านั้น
ดังนั้นผู้ดูแลและพัฒนาระบบ ควรระวังเรื่องเหล่านี้ให้มากขึ้น