攻擊者開始利用 MFA 漏洞在內的高級手段繞過多因素身份驗證
研究人員最近發現了一種令人不安的攻擊趨勢,這些攻擊專門設計來繞過多因素身份驗證(MFA)的保護機制。這些高級技術利用了身份驗證工作流程中的漏洞,而非身份驗證因素本身,從而使攻擊者能夠在啟用 MFA 的情況下,仍能未經授權訪問受保護的賬戶。
此次攻擊標志著威脅行為者能力的重大演進,挑戰了 MFA 幾乎完全防止未經授權訪問的普遍假設。
多因素身份驗證已成為網絡防御的基石,要求用戶通過多種方式驗證身份——通常是將密碼與發送到移動設備或硬件令牌的一次性代碼結合使用。這種分層方法傳統上為攻擊者設置了巨大的障礙,因為同時破壞多個身份驗證因素被認為是非常困難或資源密集的。
然而,Quarkslab 的研究人員發現了一種特別復雜的繞過技術,該技術操縱的是身份驗證過程本身,而不是試圖竊取或破壞二次驗證因素。他們的分析表明,攻擊者利用的是系統驗證和跟蹤 MFA 完成狀態時的時序漏洞和實施缺陷,從而有效地讓應用誤以為二次驗證已成功完成,而實際上并沒有。
這些攻擊的影響尤其令人擔憂,因為與傳統暴力破解相比,它們通常留下的取證證據極少。許多受害者只有在發現異常賬戶活動時才會察覺被入侵,而此時敏感數據可能已經被竊取。安全團隊發現這些攻擊尤其難以檢測,因為它們在安全日志中顯示為合法的身份驗證流程。
會話令牌操縱分析
最令人擔憂的技術涉及在驗證流程中精心定時地操縱身份驗證響應數據。當用戶發起身份驗證時,主要因素(通常是密碼)會生成一個初始會話令牌,該令牌隨后處于掛起狀態等待二次驗證。攻擊者發現了一些方法,可以在 MFA 挑戰完成之前攔截并修改該令牌的狀態標志。
正常的身份驗證流程與被繞過驗證步驟的受攻擊流程形成鮮明對比。攻擊通常使用 JavaScript 代碼注入來修改身份驗證響應,如下面的簡化示例所示:
const bypassMFA = async (authResponse) => {
let responseData = await authResponse.json();
if (responseData.status === "awaiting_verification") {
responseData.auth_status = "verified";
responseData.mfa_complete = true;
responseData.session_flags += "|2FA_VERIFIED";
return new Response(JSON.stringify(responseData), {
status: 200,
headers: authResponse.headers
});
}
return authResponse;
}
該代碼片段展示了攻擊者如何攔截身份驗證響應并修改關鍵狀態標志,以錯誤地表明 MFA 驗證已成功完成。網絡流量顯示,修改后的響應正是在身份驗證序列中被注入的時刻。
這種漏洞主要影響在身份驗證服務器和資源服務器之間實現單獨會話狀態跟蹤的系統。這種架構決策在網絡安全延遲期間或發生特定錯誤條件時,形成了一個可被利用的安全缺口。
安全專家建議組織在整個會話周期內持續驗證 MFA 狀態,而不僅僅是在初始登錄時,并采用無法在未檢測到的情況下被修改的加密簽名令牌。在系統更新以解決這些漏洞之前,用戶應保持警惕,注意啟用 MFA 后可能出現的異常賬戶活動,這可能表明未經授權的訪問。