มาดูช่องโหว่ facebook ที่โดน hack กันเถอะ
Cr.Spoil
https://medium.com/@u0x/%E0%B8%A1%E0%B8%B2%E0%B8%94%E0%B8%B9%E0%B8%8A%E0%B9%88%E0%B8%AD%E0%B8%87%E0%B9%82%E0%B8%AB%E0%B8%A7%E0%B9%88%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B9%80%E0%B8%9F%E0%B8%AA%E0%B8%9A%E0%B8%B8%E0%B9%8A%E0%B8%81%E0%B9%82%E0%B8%94%E0%B8%99%E0%B9%81%E0%B8%AE%E0%B8%81-%E0%B8%9C%E0%B8%B9%E0%B9%89%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-90-%E0%B8%A5%E0%B9%89%E0%B8%B2%E0%B8%99%E0%B8%84%E0%B8%99%E0%B9%83%E0%B8%99%E0%B8%81%E0%B8%A5%E0%B8%B8%E0%B9%88%E0%B8%A1%E0%B9%80%E0%B8%AA%E0%B8%B5%E0%B9%88%E0%B8%A2%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%A5%E0%B9%87%E0%B8%AD%E0%B8%84%E0%B8%AD%E0%B8%B4%E0%B8%99%E0%B9%83%E0%B8%AB%E0%B8%A1%E0%B9%88-b1fd95043258
ขอสรุปไว้สั้น ๆ เผื่อว่าเป็นประโยชน์ต่อการเอาไปออกแบบพัฒนาระบบให้มีความปลอดภัย ข้อมูลทั้งหมดอ้างอิงมาจาก บล็อคของพนักงาน Facebook โดยตรง
สิ่งที่ต้องรู้ถึงจะเข้าใจช่องโหว่นี้มี 3 อย่าง
1. View As
ช่องโหว่เกิดจากฟีเจอร์นึงชื่อว่า View As ที่ไว้ทำให้ คนใช้เฟสบุ๊กสามารถ ดูได้ว่าคนที่เราเลือกนั้น มองเห็น หน้าตาเฟสบุ๊กของเราเป็นยังไง หน้าตาเป็นงี้
จากนั้นเราสามารถเลือกว่าจะมองเป็น public คือคนไม่ล็อคอิน ไม่เป็นเพื่อน จะเห็นยังไง หรือ เลือกแบบใส่ชื่อเจาะจงไปได้ว่า จะให้คน ๆ นั้นมองเห็น profile เราเป็นยังไง
เหตุผลที่ต้องมีฟีเจอร์นี้เพราะว่า บางทีเราโพสต์ลงเฟสบุ๊กอาจจะตั้งสิทธิ์กำหนดว่าเพื่อนคนไหน หรือเพื่อนกลุ่มไหน เห็นโพสต์บางโพสต์เราบ้าง
จากตัวอย่าง เราเลือกให้โพสต์เราเห็นเฉพาะนาย B ได้ หรือเลือกให้เห็นโดยเพื่อนทุกคนยกเว้น นาย A ก็ได้ คร่าว ๆ เผื่อใครไม่เคยใช้
2. Access Token
ปกติเวลาเราล็อคอินเข้าเฟสบุ๊ก เราก็ต้องใช้ Username กับ Password คำถามคือทำไม เวลาเราตื่นเช้ามาหยิบมือถือขึ้นมาเปิด แล้วเราไม่ต้องล็อคอินใหม่ เราใช้งานได้ทันทีเลย? คำตอบก็คือทั้งแอปในมือถือและเว็บ มีการใช้สิ่งที่เรียกว่า access token (จะเรียกว่า session token ก็ได้) เป็นบัตรผ่าน ว่าหลังจากเราเอา Username กับ Password ไปแลกบัตรนี้มาแล้ว เราจะเอาบัตรนี้ เข้าไปใช้งานเฟสบุ๊กได้เรื่อย ๆ โดยไม่ต้องล็อคอินใหม่
ซึ่ง access token เองก็มีหลายแบบ ทั้งใช้ชั่วคราวจำกัดเวลา จำกัดสิทธิ์แค่เอาไปกด like ได้ หรือ token ระดับ full permission ที่ใช้งานได้ทุกฟีเจอร์ของ ผู้ใช้งานคนนั้นเช่นที่ในแอปมือถือได้มาเวลาล็อคอิน หรือ session token ที่ใช้ในจาก cookie เวลาเราล็อคอินผ่านหน้าเว็บ
3. ช่องโหว่ที่ทำให้ View As ขโมย Access Toke
ปรากฏว่าแฮกเกอร์โจมตีช่องโหว่ในฟีเจอร์ View As ทำให้ สามารถขโมยบัตรผ่านหรือ Access Token ที่ว่านี้ของ ผู้ใช้งานคนอื่นได้ ผลคือการเข้าถึงบัญชีผู้ใช้งานคนไหนก็ได้ โดยไม่ต้องล็อคอินซ้อนเข้าไป
นี้เป็นเหตุผลว่าทำไม อยู่ดี ๆ สองสามวันมานี้เราถึง ต้องล็อคอินเข้าเฟสบุ๊กใหม่ เพราะว่า เฟสบุ๊ก “เชื่อว่า” มีผู้ใช้งานกว่า 50 ล้านคนโดนแฮกไปแล้ว และอีก 40 ล้านคนเคยถูกใช้ในฟีเจอร์ View As เลยทำการ รีเซ็ต token ให้ผู้ใช้งานรวมแล้ว 90 ล้านบัญชี
3.1 ช่องโหว่ #1 — View As สำหรับ โพสต์วันเกิด
ฟีเจอร์ View As ถูกออกแบบมาสำหรับให้ดูได้อย่างเดียว ว่าคนอีกคนจะเห็น profile เราหน้าตาเป็นยังไง ปรากฏว่า ดันมี ตัวกดโพสต์รูปแบบ นึงใน profile ซึ่งคือการ โพสต์คลิปอวยพรวันเกิดให้เพื่อนเป็นวีดีโอที่สร้างโดยเฟสบุ๊ก
การโพสต์วีดีโออวยพรวันเกิด ดันมีช่องโหว่ ที่ทำให้ เวลาเรากด View As แล้ว ตัวกดโพสต์วีดีโอนี้ยังไม่หายไป (การกดโพสต์แบบอื่นมันจะหายไป) ทำให้มันถูกกด ใช้โพสต์ด้วย
สิทธิ์ผู้ใช้งานคนที่เรากด View As ไปได้!
แต่ถ้าแฮกเกอร์โจมตีช่องโหว่นี้เฉย ๆ ก็ไม่มีไรมากคือโพสต์คลิปวีดีโออวยพรวันเกิดด้วยเฟสบุ๊กคนอื่น บนหน้าเฟสบุ๊กของตัวเอง แล้วไง?
3.2 ช่องโหว่ #2 — อัปโหลดวีดีโอ ได้ token สิทธิ์สูง
ต่อมา เฟสบุ๊กปรับ ฟีเจอร์สร้างวีดีโออวยพรวันเกิดเพื่อนใหม่ ประมาณเดือน กรกฎาคม ปีที่แล้ว (2017) แต่การปรับครั้งนี้มีข้อผิดพลาดอีก ทำให้เวลาโหลดหน้า HTML อัปโหลดวีดีโออวยพรวันเกิดนี้ ดันมี access token ใส่กลับมาใน HTML ด้วย แถมไม่ใช่ token กาก ๆ ดันเป็น token ขั้นเทพสำหรับ แอปมือถือ !
ซึ่ง token นี้ มีสิทธิ์ทำให้ผู้ใช้งาน เข้าถึงฟีเจอร์ทุกอย่างเหมือนล็อคอินเข้าไปอยู่ในบัญชีนั้น ๆ ได้เลย เห็นหมด ข้อความคุยกัน จัดการเพจ จัดการกลุ่ม โพสต์หาคนอื่นได้ ทุกอย่าง แต่ว่าถ้า แฮกเกอร์โจมตีช่องโหว่นี้ ก็จะแค่มองเห็น token ที่ว่าเป็นของตัวเองยัง ไม่เห็นของคนอื่น ตอนกดจะกดโพสต์วีดีโออวยพรวันเกิดนั้นเอง
3.3 ช่องโหว่ #3 — View As ดันเห็น token คนอื่น
ปรากฏว่าเมื่อแฮกเกอร์ เอาส่วนผสมทุกอย่างมารวมกันอย่างกลมกล่อม ใช้ฟีเจอร์ View As ด้วยหน้าอัปโหลดวีดีโออวยพรวันเกิด ที่ฟีเจอร์นี้จะพ่น token ของคนโพสต์ออกมา แต่คราวนี้มันดันพ่น token ของ คนที่แฮกเกอร์เลือกแล้วกด View As ไว้ เช่น Mark Zuckerberg ! และเมื่อเอา token ที่หลุดออกมานี้ไปใช้กับ API ของเฟสบุ๊กด้วยเช่นเอาไปเซ็ตไว้ในแอปมือถือ เหมือนค่าที่เราได้หลังล็อคอินผ่านมือถือ ทำให้ แฮกเกอร์สามารถเข้าถึงบัญชีใครก็ได้ และใช้ฟีเจอร์อะไรของคน ๆ นั้นก็ได้ในเฟสบุ๊ก!!
ปัญหาก็คือ แฮกเกอร์ที่โจมตีช่องโหว่นี้ ไม่ใช่โจรกระจอกที่เอา token เด็กน้อยไปปั้ม like ปั้ม share แต่ดันทำงานกันอย่างมืออาชีพ และน่าจะเขียนระบบขึ้นมาเพื่อ โจมตีผู้ใช้งานกลุ่มนึง และกระจายกระโดด (pivot) อย่างรวดเร็วไปแฮกเพื่อนของเพื่อนคนนั้น เข้าไปจน เข้าถึง access token และบัญชีผู้ใช้งานหลายสิบล้านคนได้
สรุปคือ แฮกเกอร์ เข้าหน้า profile ตัวเอง เลือกโพสต์วีดีโออวยพรวันเกิด กด View As แล้วเลือกเหยื่อที่จะแฮก จากนั้นในหน้า HTML ที่ตอบกลับมาในส่วนของตัวอัปโหลดวีดีโอจะมี access token ของคนที่โดนเลือก หลุดออกมา แฮกเกอร์เอา token นี้ไปใช้ล็อคอินเป็นใครก็ได้
ตัวอย่างหน้าตาวีดีโออวยพรวันเกิดที่ว่า เผื่อใครไม่เคยเห็น
ที่มา