漏洞OAuth |如何在Web應用程序中實施安全授權

Anonim
漏洞OAuth |如何在Web應用程序中實施安全授權 2740_1

本文將處理眾所周知的OAuth漏洞。讀者還將學習如何在Web應用程序中實現安全和安全的授權。

OAuth是一種可靠的協議,但其安全程度主要取決於實施授權時的Web開發人員的認識。這使得這一主題對於信息安全專業人士來說非常重要。他們需要提供高度的對用戶帳戶保護。現在是時候熟悉有效的從業者,他們將有助於減少銷售OAuth的窮人的危險。

介紹

OAuth 2.0協議目前廣泛用於各種應用程序。使用它,與輸入用戶名和密碼的傳統方法相比,可用的方便用戶界面,更容易認證和授權。通過適當和深思熟慮的實現,OAuth協議將比傳統授權更安全,因為用戶不需要使用第三方應用程序與第三方應用程序共享他們的會計數據來訪問特定資源。用戶通常更願意使用他們的Google帳戶,Facebook或LinkedIn登錄,而不是每次需要在某些網站上註冊時創建新帳戶。因此,OAuth協議大大簡化了我們的生活。

通常,流行的OAuth服務提供商非常可靠。使用Google或Facebook帳戶登錄激發了一定的安全感,它是正確的。專家仔細測試了該協議。開發人員始終始終快速糾正所有可用的漏洞。但是,值得注意的是,完全安全的感覺可能是假的。

OAuth服務提供商留下了應用程序開發人員有很多原因,以應對其計劃的安全。事實上,最初受保護的OAuth服務在其安裝過程中不正確地實現,可以成為入侵者的簡單目標。此類預科,將導致用戶的個人數據盜竊。

接下來,您應該考慮實現OAuth協議的第三方應用程序中遇到的最常見的漏洞,以授權其用戶。必須記住,協議本身是安全可靠的。只有在不正確的實施之後,它變得容易受到黑客攻擊的影響。

OAuth使用引用標題盜竊盜竊

當應用程序請求代表OAUTH Server的用戶授權時,一個人收到代碼進入並發送回服務器以進行後續檢查。如果在工作期間,用戶將重定向到另一個頁面,則代碼將在HTTP請求的“推薦”標題中看到。因此,代碼將落在外部網站上,這將威脅在OAuth服務器上註冊的用戶數據。

注意:引用標題是一個HTTP查詢標題,它傳輸發送請求的URL主機。

為了軟化此漏洞的後果,開發人員必須確保其Web應用程序不包含任何HTML注入。如果檢測到注射,則攻擊者可以輕鬆將圖像標記設置為其Web服務器,並找到一種方法來重定向用戶。因此,他將有機會從HTTP請求的“推薦”標題中竊取代碼。

OAuth使用redirect_uri參數盜竊盜竊

該應用程序通過向OAuth Server發送請求來啟動授權過程:

https://www.example.com/signin/authorize ?[]&edirect_uri=httpps://demo.example.com/loginsuccessful。

查詢始終包含OAuth Server使用的“redirect_uri”參數,以在用戶同意後將令牌發送回應用程序。如果未控製或未被檢查此參數的值,則攻擊者可以輕鬆更改它並將請求重定向到其網站,在那裡它使用特殊程序來處理令牌並獲得對有限資源的訪問權限。

https://www.example.com/signin/authorize ?[]&edirect_uri=httpps://localhost.evil.com。

有時相似的URL被阻止。攻擊者可以將接收的數據重定向打開URL,如下所示:

https://www.example.com/oauth20_authorize.srf ?[.....[&edirect_uri=httpps://accounts.google.com/backtouthsubtarget?next=httpset://evil.com。

或這個:

https://www.example.com/oauth2/authorize?[...]%IRECT_URI = https%3a%2f%2fapps.facebook.com%2fAttacker%2f。

實現OAuth時,您永遠不會在白色列表中包含整個域。只有少數URL應該添加到“redirect_uri”未重定向到打開重定向的請求。

偽造跨線請求

當攻擊者成功使受害者單擊他的鏈接時,可能會出現intersight請求的偽造,從而生成他不會生成的請求。側線請求的偽造通常與CSRF令牌軟化,CSRF令牌與用戶會話相關聯。它有助於申請檢查發送請求的人的人員。 OAuth協議中的“狀態”參數用作CSRF令牌。

值得查看CSRF攻擊如何在OAuth上執行,並且可以使用“狀態”參數來減輕漏洞的影響。

黑客打開Web應用程序並啟動授權過程以使用OAuth訪問服務提供商。該應用程序請求服務提供商訪問需要提供的訪問。黑客將被重定向到服務提供商網站,您通常需要輸入您的用戶名和密碼以授權訪問權限。相反,黑客捕獲並阻止此請求並保存其URL。黑客以某種方式導致受害者打開此URL。如果受害者使用其帳戶進入服務提供商的系統,則其憑據將用於發出授權代碼。授權代碼交換對訪問令牌的訪問權限。現在申請中的黑客帳戶是授權的。它可以訪問受害者的帳戶。

那麼,如何使用“狀態”參數來防止這種情況?

應用程序必須創建一個基於源帳戶以某種方式的值(例如,使用用戶會話哈希鍵)。它不是那麼重要,主要是,該值是唯一的,並使用有關原始用戶的私人信息生成。它被分配給“狀態”參數。

重定向時,該值將發送到服務提供商。現在,黑客邀請受害者打開他保留的URL。

授權代碼已發出並在會話中發送回客戶端以及“狀態”參數。

客戶端基於會話信息生成參數值,並將其與“狀態”值進行比較,從授權請求發送到服務提供商。此值與查詢中的“狀態”參數不匹配,因為它僅基於關於當前會話的信息生成。結果,系統不接受所獲得的值。

在實現OAuth時檢測到的其他漏洞包括使用“redirect_uri”參數執行XSS(跨站點腳本)的能力,OAuth私鑰設置(有時可以在分解移動應用程序時可以獲得鍵)和授權代碼規則違規(何時授權代碼可以多次使用以發出多個訪問令牌)。這些漏洞不太常見於上述那些,但它不會使它們不那麼危險。開發人員應了解所有必要的實踐,以確保其Web應用程序的可靠運行。

翻譯文章的作者:Simon Saliba。

重要的!信息僅用於學術目的。請遵守立法,不適用此信息以獲取非法目的。

Cisoclub.ru上的更有趣的材料。訂閱我們:Facebook | VK |推特| Instagram |電報|禪|信使| ICQ新| YouTube |脈衝。

閱讀更多