Chrome 開發人員工具如何協助防範自我 XSS 攻擊

Wolfgang Beyer
Wolfgang Beyer

什麼是自我 XSS 攻擊?

Self-XSS 或自我跨網站指令碼攻擊是一種社交工程攻擊,誘騙你在網路瀏覽器中執行惡意程式碼。一般的 XSS 攻擊仰賴網頁應用程式中的漏洞,讓攻擊者得以插入惡意程式碼,Self-XSS 攻擊必須仰賴您自己的潛在程式碼執行動作。

Self-XSS 攻擊通常涉及攻擊者,誘騙你複製惡意程式碼並貼到瀏覽器的開發人員工具控制台中。攻擊者通常會透過承諾提供某種獎勵來達成這一點。可能是:

  • 承諾代碼可讓你使用隱藏功能或虛擬獎勵。
  • 假裝程式碼是安全性測試或錯誤修正。
  • 承諾程式碼會入侵網站來牟利。

當您執行程式碼後,攻擊者便可取得您的帳戶控制權。攻擊者可能會藉此:

  • 竊取姓名、地址和信用卡號碼等個人資訊。
  • 以您的名義張貼未經授權的訊息或留言。
  • 控管您的社群媒體帳戶。
  • 將惡意軟體散佈給其他使用者。

Chrome 開發人員工具如何因應自我 XSS 攻擊?

讓使用者將程式碼貼入開發人員工具,然後執行程式碼可能會有風險。也是 Chrome 開發人員工具的其中一項核心功能。因此,我們必須在減少潛在的自 XSS 攻擊時,找到平衡點,不要妨礙開發人員執行網站偵錯作業。

開發人員通常不會複製網路上某些位置找到的程式碼、貼到開發人員工具並執行,不必先快速查看程式碼的用途。大多數開發人員都相當瞭解,在網路不易執行的程式碼中執行程式碼,可能會發生安全性風險。

Chrome 開發人員工具的信任,是讓開發人員瞭解自己的做法。我們不希望使用者在複製及貼上程式碼時,放慢速度或分心。

我們認為非開發人員非常容易遭受自我 XSS 攻擊。為了保護您,我們認為當您從事有安全疑慮的行為時,允許中斷作業,而且有利於中斷作業。當 Chrome 開發人員工具偵測到有經驗的使用者嘗試將程式碼貼到開發人員工具,就會停止並顯示警告訊息。

開發人員工具何時會顯示 self-XSS 警告?

開發人員工具會根據使用者個人資料的控制台記錄,判斷是否要顯示自我 XSS 警告。

如果你的設定檔在控制台記錄中至少有 5 個項目,開發人員工具就不會出現任何警告或彈出式視窗。控制台記錄會列出您在控制台中輸入及執行的指令清單。這些指令是將遊標移到控制台並重複按下向上鍵時顯示的指令。

Self-XSS 警告的樣子為何?

有經驗的使用者嘗試將程式碼貼到控制台時,這個動作會遭到封鎖,Console 會改為顯示警告。

控制台中的 self-XSS 警告。

您可以覆寫這個警告並啟用貼上功能,但必須輸入「允許貼上」。

當有經驗的使用者將程式碼貼入開發人員工具程式碼編輯器 (例如「Sources」面板) 時,使用者體驗會大同小異。您會看到強制回應對話方塊,而不是警告。

「來源」面板中的 self-XSS 互動視窗對話方塊。

同樣地,光是關閉這個對話方塊並不足以啟用貼上功能。如要覆寫警告,您必須在輸入欄位中輸入「允許貼上」。

這是一次性設定嗎?

是的,一旦決定允許貼上,就不會再出現自助式 XSS 警告。

我們希望這能在實用性與幹擾之間取得良好取捨。透過增加阻力,我們可以提高閱讀警告的可能性,進而降低自助式 XSS 攻擊成功的可能性。

Chrome 開發人員工具會繼續設定旗標,指定是否要在 Chrome 設定檔中顯示自 XSS 警告。因此,如果您建立新的設定檔,並立即開始將程式碼貼到開發人員工具,則系統會封鎖貼上內容,並改為顯示 self-XSS 的警告。

是否可以針對測試自動化功能停用該功能?

那自動化測試呢?許多測試工具會為每次測試建立新的暫存設定檔。因此,如果您使用開發人員工具來偵錯自動化測試,系統會先禁止貼入控制台

如要規避這個問題,請執行下列任一操作:

  • 使用 Chrome for Testing,包括各種專為測試和自動化作業設計的 Chrome。Self-XSS 警告已關閉。

  • 至於其他 Chrome 發布版本,請將 --unsafely-disable-devtools-self-xss-warnings 指令列標記傳遞至 Chrome,即可完全停用 self-xs 警告對話方塊。

結論

您認為這項可緩解自我 XSS 攻擊的策略為何?如有任何意見或建議,歡迎對這項錯誤提供意見,或使用下列任一方法與我們聯絡。

特別是如果您處理的網站透過控制台記錄警告自我 XSS 攻擊,我們很樂意和您談談我們統一採取的措施,或評估自我 XSS 緩解措施的影響。

下載預覽頻道

建議您使用 Chrome CanaryDevBeta 版做為預設的開發瀏覽器。透過這些預覽版本,您可以存取開發人員工具中的最新功能、測試最先進的網路平台 API,以及找出網站的問題,以免使用者發現問題。

與 Chrome 開發人員工具團隊聯絡

請使用下列選項,討論貼文中的新功能和異動,或與開發人員工具相關的其他事項。

  • 歡迎透過 crbug.com 提出建議或意見。
  • 在開發人員工具中,依序點選「更多選項」圖示 更多   >「說明」 >「回報開發人員工具問題」,回報開發人員工具問題。
  • 前往 @ChromeDevTools 張貼 Tweet。
  • 歡迎在「開發人員工具」推出「最新消息」YouTube 影片或「開發人員工具秘訣」YouTube 影片留言。