GitHub遭遇Mass Assignment漏洞攻擊

fmms 12年前發布 | 5K 次閱讀 Github

作者 Jonathan Allen 譯者 曹如進

GitHub 最近遭遇了一場 Ruby on Rails 漏洞攻擊,該漏洞被稱為 mass assignment。此漏洞被認為不僅影響了大量基于 Ruby 的網站,還對使用 ASP.NET MVC 和其他 ORM Web 框架的網站造成了破壞。

Mass assignment 用于將表單數據映射為對象,它在單獨使用時是一項安全且高效的技術。這與 ASP.NET 中的數據綁定異曲同工,并且后者在單獨使用時也同樣很安全。其實,真正的漏洞是由于粗心大意地混用了 mass assignment 和 ORM。

考慮這樣的場景:數據庫包含一張“用戶”表,其中混雜了敏感和非敏感數據,例如可能有些列代表用戶顯示姓名、電子郵件地址以及是否為管理員。開發人員希望創建一個頁面修改顯示姓名及電子郵件地址。為了達到這個目的,他們使用 Rails 或 MVC 腳手架自動生成了域對象,或許還有 view 本身。接下去,他們將用戶無法編輯的字段,如“是否為管理員”復選框從 view 中移除。

如果開發人員忘記將 IsAdministrator 屬性從域對象中移除,那么一個安全漏洞便就此產生。如果他們沒有進行移除,那么 mass assignment 或數據綁定器可能會陷入某種圈套,它們會在合法改動中更新不該修改的屬性。接下去,當記錄保存時,ORM 庫會悄無聲息地存儲新值。

有三種靠譜的方案可以解決該問題:

  • 標記不可被更新的屬性,讓 mass assignment/數據綁定器將其忽略;
  • 徹底清除業務對象中實際不需要的屬性;
  • 創建模型專門接受更新請求,并手工將它們映射到 ORM 對象或存儲過程調用。

應當指出,這并不是一個新的漏洞。我們可以很容易地找出4、5年前關于 mass assignment 的警告,例如標題為“Mass Assignment,黑客們的最愛”以及“不想被黑就使用 attr_protected”的文章。這次唯一不同的是受害站點知名度較高。

查看英文原文:http://www.infoq.com/news/2012/03/GitHub-Compromised

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!