CICS 系統支援全球一些最敏感、容量最大的交易處理環境。從銀行、保險到物流和國防,這些平台處理的工作負載不容許任何安全疏失。雖然正常運行時間通常最受關注,但 CICS 應用程式的結構引入了 隱藏的風險 在例行審查中很容易被忽略。
許多此類風險源自於遺留程式碼。嵌套的 COBOL 模組、事務程式綁定、動態程式呼叫以及重複使用的 commarea 可能會造成 漏洞 這些缺陷從表面上是無法察覺的。常見範例包括未經驗證的終端存取、XCTL 或 LINK 指令的濫用,以及透過錯誤的交易路由授予的權限提升。這些缺陷可能在生產環境中存在數年而不會觸發警報。
靜態分析 提供了一種結構化的方法,可以在這些問題被利用之前識別它們。但與 Web 或 API 應用程式不同,掃描 CICS 工作負載需要更深入的檢查。分析師必須追蹤跨多個程式層級的控制流,了解資料在共享記憶體中的移動方式,並偵測特定於大型主機事務行為的模式。
本文重點在於如何在 CICS 環境中應用靜態分析來發現和緩解安全漏洞。文中概述了需要尋找的高風險結構,展示瞭如何解讀 COBOL 程式碼中的事務邏輯,並為需要準確深入審查大型遺留系統的工程師提供了指導。目標是幫助團隊在無需猜測或乾擾的情況下保護其事務層。
了解 CICS 事務攻擊面
CICS 事務不只是程式化的工作單元。它們深深嵌入到存取控制、使用者身分、資源授權和會話完整性中。許多大型主機系統依賴數十年前的設計模式,其中安全執行是隱含的,而不是明確的。這帶來了一些風險,這些風險在測試甚至合規性審計中經常被忽略。
此層級的靜態分析首先要映射控制權的傳遞位置、輸入的處理方式以及在特定執行上下文中哪些路徑可存取。即使已經通過滲透測試的系統,也可能存在與錯誤路由或權限過高的交易流相關的漏洞。
EXEC CICS 呼叫中的隱藏漏洞
一個常見的弱點是動態使用 EXEC CICS LINK, XCTL, 或者 RETURN 無需驗證呼叫的來源或上下文。當程式連結鬆散,且程式名稱由外部提供或動態建構時,惡意輸入可能會引導執行指向具有提升權限的模組。
實際上,這可能看起來像:
EXEC CICS LINK PROGRAM(PROG-NAME) COMMAREA(COMM-AREA) LENGTH(COMM-LEN) END-EXEC
If PROG-NAME 是根據用戶提供的值構建的,或者是從沒有嚴格驗證的表中映射的,未經授權的用戶可能會調用不應暴露的敏感程序。
靜態分析必須偵測這樣的路徑,特別是在以下情況:
- 程序名稱由連接或屏蔽的值構成
- 未針對允許或預期目標實施回退檢查
- 接收程式無需進一步驗證權限即可運行
SVC 和儲存控制升級模式
某些基於 SVC 的呼叫或透過巨集指令存取的內部服務例程可能允許透過記憶體操作進行升級。不當使用 ADDRESS, ASSIGN或者當任務級安全上下文未正確執行時,直接存取終端資料塊可以繞過安全措施。
典型的紅旗型態包括:
- 從原始輸入分配終端 ID 或任務編號
- 使用
EXEC CICS ADDRESS TCTUA或等效調用後直接寫入 - 基於會話狀態的切換控制,無需角色驗證
熟悉終端結構和 CICS 內部的攻擊者可以利用這些存取點來提升權限或註入非預期的命令。
識別這些漏洞不僅需要掃描 CICS 命令,還需要解決跨記憶體分配的資料沿襲、檢查控制參數的來源以及標記不安全或未經身份驗證的上下文值的使用。
CICS 環境中的靜態分析範圍
CICS 環境中的靜態分析必須超越基本的語法或關鍵字偵測。分析師不僅需要了解程式碼結構,還需要了解事務模型、程式連結、資料流和權限邊界。全面的評估應該反映使用者、終端和應用程式如何透過共享記憶體和鍊式執行邏輯進行互動。
這種程度的檢查非常複雜,尤其是在處理幾十年前編寫並由多個團隊長期維護的應用程式時。程式通常依賴非結構化的控制流程、動態通訊區域使用和重複使用的程式 ID,所有這些都模糊了權限的起始和終止位置。
分析 COBOL-CICS 源流的信任邊界
在現代應用程式環境中,信任邊界通常由諸如前端 UI 和 API 之間的層級定義。在 CICS 中,信任邊界通常是隱式的,隱藏在程式連結內部。靜態分析必須追蹤哪些程式將控制權傳遞給其他程式、輸入從何處進入系統以及該輸入的來源是否可信。
例如,以登入交易開始的鏈條可能會經過五個或更多程序來傳遞控制權。如果其中一個程式在未重新驗證的情況下接受了新的使用者輸入(例如,透過更新的commarea段),則信任邊界將被破壞。靜態分析應該標記這些轉換點以供審查。
需要檢查的關鍵面向包括:
- 外部資料進入執行路徑的入口點
- 未驗證呼叫者而發生的 LINK 或 XCTL 調用
- 執行從已認證流程切換到未認證流程的區域
偵測硬編碼憑證和權限提升邏輯
在快速開發或緊急修補過程中,有時會引入硬編碼的安全性令牌、使用者 ID 或 APPLID。這些值可以覆寫標準存取控制,或在實際身份驗證失敗時允許回退存取。
例如,如下 COBOL 段:
IF USER-ID = 'SECADMIN' THEN
MOVE 'Y' TO AUTH-FLAG
END-IF
表面上可能看起來並不危險,但如果 USER-ID 可能會受到外部影響或在其他程序中重複使用,從而產生持續的風險。
靜態分析引擎應該搜尋:
- IF 語句或賦值中的安全敏感值
- 無需驗證即可直接設定的權限標誌
- 使用通用 APPLID 或使用者名稱來繞過控制邏輯
這些模式雖然微妙,但它們的存在往往預示著更大的設計問題,即安全邏輯與業務規則交織在一起。透過靜態分析隔離它們有助於團隊安全地重構程式碼,避免隱藏的特權路徑。
CICS 環境中的靜態分析範圍
CICS 系統與傳統的應用程式堆疊有很大不同。雖然現代服務公開 API 和事件驅動流程,但 CICS 應用程式通常以緊密耦合的程式鏈形式執行,這些程式鏈依賴於透過 commarea、終端輸入和共享記憶體傳遞的資料。這種架構使靜態分析特別具有挑戰性。分析人員不僅要查找已知的易受攻擊的調用,還必須重建跨多個程式的執行流程,其中一些程式可能跨越數十年的遺留開發。
有意義的靜態審查必須考慮資料如何進入系統,控制權如何從一個模組傳遞到下一個模組,以及哪些地方需要驗證但卻沒有驗證。 CICS 中的安全違規並不總是源於明顯危險的呼叫。更常見的情況是,它們源自於對信任的假設被忽略、上下文檢查缺失,或嵌套或延遲執行流程中出現的權限不符。
分析 COBOL-CICS 源流的信任邊界
典型的 COBOL-CICS 事務並非由單一整體區塊組成。它通常跨越多個程序,並通過 EXEC CICS LINK, XCTL, 或者 RETURN,使用 commarea 區塊在它們之間共用資料。許多程式不會獨立驗證接收到的 commarea 內容,而是依賴可信任呼叫者已執行驗證的假設。這種假設是權限漂移和未經授權存取最常見的原因之一。
靜態分析必須識別資料傳入的起點,並追蹤其在這些呼叫中的傳播過程。例如:
MOVE WS-USERID TO COMM-USERID
EXEC CICS LINK PROGRAM('ACCTUPD') COMMAREA(COMMAREA-BLOCK) LENGTH(COMM-LEN)
然後,在 ACCTUPD,可能會出現以下內容:
IF COMM-USERID = 'ADMIN01'
PERFORM ADMIN-ROUTINE
這就創造了一個隱含的信任邊界。如果 WS-USERID 在流程早期被覆蓋或偽造, ACCTUPD 會盲目地執行管理例程。靜態分析必須關聯 COMM-USERID的來源並標記所有使用它進行敏感決策的下游代碼,而無需重新驗證。
透過靜態掃描可偵測到的典型信任邊界違規包括:
- 基於 commarea 欄位的決策分支,無需本地身份驗證
- 根據終端機或 APPLID 值執行邏輯
- 用於
EIBTRMID,EIBTASKN, 或者EIBRESP在沒有原點檢查的控制邏輯中 - 重新進入偽對話鏈時缺少使用者會話重新驗證
偵測硬編碼憑證和權限提升邏輯
靜態審查經常會發現直接嵌入在 COBOL 語句中的硬編碼使用者 ID、特殊代碼或 APPLID。雖然這些程式碼可能是為了內部測試或操作變通而添加的,但它們通常仍存在於生產環境中,並帶來嚴重風險。
以下是現實世界中經常被標記的樣本模式:
IF USER-ID = 'SYSROOT'
MOVE 'FULL' TO ACCESS-LEVEL
or
IF EIBTRMID = 'TSTTERM1'
MOVE 'Y' TO BYPASS-SECURITY-FLAG
這些漏洞會建立不受控制的提升存取權路徑。如果攻擊者獲得終端存取權限或發現硬編碼的使用者 ID,應用程式的其餘部分可能會表現得像已進行完全身份驗證一樣。
一個更微妙的例子:
IF SUBSTR(COMMAREA-DATA, 1, 5) = 'DEBUG'
PERFORM DIAGNOSTIC-ROUTINES
如果不剝離或保護此邏輯,精心設計的輸入可能會啟動暴露不適合一般使用者的日誌、檔案指標或記憶體診斷的功能。
在建立靜態規則來檢測此類缺陷時,請重點關注:
IForEVALUATE使用與使用者或終端綁定的硬編碼文字值的語句- 將硬編碼憑證直接對應到存取標誌
- 諸如
BYPASS,OVERRIDE, 或者DEBUG觸發條件邏輯 - 程式碼部分僅透過對使用者名稱或終端 ID 進行表面檢查來保護
很多情況下,這些檢查都是非正式添加的,從未進行過審查。靜態掃描應該標記這些檢查,以便進行手動檢查,或針對反覆出現的濫用行為強制執行基於模式的警報。
透過擴展靜態分析鏡頭來捕捉這些邊界條件和硬編碼的回退,審計人員和安全工程師可以更好地了解 CICS 應用程式可能破壞信任鏈的位置 — — 即使系統的其餘部分看起來運行安全。
表明安全風險的程式碼結構模式
雖然單一 CICS 指令可能看起來是安全的,但程式邏輯的外圍結構通常決定了事務是否真正受到保護。靜態分析必須超越逐行掃描,才能理解程式如何互動、權限如何推斷,以及隱式信任在控制流程中嵌入的位置。
遺留系統尤其容易出現這些模式。隨著時間的推移,開發團隊會引入臨時邏輯、權限捷徑和多用途事務,從而模糊關注點分離。識別這些結構性反模式對於強化事務安全性至關重要。
具有提升權限的事務到程式映射
每個 CICS 交易 ID 通常會對應到特定的程式或排程例程。然而,許多系統會在不同的模組之間重複使用事務代碼,或分配廣泛的程序處理程序,這些程序可以根據使用者輸入執行多項敏感功能。
當通用處理程序與高權限事務綁定且未進行充分過濾時,這種情況會變得非常危險。靜態分析必須追蹤哪些事務 ID 對應到哪些程序,並確定每個程序在該事務上下文中執行的邏輯。
示例:
EXEC CICS RETRIEVE INTO(COMM-AREA)
EVALUATE COMM-AREA-FUNCTION
WHEN 'UPDATE'
PERFORM UPDATE-ROUTINE
WHEN 'DELETE'
PERFORM DELETE-ROUTINE
WHEN OTHER
PERFORM INQUIRY-ROUTINE
END-EVALUATE
如果將上述內容對應到類似以下的交易 FINTRN01,並且該事務被分配了提升的系統權限,任何濫用 COMM-AREA-FUNCTION 可以允許使用者繞過角色限制並呼叫刪除或更新邏輯。
風險指標包括:
- 單一程式根據使用者提供的標誌執行多個特權操作
- 缺乏硬編碼的交易到功能限制
- 跨環境或業務部門共享交易代碼
- 調度模組中缺少與特定分支相關的存取檢查
靜態掃描應該識別 commarea 標誌控制流的位置以及這些流是否受到任何身份驗證、角色驗證或資源等級約束的保護。
命令級與宏級呼叫路徑的弱點
另一個風險來源是命令級程式和巨集級程式之間的不一致。隨著時間的推移,系統通常會混合使用這兩種風格。命令級程式碼受益於結構化的語法和更好的可讀性,而巨集級程式碼往往提供較低的存取權限和較少的安全措施。
當兩種類型一起使用時,它們可能會引入微妙的呼叫路徑漏洞,特別是在宏級程式動態連結而沒有中間安全強制的情況下。
示例:
- 命令級程式連結到直接讀取或修改共享記憶體的巨集級模組。
- 巨集級模組假定呼叫程式已經驗證了資料。
- 在輸入和執行之間不進行中間檢查。
流程的簡化視圖:
* In command-level handler
EXEC CICS LINK PROGRAM('LEGACYIO') COMMAREA(DATA-BLOCK)
* In macro-level module LEGACYIO
L R1,=V(DATA-BLOCK)
ST R1,=V(SYSTEM-FILE-POINTER)
在這裡,巨集級模組被信任直接操作儲存指標。如果呼叫程式未能驗證 DATA-BLOCK,攻擊者可以操縱記憶體區域或引用未經授權的資料集。
靜態分析要特別注意:
- LINK 或 XCTL 呼叫從結構化程式到遺留模組
- 命令級和宏級程式碼之間的參數傳遞
- 使用未進行邊界檢查的儲存指標或系統檔案標識符
- 重複使用模組,其中假定輸入驗證已在其他地方發生
這些漏洞很少在測試中被發現,因為漏洞利用的條件通常需要終端上下文、任務參數和執行流程之間精確匹配。但靜態掃描可以偵測到導致這些漏洞的結構設定。
透過識別結構性風險(而不僅僅是有缺陷的程式碼行),分析師可以更好地評估 CICS 系統的整體安全態勢,並根據影響潛力確定補救措施的優先順序。
CICS 特定 API 濫用的靜態偵測
CICS 公開了各種與系統層級資源互動的 EXEC 指令和巨集,包括終端標識符、任務編號、會話記憶體和事務路由邏輯。雖然這些功能提供了靈活性,但如果缺乏足夠的安全措施,也可能引入漏洞。濫用這些介面可能會導致意外的權限提升、繞過控製或存取未經授權的系統區域。
靜態分析允許開發人員和稽核人員透過檢查這些 API 的呼叫方式、使用的參數以及呼叫上下文是否提供了充分的驗證來識別此類風險。正確的實施需要仔細檢查執行上下文、存取模式以及跨事務的資料流邊界。
追蹤 EXEC CICS ASSIGN 和 ADDRESS 的不安全使用
这 ASSIGN 以及 ADDRESS 指令可以直接存取 CICS 內部結構。這包括關鍵元數據,例如終端 ID、應用程式標識符和特定於任務的記憶體位置。雖然這些值通常用於日誌記錄或會話跟踪,但當控制邏輯依賴它們進行安全決策時,它們就會變得危險。
舉個例子:
EXEC CICS ASSIGN TERMINALID(TERM-ID)
IF TERM-ID = 'DEVBYPASS'
PERFORM SKIP-AUTH-CHECKS
在這裡,存取控制直接與終端ID綁定。知曉該值或能夠偽造終端設定的使用者可以利用此邏輯繞過安全機制。
或考慮涉及 ADDRESS:
EXEC CICS ADDRESS EIBTASKN
MOVE EIBTASKN TO TRACE-BUFFER
孤立地看,這似乎無害。但是,如果 EIBTASKN 稍後用於身份驗證或交易授權,它會引入可預測性和未經授權的會話模擬的風險。
不安全的 ASSIGN 和 ADDRESS 使用情況的常見指標包括:
- 僅基於終端 ID、APPLID 或任務編號控制分支
- 直接使用分配的值進行存取驗證或繞過標誌
- ADDRESS 指令後沒有進行結構驗證的指標引用
- 硬編碼值與 IF 條件中的系統分配標識符進行比較
應配置靜態掃描工具來標記這些情況,特別是當分配的資料影響程式路由或特權邏輯時。
透過備用執行路徑篡改交易流
在許多 CICS 應用程式中,為了提高容錯能力,會使用回退或備用交易路由。然而,這些備用路徑可能缺乏適當的訪問驗證,或在非預期的情況下被存取。這為攻擊者從正常事務流之外觸發敏感邏輯創造了機會。
考慮這種情況:
IF EIBCALEN = 0
EXEC CICS XCTL PROGRAM('RETRYTX')
如果沒有傳遞 commarea,此程式碼將重新路由執行。但是 RETRYTX 可能僅設計用於受信任的序列。如果它不強制執行自身的驗證,使用者只需觸發零長度交易即可實現敏感功能。
另一個例子涉及靜默升級:
IF AUTH-FAILS
EXEC CICS START TRANSID('ALTID')
EXEC CICS RETURN
If ALTID 映射到具有更高權限或更廣泛功能的交易,並且缺乏角色檢查,這種回退會引入意外的訪問。
這裡的風險通常來自:
- 使用 START、XCTL 或 LINK 根據錯誤狀態切換程序
- 可在多個交易代碼中重複使用的程序 ID
- RETURN 邏輯將驗證延遲到下游模組
- 無需完整性檢查即可指示流量的 Commarea 值
靜態分析應該建立完整的事務圖,以識別具有多個入口路徑的程序,並突出顯示那些在未完成驗證後獲得控制權的程序。即使函數看似孤立,隱藏的流程也可能允許攻擊者觸發超出預期用途的特權操作。
處理複雜的安全邏輯混淆
保護遺留 CICS 應用程式安全最困難的方面之一是理清模糊或深度嵌套的安全邏輯。許多 CICS 程式經過數十年發展,經歷了不同的團隊,並包含多層存取處理。因此,關鍵的安全決策通常隱藏在無法存取的路徑中,跨模組複製,或被拆分成零散的例程。靜態分析必須能夠重建這些模式,並揭示哪些假設或疏忽導致了風險。
識別跨多個程式的拆分授權路徑
CICS 開發人員通常會實作偽對話式編程,以便在多個使用者互動之間維護狀態。這樣做可能會無意中將身份驗證與授權分開。一個程式驗證憑證,另一個程式設定會話標誌,第三個程式執行存取檢查。如果該鏈條中的任何環節斷開連接或在另一個上下文中重複使用,就會造成安全漏洞。
示例:
計劃1:
IF USERID = 'SUPPORT1'
MOVE 'OK' TO SESSION-AUTH
EXEC CICS RETURN TRANSID('TX02')
計劃2:
IF SESSION-AUTH = 'OK'
PERFORM PROCESS-ADMIN-DATA
如果按預期使用,這似乎是安全的。但如果另一個事務直接啟動程序 2,而不經過程序 1,變數 SESSION-AUTH 可能未初始化或偽造。第二個程式僅根據變數就相信會話有效,而無需重新檢查憑證。
靜態分析必須追蹤程式轉換過程中的變數分配,特別是:
- 當一個程式設定一個標誌,另一個程式讀取該標誌以做出存取決策時
- 當授權邏輯存在於身分驗證邏輯之外時
- 當程式可以直接啟動並繞過正常的輸入驗證時
這些模式在傳統設計中極為常見,但在人工審查中經常被忽略。
透過內部調試或測試模式控制流量轉移
開發人員有時會添加隱藏標誌或調試模式來協助測試。如果這些功能在部署前未移除,或者可以從生產終端訪問,則可能會為應用程式的敏感部分提供後門。
示例:
IF COMM-FLAG = 'DEBUG'
PERFORM BYPASS-AUTH-CHECK
或者更微妙的是:
IF CURRENT-TIME > '210000'
PERFORM EMERGENCY-ROUTINE
在第二種情況下,下班後的例行操作可能會繞過一些常規的安全檢查,這些檢查可能是為了批量作業或緊急回應而設計的。然而,如果它可以從互動式會話中觸發,則會開啟一個基於時間的攻擊向量。
在掃描混淆或有風險的邏輯時,靜態分析應優先考慮:
- 控制安全邏輯的異常狀況(時間、終端ID、區域代碼)
- 諸如 DEBUG、DEV、OVERRIDE、TEST 或 BACKDOOR 之類的標誌
- 在特定運行時條件下跳過的訪問檢查
- 跳過驗證分支的 GOTO 或 PERFORM 路徑
目標是揭露任何允許執行進入特權程式碼的內容,而無需直接、可見的授權檢查。
具有不一致存取控制的重用例程
在許多大型 CICS 應用程式中,開發人員會重複使用通用例程來存取資料或執行業務邏輯。這些例程可能由面向公眾的事務和內部管理實用程式呼叫。如果共享邏輯假設呼叫者已經驗證了使用者的角色,而該假設並非總是成立,則會產生間接漏洞。
經典結構如下圖所示:
PERFORM UPDATE-ACCT-INFO
...
UPDATE-ACCT-INFO.
IF ROLE = 'ADMIN'
EXEC CICS WRITE FILE('ACCTDB')
只有當每個呼叫者 UPDATE-ACCT-INFO 正確設定 ROLE 變數。如果應用程式的另一部分使用 ROLE 未初始化,或如果呼叫者根據弱檢查錯誤地設定它,則可能會發生未經授權的存取。
靜態掃描應該標記:
- 執行安全敏感操作的共用例程
- 共用例程中缺乏本地驗證
- 用於外部定義的存取決策的變數
- 遠離執行點的角色分配
這種混淆並非源自於刻意的隱藏,而是長期架構漂移的結果。隨著組件在各個模組間的複用,原始的訪問假設會逐漸降低。只有深度代碼追蹤和上下文關聯才能揭示這些風險。
使用 SMART TS XL 偵測並消除 CICS 交易漏洞
在傳統大型主機系統中處理安全分析本身就很複雜。 CICS 環境通常缺乏集中式架構,缺乏現代化的文檔,並且流程演變經歷了數十年。 SMART TS XL 透過提供專為 COBOL、PL/I、JCL 和 CICS 特定模式建構的靜態分析引擎來解決這些問題。與通用工具不同,它能夠理解大型主機生態系統獨有的架構和約定。
CICS 的多層流程重構
SMART TS XL 掃描整個應用程式組合併建立跨程式流程圖。這包括:
- 事務到程序的映射
- 使用 LINK、XCTL 和 RETURN 實現程式到程式的轉換
- 變數和 commarea 傳播
- 基於角色的控制邏輯和入口條件追蹤
透過重建完整的執行鏈,它可以偵測假定可信任上下文的程式何時實際上可以從多個點(包括可能未經驗證的點)存取。
範例用例:
內部審計發現了一個安全漏洞,其中交易 TX94 觸發了一個原本僅供管理員使用的程式。 SMART TS XL 追蹤了程式的呼叫圖,發現控制標誌是透過一個未經檢查的commarea欄位傳遞的,並且還發現了另外五個可以存取同一程式入口的事務。手動跟踪遺漏了這一點。
偵測隱藏的控制標誌和混淆的存取路徑
許多遺留程序包含嵌入式覆蓋條件或緊急例程。由於深度嵌套、不常見的變數命名或位於回退邏輯內部,這些情況通常很難手動定位。 SMART TS XL 使用基於規則和模式匹配掃描來提取:
- 由很少使用的標誌值控制的條件分支
- 根據終端 ID、時間或任務元資料觸發的邏輯
- 使用 commarea 標誌、硬編碼使用者 ID 或巨集級例程繞過分支
它顯示所有潛在特權決策點的實例,並根據可及性、交易暴露和特權提升潛力對其進行排名。
CICS 建構的自動化漏洞規則
與表面掃描器不同, SMART TS XL 包含針對 COBOL-CICS 程式自訂的內建規則。這些規則可識別與以下方面相關的漏洞:
- 不安全的 EXEC CICS ASSIGN 和 ADDRESS 使用
- PERFORMed 例程中的存取邏輯不一致
- WRITE、DELETE 或 START 指令之前缺少驗證
- 過時的偽對話流程,狀態管理較弱
這些規則可以根據環境、業務功能或審計標準進行客製化。它們在識別舊開發團隊遺留的錯誤假設方面尤其有用。
透過影響追溯加速修復
一旦標記了漏洞,可以透過以下方式加速修復 SMART TS XL的追蹤功能。對於任何邏輯分支或程式函數,它可以顯示:
- 所有導致此結果的交易
- 它所呼叫的所有模組
- 所有依賴的變數
- 它繞過的任何存取邏輯
此追蹤圖可協助開發人員和稽核人員立即了解漏洞是孤立存在的還是系統性暴露的。它還能減少手動映射依賴關係所花費的時間,並降低修補過程中引入新漏洞的風險。
結論和下一步安全審查步驟
舊版 CICS 應用程式承載著關鍵的業務邏輯,但其年代久遠且複雜,造成了標準方法常常忽略的安全盲點。靜態分析提供了一種可靠的方法,可以在隱藏的風險被利用之前將其發現,尤其當它的目標不僅僅是語法或程式碼片段,而是更廣泛的控制流和跨事務的存取假設時。
在本文中,我們研究了 CICS 系統特有的缺陷類型:
- 授權邏輯分散在鬆散耦合的程序中
- 未經驗證的易受攻擊的命令模式(例如 ASSIGN 和 ADDRESS)
- 繞過正常檢查的後備事務和調試路徑
- 重複使用例程,假設呼叫者輸入可信
對於運作大型 CICS 產品組合的組織而言,零散的安全措施已不再可行。現代威脅可以利用隱藏在數百個模組中的單一疏忽。如果結合深度上下文感知進行靜態分析,則可以在問題上線或進入審計之前將其發現。
以下是下一步需要考慮的關鍵行動:
- 建立完整的事務到程式映射,包括所有 XCTL 和 LINK 路徑
- 識別並重構執行特權操作的任何共享業務邏輯
- 審計所有受 commarea 標誌或基於終端的決策影響的分支
- 在每個交易的入口點建立安全驗證
- 審查後備邏輯和緊急路徑,以防意外暴露
對於希望加速這一過程並減少人力工作的團隊來說, SMART TS XL 提供針對 CICS 架構量身訂做的靜態分析,實現具有完整流程可追溯性的安全重構。
保護大型主機環境不僅需要警惕,還需要可視性。靜態分析是少數兼具兩者的技術之一。