Facebook 安全設計上的問題造成的重大漏洞:「Hacker reveals How He Could have Hacked Multiple Facebook Accounts」。
攻擊者先用很多 proxy 去打出哪些 id 是有效的:
Gurkirat first collected valid Facebook IDs by making queries to Facebook Graph API starting with 100,000,000,000,000, since Facebook IDs are generally 15-digit long and then visited www.facebook.com/[ID] with a valid ID number in place of [ID].
這樣他就順利打出兩百萬個帳號:
Once entered, the URL automatically redirected and changed the Facebook ID to the user's username. In this way, first, he was able to make a list of 2 Million valid Facebook usernames.
接下對這些帳號發出重設密碼的需求,並且開始亂猜六碼數字 (也是透過大量的 proxy):
Then using a script, hundreds of proxies and random user-agents, Gurkirat automatically initiated the password reset requests for those 2 million users, each assigned a 6-digit password reset code, thus consuming the complete 6-digit range.
然後就打出一票來了:

最大的問題在於六碼數字的強度不夠,但 Facebook 看起來沒打算改...
gslin 的第二步驟好像畫錯重點,
就我的理解他不是去猜那六位數,
而是去期待「我發起的兩百萬個帳戶重設密碼請求能剛好覆蓋 000000~999999」
六位數總共有一百萬總組合,
兩百萬個帳戶假設平均分配的話一個 passcode 最少會有兩個帳號用到,
整個攻擊行動用白話文說就是「利用兩百萬個帳戶名稱發起一次攻擊隨機破解其中一個帳戶」
由於重設密碼連結有限制猜測速率所以很難針對一個帳號從 000000 猜到 999999,
所以他只是選定了一個數字如「666666」,
然後基本上每個帳戶都只猜「一次」,
理論上兩百個帳戶最少會有一個帳戶剛好用到他猜的數字。
以 Facebook 的角度來說使用 6 位數並不是原因所在,
而是「幾千個 Proxy 就能幫兩百萬個帳戶發起重設密碼」請求這件事,
只要限制好單一 IP 發起重設密碼請求的速率這種攻擊應該就會變得很難實現。
用ddos的方式,就不受單一IP限制了,很好實現的
@Alec
用 Proxy 和 DDoS 基本上是一樣的原理喔,如果有兩百萬個 IP 可以發動攻擊那我也服了。