- ระหว่างทดสอบใน "integration" ซึ่งเป็นสภาพแวดล้อมพัฒนาของ EA ผู้วิจัยได้รับ access token ที่มีสิทธิ์ผ่านข้อมูลรับรองที่ถูก hardcode อยู่ในไฟล์ executable ของเกมหนึ่ง
เอกสารการยืนยันตัวตน
- มีการสแกนหลาย endpoint เพื่อตรวจสอบว่ามีการเปิดเผยเอกสาร API หรือไม่
- พบไฟล์ Swagger JSON ที่
/connect/api-docs/index.json และสามารถดูการติดตั้งใช้งาน Swagger ทั้งหมดของ Nexus Connect API ได้
- อัปเดตไฟล์ Swagger ให้เป็นสเปก OpenAPI 3.0 และรันบนเซิร์ฟเวอร์ Swagger UI ในเครื่อง
เพื่อค้นหาเพิ่มเติม
- EA Desktop ใช้ "Service Aggregation Layer" ซึ่งเป็น GraphQL API ที่รวมหลาย backend service เข้าด้วยกัน
- พบ service endpoint มากกว่า 80 จุดที่
gateway.int.ea.com
พบทองคำ
- มีการเรียกทุก endpoint และแปลงเป็นสเปก OpenAPI เพื่อตรวจสอบข้อมูลหลากหลายประเภท
- พบข้อมูลที่น่าสนใจ เช่น ข้อมูลเกี่ยวกับทีมของเกมบางเกม
ช่วงเวลาโปรดักชัน
- สำรวจ endpoint ที่เข้าถึงได้ด้วย production OAuth client
- ตรวจสอบข้อมูลบัญชีและรายการ "persona" ผ่าน endpoint
/identity/pids/me และ /identity/pids/me/personas
การค้นพบครั้งใหญ่
- พบว่าสามารถอัปเดต persona ได้ผ่าน endpoint
/identity/pids/{pidId}/personas/{personaId}
- สามารถทำได้ทั้งการเปลี่ยนชื่อผู้ใช้ เปลี่ยนสถานะ persona และย้าย persona ไปยังบัญชีอื่น
การตระหนักรู้อีกครั้ง
- สามารถค้นหาได้แม้แต่บัญชีที่ซ่อนไว้ผ่าน endpoint
/identity/namespaces/{namespace}/personas
- สามารถย้าย persona ของบัญชีอื่นมายังบัญชีของตนเองเพื่อควบคุมข้อมูลบัญชีได้
ความพยายามครั้งที่สาม
- พบว่าสามารถใช้โทเค็น Xbox/PSN เพื่อข้าม 2FA และเข้าสู่ระบบบัญชีได้
- สามารถล็อกอินเข้าเกมบน Xbox และเข้าถึงบัญชีของเหยื่อได้
ผลกระทบ
- ผู้โจมตีสามารถย้ายข้อมูล persona เพื่อขโมยชื่อผู้ใช้และข้อมูลเกมได้
- สามารถล็อกอินเข้าบัญชีผ่าน Xbox และเข้าถึงบัญชีของเหยื่อได้
- สามารถแบน persona หรือเปลี่ยนชื่อผู้ใช้ได้
ความเห็นบางประการ
- น่าเสียดายที่ EA ใช้เวลานานในการแก้ปัญหา และไม่มีโปรแกรม bug bounty
- การประสานงานกับ EA เป็นไปในทางบวก
ไทม์ไลน์
- 16 มิถุนายน 2024 - รายงานช่องโหว่ต่อ EA
- 8 กรกฎาคม 2024 - ปล่อยแพตช์ 1 (ตรวจสอบความเป็นเจ้าของ persona)
- 10 กันยายน 2024 - ปล่อยแพตช์ 4 (ลบเอกสาร)
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
EA ชอบใช้ระบบร่วมกันสำหรับทุกเกม พบแบ็กเอนด์ส่วนกลางชื่อ blaze ใน Madden ซึ่งมีทั้งเว็บและ TCP endpoint เคยทำเครื่องมือสำหรับเรียก endpoint แต่กลับทำให้เซิร์ฟเวอร์ล่มทีละตัว จากนั้นจึงพยายามสร้าง API เพื่อป้องกันการสำรวจ
ติดตั้ง Battlefield 2042 ผ่าน Xbox และเชื่อมต่อได้สำเร็จ ชอบเหล่าแฮ็กเกอร์
น่าจะน่าสนใจถ้ามีบันทึกที่แสดงให้เห็นว่าต้องใช้เวลาและความพยายามมากแค่ไหนในการโจมตี
คนที่ชอบบทความนี้สามารถไปอ่านเพิ่มเติมได้ในแพลตฟอร์ม bug bounty อย่าง "Hacktivity" ของ HackerOne
บทความนี้ทำให้ไปตรวจสอบเซิร์ฟเวอร์ API ฝั่งพัฒนาและปฏิบัติการ เพื่อยืนยันว่าไม่ได้เปิดเผยเส้นทาง OpenAPI UI/JSON descriptor
เกมของ EA เหมือนจะไม่แน่ว่าจะใช้งานได้หรือไม่ สถานการณ์คล้ายกันนี้อาจเกิดขึ้นได้แม้ในคลาวด์รายใหญ่ ในโลกของอินฟราสตรักเจอร์มันเป็นสถานการณ์ที่เป็นไปไม่ได้ แต่ในโลกผู้บริโภคของ EA มันเป็นเรื่องปกติ
EA อ้างว่าการเปลี่ยนบัญชี Xbox เป็นบัญชีใหม่ "เป็นไปไม่ได้ในทางเทคนิค" แต่จริง ๆ แล้วทำได้ เพียงแต่ไม่สามารถเชื่อมบัญชี Xbox เก่าได้ จึงเล่นเกม EA บน Xbox ไม่ได้
คงจะตลกดีถ้าพวกเขาบล็อกทุกบัญชีแล้วหวังว่าไม่มีแบ็กอัปฐานข้อมูล
สงสัยว่าการทำงานเป็นวิศวกรในบริษัทใหญ่จะรู้สึกอย่างไร หลายทีมเป็นเจ้าของคนละส่วนกัน จึงมีโอกาสสูงที่จะมีช่องโหว่หลงเหลืออยู่
น่าผิดหวังที่ EA ยังไม่เริ่มโปรแกรม bug bounty เพราะไม่มีแรงจูงใจให้รายงาน จึงมีคนที่เลือกปกปิดช่องโหว่ด้วย หวังว่า EA จะทำตามแนวทางของอุตสาหกรรม และก็สงสัยว่าไม่มีการให้รางวัลสำหรับการรายงานจริงหรือไม่