摘要

此技術報告深入分析 Progress ShareFile Storage Zone Controller (SZC) 5.x 分支中發現的關鍵漏洞鏈。該漏洞鏈包含一個驗證繞過漏洞 (CVE-2026-2699) 和一個遠端程式碼執行漏洞 (CVE-2026-2701)。透過在管理介面中利用「重新導向後執行」(Execution After Redirect, EAR) 的缺失,未經驗證的攻擊者可以存取受限制的設定服務。接著利用此存取權限來操控儲存設定與加密機密,並透過特殊的上傳機制來傳遞及執行任意程式碼。此研究聚焦於底層軟體架構、程式碼層級的缺失,以及導致完整系統遭到入侵的系統化攻擊程序 [1]

ShareFile SZC 的 security-by-obscurity 徹底失敗:EAR 漏洞讓無驗證攻擊者直達管理介面 | 資訊安全新聞

系統架構與背景

Progress ShareFile 是一個協作式檔案分享解決方案,其中包含一個名為 Storage Zone Controller (SZC) 的內部部署元件。SZC 扮演客戶自管閘道器的角色(customer-managed gateway),讓組織能夠將檔案儲存在本地基礎設施中,同時利用 ShareFile SaaS 介面進行管理,以維持資料主權。SZC 5.x 分支是使用舊版 ASP.NET 框架建置,並代管於 Internet Information Services (IIS) 中。

SZC 架構設計用來處理安全檔案傳輸、驗證與政策強制執行。它扮演雲端管理介面與本地儲存後端之間的橋樑,後端可設定為 local filesystem、SMB 伺服器或雲端資料容器(Cloud bucket storage)。這種混合模式對於有嚴格法規要求或資料主權考量的組織特別有吸引力。然而,5.x 分支中對舊版 ASP.NET 元件的依賴,帶來了在更現代、在 .NET Core 的 6.x 分支中不存在的特定安全風險。

下圖說明了典型的部署架構以及暴露於網際網路的攻擊面:

graph LR User((Unauthenticated Attacker)) -->|HTTP/HTTPS| IIS[IIS Web Server] subgraph SZC_Internal [Storage Zone Controller 5.x] IIS -->|Routing| ConfigService["/ConfigService/Admin.aspx"] IIS -->|Routing| UploadHandler["/upload.aspx"] ConfigService -->|Logic| AdminDLL[ConfigService.Admin Class] UploadHandler -->|Logic| UploadDLL[ShareFile.Storage.Upload Class] end SZC_Internal -->|Storage| LocalFS[(Local File System / SMB)]

攻擊面主要由多個 ASPX、ASHX 與 ASMX 端點構成。雖然許多端點受到驗證過濾器保護,但此研究發現在 5.x 分支中這些安全控制的實作存在關鍵缺口。具體來說,原定只能從 local host 存取的管理設定介面,因不當的重新導向處理而被遠端未經驗證的使用者存取 [1]

CVE-2026-2699:透過 EAR 繞過驗證

攻擊鏈的第一個漏洞是歸類為 CWE-698:Execution After Redirect (EAR) 的驗證繞過 (CVE-2026-2699)。這個缺失發生在網頁應用程式執行重新導向時,卻未能終止目前 script 的執行。在 ShareFile SZC 中,端點 /ConfigService/Admin.aspx 被發現有這樣的行為。

EAR 技術分析

當未經驗證的請求被傳送至 /ConfigService/Admin.aspx 時,伺服器會回應 302 Found 狀態碼,並在 Location header 中指向登入頁面。然而,伺服器也會在回應主體中包含管理面板的完整 HTML 內容。標準瀏覽器會跟隨重新導向,但攻擊者可以攔截回應並直接與管理功能互動。這是典型的「Security-by-obscurity」的失敗範例,開發者假設重新導向就能防止用戶端看到回應主體。

ConfigService.Admin 類別中 Page_Load 方法的反編譯 C# 程式碼顯示了缺乏執行終止的狀況:

  1. // Decompiled from ConfigService.dll
  2. protected void Page_Load(object sender, EventArgs e)
  3. {
  4. this._logger.LogDebug("Page_Load Enter", Array.Empty<object>());
  5. // Check if the request is from localhost
  6. if (!Request.IsLocal)
  7. {
  8. // Redirect unauthenticated remote users
  9. Response.Redirect("/ConfigService/Login.aspx?callerpage=Admin");
  10. // CRITICAL FLAW: Missing Response.End() or return statement here.
  11. // The code below continues to execute and render the page content.
  12. }
  13. this.Master.ActionHeader = "Select ShareFile StorageZone";
  14. this.PopulateAdminPanel(); // This method populates sensitive data into the response
  15. }

