MojoX::Authentication 爆 SAML 簽章驗證漏洞,攻擊者可偽造斷言繞過登入
oss-security mailing list · 2026-09-06
Perl 的 MojoX::Authentication 模組在 0.006 版之前存在 SAML 身份驗證繞過漏洞,編號 CVE-2026-86304。問題出在其 SAML2 模型建立驗證物件時沒有指定信任錨點,導致伺服器可能接受攻擊者自己簽署的斷言(assertion)。此漏洞已於 2026-09-06 透過 oss-security 郵件列表公開,同日釋出的 0.006 版已修補。
漏洞機制
MojoX::Authentication::Model::SAML2 的 parse_assertion 函式在呼叫 Net::SAML2::Binding::POST->new 時,沒有帶入 cacert、cert_text 或 anchors 參數,等於沒有建立任何信任錨點。取得回傳的 XML 後,程式改用 IdP 的簽章憑證呼叫 Net::SAML2::Protocol::Assertion->new_from_xml 做驗證。
問題在於 Net::SAML2 0.86 之前的版本,這個憑證參數只用來保護「已加密」的斷言;對於未加密的斷言,簽章驗證其實是拿回應本身夾帶的憑證去驗證自己。攻擊者只要先開始一次正常的 SAML 登入流程,再送出一份用自己憑證簽署、未加密的偽造回應,後續的 audience、InResponseTo 與時間戳檢查全部都可以由攻擊者自行滿足,於是任何 NameID 都能通過驗證登入。
受影響版本
MojoX::Authentication版本低於0.006- 搭配使用的
Net::SAML2版本低於0.86(即使升級到修補版本,若底層 SAML2 函式庫過舊仍可能受影響)
此漏洞分類為 CWE-347(加密簽章驗證不當),屬於可直接繞過身份驗證的高風險類別。
修補與緩解
建議直接升級 MojoX::Authentication 至 0.006 版,該版本同時要求搭配 Net::SAML2 0.88。若暫時無法升級整合模組,單獨把 Net::SAML2 升級到 0.86 以上也能讓驗證邏輯轉為嚴格模式:遇到未帶信任錨點的情況會直接讓 SAML 登入失敗,而不是誤判為驗證通過,等於是一種 fail-closed 的過渡緩解。
Apache Ant ftp/scp 任務現路徑穿越漏洞,惡意伺服器可覆寫任意檔案
dev@ant.apache.org 官方安全公告 · 2026-09-06
Apache Ant 專案於 2026-09-06 發布安全公告,指出內建的 <ftp> 與 <scp> 任務存在路徑穿越漏洞,編號 CVE-2026-78254,影響 1.2 到 1.10.17 全部版本。公告由 Ant PMC 成員 Stefan Bodewig 具名發出,問題最早於 2026-08-20 回報,本次為公開揭露日。修補版本為 1.10.18。
漏洞機制
Ant 的 ftp/scp 下載任務會信任遠端伺服器回傳的檔名,若檔名中夾帶相對路徑(例如上層目錄跳脫字元),下載結果就可能寫到目的目錄之外,並以執行 Ant 程序的使用者權限覆寫任意檔案。這屬於典型的路徑穿越(path traversal)問題,差別在於觸發點是「下載檔名」而非常見的「上傳路徑」。
公告特別點出兩種利用情境的門檻不同:使用 scp 任務或啟用 ftps 的 ftp 任務時,惡意伺服器還需要先繞過身份驗證檢查才能得逞;若使用未加密的一般 ftp,則只需要一個中間人(machine-in-the-middle)攻擊者就能注入偽造回應,門檻更低。
受影響版本
- Apache Ant
1.2至1.10.17(涵蓋所有具備 ftp/scp 任務的版本) - 修補版本:Apache Ant
1.10.18
修補與緩解
從 1.10.18 開始,ftp 與 scp 任務預設會擋下寫到目的目錄外的行為,官方公告同時保留一個選項讓少數依賴舊行為的建置腳本可以還原成先前的做法。除了升版之外,公告也建議:使用 scp 或 ftps 時不要關閉伺服器身份驗證;若專案還在用未加密的 ftp,應盡可能改用 ftps。
Perl Authen::SASL 的 DIGEST-MD5 實作可被重放攻擊繞過密碼驗證
oss-security mailing list · 2026-09-06
Perl 的 Authen::SASL 模組中,Authen::SASL::Perl::DIGEST_MD5 在 2.2100 版之前存在重放攻擊漏洞,編號 CVE-2026-86219。伺服器端的 server_step 沒有驗證客戶端回傳的 nonce 是否與自己發出的一致,攻擊者只要截獲一次成功的 qop=auth 交握,就能在之後對同一服務重放並直接登入。修補版本 2.2100 已於 2026-09-06 由 CPANSec 團隊與 TIMLEGGE 一同發布。
漏洞機制
server_start 每次都會產生新的 nonce 並寫入 challenge,但後續流程從未把客戶端回傳的 nonce 拿來跟原本發出的做比對。server_step 只是根據客戶端自己提供的參數重新算一次 digest,只要算出來的值跟客戶端夾帶的 nonce 對得上就會通過。
用來防止重放的計數表(nonce count)同樣是以客戶端提供的 nonce 為鍵值,且每個新的 server 物件都是從空表開始,因此一份被截獲的第一次回應(帶著 nc=00000001)永遠能通過計數檢查。這使得攻擊者不需要密碼,只要重放先前側錄到的完整回應,針對相同 service、host、realm 與使用者名稱送出,就能通過驗證,違反了 RFC 2831 第 2.1.2 節要求的重放防護設計。
受影響版本
Authen-SASL(含Authen::SASL::Perl::DIGEST_MD5)版本低於2.2100
此漏洞分類為 CWE-294(Authentication Bypass by Capture-replay)。
修補與緩解
修補提交 9433736 在 lib/Authen/SASL/Perl/DIGEST_MD5.pm 的 server_step 中加入 nonce 比對邏輯,只有客戶端回傳的 nonce 與伺服器發出的一致才會繼續驗證,否則直接拒絕,藉此補上 RFC 2831 要求的重放防護。同一提交也把測試套件 t/server/digest_md5.t 的案例數從 33 筆擴充到 38 筆,新增了「同一 nonce 重放應通過、不同 nonce 重放應被拒」等情境的驗證。建議所有使用 DIGEST-MD5 機制的應用直接升級至 Authen-SASL 2.2100。
原始來源:oss-security 郵件列表公告、修補提交 9433736、Authen-SASL 2.2100 發布頁