GitLab 協作開發平台的修復更新已發布 - 17.9.2、17.8.5 和 17.7.7 - 修正了允許繞過 SAML(安全斷言標記語言)身份驗證的漏洞(CVE-2025-25291、CVE-2025-25292)。該漏洞存在於 Ruby 庫 ruby-saml 中,該庫實現 SAML 授權的功能。除了GitLab之外,該漏洞還影響其他使用該程式庫的專案。該問題已在 ruby-saml 1.18.0 和 1.12.4 更新中修復。
此漏洞是由於 ReXML 和 Nokogiri 解析器解析 XML 文件的方式存在差異,導致在處理同一個 XML 文件時產生具有不同結構的文件。問題在於 REXML 和 Nokogiri 以不同的方式處理 XML 文件中的數位簽名,這會導致出現一個簽名用於驗證而另一個簽名用於使用者證明的情況。此功能允許攻擊者使用 XML 簽章包裝 (XSW) 攻擊方法偽造任意內容的 SAML 回應,只要存取任何已簽署的 SAML 文件。
這個問題是由 GitHub 發起的一項舉措發現的,當時 GitHub 正在考慮遷移 GitHub 以使用該庫的可能性,並且為了測試安全性,組織了一場競賽(Bug bounty)來破解使用 ruby-saml 庫進行 SAML 身份驗證的測試環境。一位安全研究人員指出了這個漏洞。在調查該問題時,GitHub 的一名員工發現了另一種基於相同原理的攻擊方法。
隨後,GitLab 也確認有遭受攻擊的可能性。在 GitLab 環境中,此漏洞允許攻擊者存取任何正確簽署的 SAML 文件以作為其他使用者進行身份驗證,即為了繞過身份驗證並以其他用戶身份登錄,攻擊者必須已經有權訪問其中一個工作帳戶。
來源: opennet.ru