透過利用此 EAR 漏洞,攻擊者可以存取 /ConfigService/api/StroageZoneConfig 端點(注意原始程式碼中的拼字錯誤)來取得並修改系統設定。這包括設定新的「Passphrase」的能力,這是一個用於加密與簽署多種系統參數的關鍵 secret。能夠控制這個 passphrase 是解鎖攻擊第二階段的關鍵 [1]

CVE-2026-2701:遠端程式碼執行

第二個漏洞 CVE-2026-2701 是一個遠端程式碼執行缺失,它利用透過 CVE-2026-2699 取得的管理存取權。SZC 透過 upload.aspx 提供一個支援 ZIP 檔案解壓縮的上傳機制。透過操控設定,攻擊者可以授權自己執行上傳並指定解壓縮路徑。

攻擊鏈與加密操控

CVE-2026-2701 的利用是一個多步驟的程序,需要深入理解 SZC 內部的加密機制。攻擊者必須先利用驗證繞過來將系統 passphrase 重設為一個已知值。這讓攻擊者能夠解密通常受到保護的敏感系統 secrets。

其中一個 secret 是 Zone Secret ,它被以加密格式儲存在設定的 TempData2 參數中。解密程序使用攻擊者控制的 passphrase 和一個 hardcoded salt 值。一旦取得 Zone Secret,攻擊者就可以為任意的上傳請求產生有效的 HMAC 簽章。

步驟 動作 技術細節
1 重設 Passphrase 使用 CVE-2026-2699 透過 Admin API 將 passphrase 設為已知值。
2 洩漏 Zone Secret 從設定 API 取得加密的 TempData2 參數。
3 解密 Secret 使用已知的 passphrase 和 hardcoded salt p3510060xfZ2s9 來解密 TempData2
4 簽署上傳請求 使用解密後的 Zone Secret 為上傳請求計算 HMAC-SHA256 簽章。
5 執行 RCE 上傳包含網頁 shell 的 ZIP 檔案,並觸發解壓縮到 webroot。

上傳請求需要一個有效的 HMAC 簽章(參數 h )。以下 pseudocode 展示了簽章計算方式:

  1. // Pseudo-code for HMAC calculation
  2. // The zoneSecret is the core of the authentication for uploads
  3. string zoneSecret = Decrypt(tempData2, userPassphrase, "p3510060xfZ2s9");
  4. // The request path must be signed to prevent tampering
  5. string requestPath = "/upload.aspx?id=...&uploadid=123&bp=test&accountid=1&exp=1712650000";
  6. string hmacSignature = HMAC_SHA256(requestPath, zoneSecret);
  7. // Final URL: /upload.aspx?id=...&uploadid=123&bp=test&accountid=1&exp=1712650000&h=[hmacSignature]

upload.aspx 處理器會處理請求、驗證 HMAC,並且如果存在 unzip=true 參數,就會解壓縮上傳檔案的內容。透過將儲存路徑設定為 IIS webroot 內的某個位置,攻擊者可以放置一個 .aspx 網頁 shell 並達成程式碼執行。這繞過了所有預期的安全邊界,因為攻擊者現在是以 IIS worker 程序的權限在執行程式碼 [1]

影響與風險評估

此漏洞鏈的影響非常嚴重。成功利用此漏洞允許遠端、未經驗證的攻擊者完全控制 Storage Zone Controller。這包括存取、修改或刪除 zone 中儲存的所有檔案,以及在組織網路中橫向移動的能力。由於 SZC 經常用來儲存高度敏感的企業資料,資料外洩與勒索軟體攻擊的潛在風險相當可觀。

此外,這些控制器在公共網際網路上的普遍存在(估計約有 30,000 個實例)使其成為廣泛的威脅。watchTowr Labs 對該攻擊鏈的詳細公開揭露降低了潛在攻擊者的進入門檻,增加了近期內被積極利用的可能性。過往的前例(如 MOVEit 和 GoAnywhere 的資料外洩事件)證明,檔案傳輸解決方案是大規模網路攻擊的主要目標 [2]

修復與結論

此漏洞鏈突顯了 legacy 程式庫的危險性,以及在網頁應用程式中正確執行流程控制的重要性。Progress Software 已在 Storage Zone Controller 5.12.4 版中解決這些問題。針對 CVE-2026-2699 的修復方式是在重新導向之後加入明確的終止呼叫,確保一旦觸發重新導向就不會再執行任何後續程式碼。針對 CVE-2026-2701,修復方式包括強化對上傳參數的驗證,並限制 ZIP 檔案只能解壓縮到授權的目錄。

強烈建議使用客戶自管 ShareFile 部署的組織立即升級到 5.12.4 或更新版本。除了修補之外,組織也應考慮增加額外的安全層,例如對管理介面實施限制 IP 的存取控制(IP-based access control),以及加強對檔案上傳活動的監控。轉移到更現代化的 6.x 分支(使用 .NET Core,不存在這些特定的 legacy 缺失)也是改善 ShareFile 部署安全狀態的建議長期策略。