未經驗證的存取會透過發佈執行個體URL公開信任存放區和內部中繼資料
如果Adobe Experience Manager (AEM)發佈執行個體上的Dispatcher篩選器過於寬容,未驗證的請求可能會公開信任存放區相關的資源、內部中繼資料和其他非公開路徑。 若要解決此問題,請檢閱並收緊Dispatcher篩選規則、明確拒絕存取敏感性端點,以及驗證精心編制的請求在到達發佈層級之前是否遭到封鎖。
說明 description
環境
在發佈執行個體前使用Dispatcher的Adobe Experience Manager (AEM)部署
問題/症狀
當AEM篩選規則過於寬鬆或未明確限制敏感路徑時,在Dispatcher發佈執行個體上會觀察到以下症狀:
- 某些發佈執行個體的URL可透過未經驗證的
GET請求存取,而不需要驗證、Cookie或特殊標頭。 - 成功的請求可公開信任存放區相關的資源、內部節點名稱、內容結構、設定相關的路徑和資產中繼資料。
- 有些精心設計的請求也允許存取通常應受限制的內部登入相關路徑。
範例URL:
https://www.example.com/etc/truststore.-1.json;x='.ico/x'— 可能公開信任存放區相關資訊https://www.example.com/etc/truststore/truststore.p12;x='.ico/x'— 可允許下載信任存放區憑證檔案https://www.example.com/.children.-1.json;x='.ico/x'— 可能會公開內部節點名稱、內容結構、設定相關路徑和中繼資料https://www.example.com/libs/dam/merge/metadata.css;x='.ico/x'?path=/content/dam/example-site/example-logo-32x32.ico— 可以透過MergeMetadataServlet公開資產中繼資料https://www.example.com/libs/granite/core/content/login.html;x='.ico/x'— 可允許存取通常應限制的內部登入相關路徑
錯誤/記錄檔輸出
沒有明確的錯誤訊息;問題是無意間暴露了內部資源。
原因
問題通常是由於Dispatcher篩選規則不夠嚴格,無法封鎖精心打造的請求,或無法存取發佈執行個體上的敏感內部路徑所導致。
解決方法 resolution
注意: Dispatcher篩選很重要,但它本身不是可靠的安全性界限。 發佈時的AEM存放庫ACL和端點限制必須維持為主要控制項,以Dispatcher/Apache/CDN規則作為深入防禦。
請依照下列步驟解決問題:
-
檢閱Dispatcher篩選器設定
- 開啟Dispatcher設定檔,例如
dispatcher.any。 - 找到
/filter或/filters區段。
- 開啟Dispatcher設定檔,例如
-
新增規則,在應用程式不需要包含分號或其他可疑URL模式的要求時拒絕這些要求。
code language-none /0xxx { /type "deny" /url "*;*" }此規則會封鎖URL中包含分號的任何要求,而分號通常用於略過篩選的精心編制要求。
-
限制對敏感路徑的存取
-
為敏感路徑(例如
/etc/truststore、/libs/dam/merge和/libs/granite/core/content/login.html)新增明確的拒絕規則。 -
範例:
code language-none /0xxx { /type "deny" /url "/etc/truststore*" } /0xxx { /type "deny" /url "/libs/dam/merge*" } /0xxx { /type "deny" /url "/libs/granite/core/content/login.html*" }
-
-
驗證更新的設定
- 將更新的Dispatcher設定部署至所有發佈執行個體。
- 重新測試先前公開的URL,並確認它們現在會傳回封鎖的回應,例如
404或另一個根據您的設定預期的拒絕回應。
-
檢閱發佈層級強化
- 確認發佈時無法匿名存取敏感資源。
- 檢閱內部端點的AEM許可權和servlet曝光。
- 儘可能偏好使用允許清單型Dispatcher模型,以便只公開已知的必要路徑。
相關閱讀
recommendation-more-help
experience-cloud-kcs-help-kbarticles