從「可預測的網址參數」學到的一課

來源:http://michael-coates.blogspot.com
作者:Michael Coates
內文:
A Lesson in Predictable Identifiers

使用者授權(Authorization)的相關問題可能很複雜。特別是你想授權之前,卻沒有做身分鑑別(Authentication)。作者遇到類似的情況,關於 Oink 決定關閉他們的服務,並提供工具讓使用者下載自己的資料。(Oink 介紹)

匯出資料工具的流程如下:
  1. 使用者登入,然後開始匯出。
  2. 使用者收到一封email,內容包含下載個人資料的連結。
  3. 使用者在48小時內點選連結,下載資料。
email的截圖。來自CRISTINA CORDOVA
而問題出在第二步,帶有個人資料的連結─這個連結是可預測的,他的格式是"<username>-export.zip"。所以,你剛好手上要是有一群使用者帳號的清單,就可以寫個小程式去下載大家的資料。



實作小程式之前,你會遇到一些限制,首先受害者的帳號必須已經啟用匯出工具,而且你必須在48小時內下載。

聲明一下,Oink網站的資料都是完全公開的,所以這並不是所謂的保密資料。然而即使這些資料技術上都是公開的,這樣的突發狀況仍使得使用者感到驚訝,並開始懷疑整體的資料控制,進而影響網站的聲譽。

How could this system been designed better?

你可以考慮以下的方法:
  1. URL須包含非常大的亂數。這可避免攻擊者猜中正確的網址。
  2. 強制使用者需要先驗證身分之後才能下載。
假使方法2,因為某些因素無法成為我們的解決方案(其實這是最簡單也最有效的)。那麼方法1 的亂數能夠單獨的提供足夠的安全性嗎?

...恩是可以的,假使此亂數夠大的話。

Why is a large nonce good enough?

你當然可以暴力破解這些亂數。但假使這些亂數足夠大,而且有效時間相對的短,你將沒有任何機會破解。提醒你,我們其實相當依靠亂數當作 Session ID,以驗證使用者的合法性。假使暴力破解Session ID 是很常見的,那攻擊者就不會花很多精力在如何侵入使用者、應用程式或是瀏覽器了。

參考資料
----
http://michael-coates.blogspot.com/2012/03/lesson-in-predictable-identifiers.html
http://www.cristinajcordova.com/2012/03/oinks-export-tool-data-privacy-breach-download-the-data-of-any-user-5/
http://www.bnext.com.tw/article/view/cid/64/id/22462

留言

這個網誌中的熱門文章

資安JAVA(十一):X-XSS-Protection

資安JAVA(十):X-Content-Type-Options

以 SharpPcap 實作可收聽封包的 C# 程式