安全研究人員發現,Salesforce行業云客戶很容易在部署配置中出現錯誤,這些錯誤配置可能導致攻擊者獲取加密客戶信息、會話數據、憑證和業務邏輯的訪問權限。
Salesforce行業云是一套面向垂直行業的解決方案套件,包含一個低代碼平臺,為金融服務和制造業等特定行業提供預構建的數字化轉型工具。
AppOmni公司SaaS安全研究主管Aaron Costello在一份報告中指出,低代碼工具面向非開發人員,可以讓"非技術用戶構建涉及關鍵系統和敏感客戶及內部數據的業務邏輯"。該報告識別出了Salesforce行業云OmniStudio低代碼產品存在的20個配置風險。
Costello指出:"但這種賦能在安全方面可能付出代價,大幅增加了客戶配置錯誤的風險。這種靈活性和隱式信任的結合意味著,客戶配置錯誤一個組件或忽略一個設置,就可能導致系統范圍的數據泄露。"
Costello和AppOmni識別出的風險包括:
- 低代碼組件默認不執行訪問控制檢查或不遵守加密數據字段 - 工作流代碼可被外部或未認證用戶執行 - 緩存機制可能導致訪問控制被繞過 - 開發不當的離線平臺應用程序可能導致API令牌被盜 - 敏感API密鑰和其他數據直接嵌入組件中,無需權限即可讀取 - 保存工作流的權限設置不安全
在AppOmni識別的20個配置風險中,Salesforce已針對5個問題發布了CVE和指導建議,其余風險則留給客戶自行避免。
Salesforce發布五個CVE
Salesforce發布的五個CVE涉及OmniStudio的FlexCards和數據映射器組件中發現的問題。Salesforce于5月19日就這些問題通知了客戶。
FlexCards從Salesforce和第三方源獲取數據用于工作流或在面向客戶的Web視圖中顯示,占了四個CVE:
- CVE-2025-43698:SOQL數據源忽略字段級安全(FLS),暴露記錄的所有字段數據 - CVE-2025-43699:"必需權限"字段可被繞過,因為檢查在客戶端執行 - CVE-2025-43700:未強制執行"查看加密數據"權限,向未授權用戶返回使用經典加密數據的明文值 - CVE-2025-43701:允許訪客用戶訪問自定義設置的值
數據映射器是FlexCards數據源的可選功能,也可作為后端集成程序(IProcs)的一部分用于服務器端數據處理。數據映射器讀取并轉換數據為適合API或Salesforce對象使用的格式。
Costello發現,四種數據映射器類型中的兩種——提取和渦輪提取——默認不強制執行FLS,并向沒有查看權限的用戶返回加密值的明文數據。Salesforce為此問題分配了CVE-2025-43697。
其他配置風險
另外15種配置模式也可能對Salesforce行業云客戶產生嚴重安全影響。
例如,數據映射器和IProc元數據使用稱為規模緩存的機制進行緩存,以加速未來執行。雖然用戶需要配置共享規則才能執行數據映射器或IProcs,但Costello發現,一旦被緩存,這些組件就可以被任何用戶執行,無論其權限如何。
Costello表示:"不幸的是,沒有配置設置允許在使用規模緩存的同時遵守數據映射器安全控制。經過徹底測試,包括啟用CheckCachedMetadataRecordSecurity OmniStudio設置,發現為數據映射器強制執行授權檢查的唯一方法是完全關閉規模緩存。"
集成程序也不遵守"必需權限"設置,也不遵守它們作為操作的一部分調用的任何數據映射器或其他IProc的共享規則。雖然Salesforce記錄了這種行為,但風險極高,因為用戶只需滿足初始IProc的訪問控制即可調用其流程中涉及的任何數據映射器或IProc。
另一個常見配置風險涉及HTTP操作,這些操作通常用作IProcs的一部分與外部API通信。如果這些API需要認證,組織可能決定將用戶名密碼或API訪問令牌直接硬編碼到IProc主體中。任何能夠執行IProc的人也能看到其中存儲的硬編碼值。在許多情況下,這包括可以在調試模式下執行IProcs的外部用戶甚至訪客用戶。
FlexCards和IProcs支持稱為遠程操作的數據源類型,允許執行Apex類。Apex是Salesforce類似Java的面向對象語言,用于在其平臺上構建應用程序。
當OmniStudio組件嘗試通過遠程操作執行Apex類時,請求通過BusinessProcessDisplayController Apex類代理,該類包含GenericInvoke2NoCont方法。此方法不驗證調用用戶是否有權訪問遠程操作。
Costello表示:"這導致授權繞過,可能允許內部和外部用戶執行強大的Apex代碼,這些代碼在不共享的情況下運行或未實現FLS等安全措施。這是默認行為。"
另一個可能產生敏感信息泄露的功能是數據包,它可以向其他Salesforce實例導出和導入組件。此功能以JSON定義文件的形式留下工件,這些文件可能包含依賴對象,如進一步包含數據映射器的IProcs。
Costello說:"對此對象具有讀取訪問權限且共享規則過于寬泛的用戶將能夠下載存儲在'附件'sObject中的數據包組件JSON文件。值得注意的是,由于這些附件僅依賴于對OmniDataPack的'Id'字段的訪問檢查,用戶無需對'OmniDataPack'sObject的任何字段級權限即可訪問這些文件,只需要對象和共享規則級別的權限。"
數據包也可能變成孤立的,例如,如果創建它們的用戶在過程中按下取消按鈕。在這種情況下,它們的附件被創建但從未被刪除。更糟糕的是,它們不會在OmniStudio的數據包清單頁面上列出,這使管理員更難發現它們。
當嵌入外部網站時,FlexCard或OmniScript組件需要訪問令牌來訪問Salesforce。這些令牌必須使用OmniOut應用程序創建。然而,網站終端用戶可以在瀏覽器中本地檢查API請求并提取此令牌,然后濫用。Costello建議公司在外部OmniStudio組件和Salesforce之間的通信中使用代理。
然而,當令牌本身嵌入已被泄露或存儲在GitHub等公共版本控制系統中的OmniOut代碼時,代理也無濟于事。此外,如果代理配置不當,在沒有驗證的情況下轉發請求,也可能引入風險,因為用戶可能嘗試篡改參數和值。
研究人員指出:"由于OmniOut通常依賴經過認證的Salesforce API,這個賬戶要求通過為OmniOut組件提供連接應用訪問令牌來滿足,該令牌將用于代表所有外部用戶發出請求。雖然詳述連接應用創建過程的Salesforce文檔中沒有明確說明,但組織絕不應為OmniOut生成綁定到系統管理員等特權賬戶的訪問令牌,這一點至關重要。"
最后,OmniScripts通過IProcs、數據映射器和FlexCards將多個后端操作結合在一起,具有稱為保存會話的功能,允許用戶保存進度并稍后返回腳本。生成此類會話時,會在OmniScript保存會話sObject中創建記錄,以及腳本輸入或返回的任何數據,直到被保存。默認情況下,這些保存的會話沒有過期時間。
研究人員發現:"雖然訪客和/或社區站點用戶無法保存自己的會話,但這并不阻止他們在被授予權限的情況下讀取其他用戶會話的數據,使這種攻擊向量成為內部和外部身份都可能利用的風險。"
緩解措施
對于Salesforce尚未修復的不安全配置,AppOmni在其論文中提供了緩解建議,包括應定期審計其對象、字段和共享規則配置的對象列表。該公司表示,將OmniStudio sObjects及其記錄的訪問級別降至僅必要級別是第一道防線。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.