上週GitLab針對社群版(CE)及企業版(EE)發布安全更新,修補重大層級的資安漏洞CVE-2025-25291、CVE-2025-25292(4.0版CVSS風險評分為8.8),這些漏洞出現於名為ruby-saml的程式庫,發現此事的GitHub,也在同一天透露這兩項漏洞的細節

針對這些漏洞的處理過程,最初GitHub是在去年11月透過漏洞懸賞專案獲報相關漏洞,然後向ruby-saml維護者通報此事,並進行一連串的嘗試修補及反覆驗證,最終1.18.0修正版ruby-saml於3月12日發布。他們強調,這項漏洞也同時影響omniauth-saml等其他運用ruby-saml的程式庫,也必須調整引用新版本的ruby-saml來避免曝險。

而對於漏洞形成的原因,GitHub指出起因是ruby-saml在簽章驗證當中,採用了兩種不同的XML解析器REXML、Nokogiri,一旦攻擊者能使用相同的XPath查詢,觸發上述解析器處理不同的簽章元件,就有機會讓ruby-saml驗證錯誤的簽章,藉由特定的解析器差異(Parser Differential)達到繞過身分驗證的目的。

GitHub經過4個環節的研究,找到這些身分驗證繞過漏洞。首先,他們檢視ruby-saml程式碼,發現運用兩款不同的XML解析器。

接著,研究人員評估如何造成解析器差異。下一步則是在解析器實際運作過程中,找出真正的解析器差異弱點,最終透過這項弱點產生會造成危害的手法。

而對於漏洞緩解,ruby-saml開發團隊也費了一番心思,因為並非移除其中一個解析器來避免解析器差異的情況,若真的這麼做,會引發相容性的問題,該團隊決定從更為根本的因素下手:切斷驗證雜湊值及驗證簽章之間的關聯,從而促使漏洞無法利用的目的。

熱門新聞

Advertisement