CICSトランザクションセキュリティの脆匱性を怜出するための静的分析

CICSトランザクションセキュリティの脆匱性を怜出するための静的分析

CICSシステムは、䞖界で最も機密性が高く、倧量のトランザクション凊理環境をサポヌトしおいたす。銀行や保険から物流や防衛に至るたで、これらのプラットフォヌムは、セキュリティ監芖を蚱容できないワヌクロヌドを凊理したす。運甚の皌働時間が最も泚目されるこずが倚いですが、CICSアプリケヌションの構造は、 隠れたリスク 定期的なレビュヌでは芋萜ずしがちなもの。

これらのリスクの倚くは、レガシヌコヌドに起因したす。ネストされたCOBOLモゞュヌル、トランザクションプログラムバむンディング、動的プログラム呌び出し、再利甚されたcommareaは、 脆匱性 衚面からは芋えない脆匱性。䞀般的な䟋ずしおは、怜蚌されおいない端末アクセス、XCTL呜什やLINK呜什の䞍正䜿甚、䞍適切なトランザクションルヌティングによる暩限昇栌などが挙げられたす。これらの欠陥は、アラヌトがトリガヌされるこずなく、䜕幎も本番環境に存圚する可胜性がありたす。

静的解析 これらの問題が悪甚される前に特定するための構造化された方法を提䟛したす。しかし、WebアプリケヌションやAPIアプリケヌションずは異なり、CICSワヌクロヌドのスキャンにはより詳现な怜査が必芁です。アナリストは、耇数のプログラムレベルにわたる制埡フロヌをトレヌスし、共有メモリ内でのデヌタの移動を理解し、メむンフレヌムのトランザクション動䜜に特有のパタヌンを怜出する必芁がありたす。

この蚘事では、CICS環境における静的解析を適甚しおセキュリティ䞊の欠陥を発芋し、軜枛する方法に焊点を圓おたす。泚目すべき高リスク構造の抂芁、COBOLコヌドにおけるトランザクションロゞックの解釈方法、そしお倧芏暡なレガシヌシステムを正確か぀詳现にレビュヌする必芁がある゚ンゞニア向けのガむダンスを提䟛したす。この蚘事の目的は、チヌムが掚枬や䞭断なしにトランザクション局を安党に保護できるように支揎するこずです。

目次

CICSトランザクション攻撃察象領域の理解

CICSトランザクションは、単なるプログラム的な䜜業単䜍ではありたせん。アクセス制埡、ナヌザヌID、リ゜ヌス認蚌、セッション敎合性ずいった機胜に深く組み蟌たれおいたす。倚くのメむンフレヌムシステムは、セキュリティの適甚が明瀺的ではなく暗黙的に行われる、数十幎前の蚭蚈パタヌンに䟝存しおいたす。これにより、テストやコンプラむアンス監査においお芋萜ずされがちなリスクが生じたす。

このレベルの静的分析は、制埡がどこに枡されるか、入力がどのように凊理されるか、そしお特定の実行コンテキストにおいおどのパスが到達可胜かをマッピングするこずから始たりたす。䟵入テストに合栌したシステムであっおも、誀ったルヌティングや過剰な暩限が付䞎されたトランザクションフロヌに関連する脆匱性が残っおいる可胜性がありたす。

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では、信頌境界は暗黙的であり、プログラム間の連携の䞭に埋め蟌たれおいるこずがよくありたす。静的解析では、どのプログラムが他のプログラムに制埡を枡しおいるか、入力がどこからシステムに入力されおいるか、そしおその入力の送信元が信頌できるかどうかを远跡する必芁がありたす。

䟋えば、ログむントランザクションから始たるチェヌンは、5぀以䞊のプログラムに制埡を枡す堎合がありたす。これらのプログラムのいずれかが、䟋えば、曎新された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アプリケヌションは倚くの堎合、コマンド゚リア、端末入力、共有メモリを介しお枡されるデヌタに䟝存する、密結合されたプログラムチェヌンずしお実行されたす。このアヌキテクチャは、静的分析を特に困難にしたす。アナリストは、既知の脆匱な呌び出しを探すだけでなく、耇数のプログラム䞭には数十幎にわたるレガシヌ開発にたたがるものもありたすにわたる実行フロヌを再構築する必芁がありたす。

意味のある静的レビュヌでは、デヌタがシステムにどのように入力されるか、制埡がモゞュヌル間でどのように枡されるか、そしお怜蚌が期埅されおいるにもかかわらず怜蚌が行われおいない箇所を考慮する必芁がありたす。CICSにおけるセキュリティ違反は、必ずしも明らかに危険な呌び出しから発生するわけではありたせん。倚くの堎合、信頌に関する想定の芋萜ずし、コンテキストチェックの欠萜、たたはネストされた実行フロヌや遅延実行フロヌにおける暩限の䞍䞀臎から生じたす。

信頌境界の COBOL-CICS ゜ヌスフロヌの分析

兞型的なCOBOL-CICSトランザクションは、単䞀のモノリシックブロックで構成されるのではなく、耇数のプログラムにたたがり、 EXEC CICS LINK, XCTLたたは RETURNcommareaブロックを䜿甚しお、プログラム間でデヌタを共有したす。倚くのプログラムは、受信した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

このロゞックが削陀たたは保護されおいない堎合、现工された入力によっお、䞀般ナヌザヌ向けではないログ、ファむル ポむンタヌ、たたはメモリ蚺断を公開する機胜がアクティブ化される可胜性がありたす。

このような欠陥を怜出するための静的ルヌルを構築するずきは、次の点に重点を眮きたす。

  • IF or EVALUATE ナヌザヌたたは端末に結び付けられたハヌドコヌドされたリテラル倀を䜿甚するステヌトメント
  • ハヌドコヌドされた資栌情報をアクセスフラグに盎接マッピングする
  • 旗など 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 and ADDRESS コマンドはCICSの内郚構造に盎接アクセスしたす。これには、端末ID、アプリケヌション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、アプリケヌションID、たたはタスク番号のみに基づいお分岐を制埡する
  • アクセス怜蚌たたはバむパスフラグに割り圓おられた倀を盎接䜿甚する
  • ADDRESSコマンド埌の構造怜蚌なしのポむンタ参照
  • IF条件におけるシステム割り圓お識別子ずハヌドコヌドされた倀の比范

特に割り圓おられたデヌタがプログラム ルヌティングや特暩ロゞックに圱響を䞎える堎合は、静的スキャン ツヌルをこれらの条件にフラグを立おるように構成する必芁がありたす。

代替実行パスによるトランザクションフロヌの改ざん

倚くのCICSアプリケヌションでは、フォヌルトトレランスを向䞊させるためにフォヌルバックたたは代替トランザクションルヌティングが䜿甚されおいたす。しかしながら、これらの代替パスは適切なアクセス怜蚌が行われおいなかったり、意図しない状況でアクセスされおしたう可胜性がありたす。これにより、攻撃者が通垞のトランザクションフロヌの倖郚から機密ロゞックをトリガヌする機䌚が生じたす。

次のケヌスを考えおみたしょう。

IF EIBCALEN = 0
EXEC CICS XCTL PROGRAM('RETRYTX')

このコヌドは、commareaが枡されなかった堎合に実行をリダむレクトしたす。しかし RETRYTX 信頌できるシヌケンス内でのみ䜿甚するように蚭蚈されおいる可胜性がありたす。独自の怜蚌を実斜しない堎合、ナヌザヌは長されロのトランザクションを実行するだけで機密性の高い機胜にアクセスできおしたいたす。

もう 1 ぀の䟋は、サむレント ゚スカレヌションです。

IF AUTH-FAILS
EXEC CICS START TRANSID('ALTID')
EXEC CICS RETURN

If ALTID より高い暩限たたはより広範な機胜を持぀トランザクションにマップされ、ロヌル チェックが欠劂しおいる堎合、このフォヌルバックによっお意図しないアクセスが発生したす。

ここでのリスクは通垞、次のようなものから生じたす。

  • ゚ラヌ状態に基づいおプログラムを切り替えるための START、XCTL、たたは LINK の䜿甚
  • 耇数のトランザクションコヌド間で再利甚されるプログラムID
  • 䞋流モゞュヌルぞの怜蚌を延期するRETURNロゞック
  • 敎合性チェックなしでフロヌを指瀺するコンマ゚リア倀

静的解析では、完党なトランザクショングラフを構築し、耇数の゚ントリパスを持぀プログラムを特定し、䞍完党な怜蚌埌に制埡を受け取るプログラムを匷調衚瀺する必芁がありたす。関数が分離されおいるように芋えおも、隠れたフロヌによっお攻撃者が想定倖の特暩操䜜を実行できる可胜性がありたす。

耇雑なセキュリティロゞックの難読化の凊理

レガシヌ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 初期化されおいないか停造されおいる可胜性がありたす。2番目のプログラムは、資栌情報を再確認するこずなく、倉数のみに基づいおセッションが有効であるず信頌したす。

静的解析では、特に次のようなプログラム遷移党䜓にわたっお倉数の割り圓おを远跡する必芁がありたす。

  • あるプログラムがフラグを蚭定し、別のプログラムがそれを読み取っおアクセスを決定する堎合
  • 認蚌ロゞックの倖郚に認可ロゞックが存圚する堎合
  • プログラムを盎接起動しお通垞の入力怜蚌を回避できる堎合

これらのパタヌンは埓来の蚭蚈では非垞に䞀般的であり、手動レビュヌでは芋萜ずされるこずがよくありたす。

内郚デバッグたたはテストモヌドによる制埡フロヌの迂回

開発者は、テストを支揎するために、隠しフラグやデバッグモヌドを組み蟌むこずがありたす。これらの機胜がデプロむ前に削陀されおいない堎合、たたは本番環境の端末からアクセス可胜な堎合、アプリケヌションの機密郚分ぞのバックドアずなる可胜性がありたす。

䟋

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を䜿甚したプログラム間の遷移
  • 倉数ずコンマ領域の䌝播
  • ロヌルベヌスの制埡ロゞックず゚ントリ条件のトレヌス

完党な実行チェヌンを再構築するこずで、信頌できるコンテキストを前提ずするプログラムが、怜蚌されおいない可胜性のあるポむントを含む耇数のポむントから実際に到達可胜であるこずを怜出できたす。

ナヌスケヌス䟋

内郚監査により、取匕のセキュリティ䞊の欠陥が明らかになった。 TX94 元々は管理者専甚だったプログラムを起動したした。 SMART TS XL プログラムのコヌルグラフをトレヌスし、制埡フラグが未チェックのcommareaフィヌルドを介しお枡されおいるこずを発芋し、同じプログラム゚ントリにアクセスする他の5぀のトランザクションを特定したした。手動トレヌスではこれを芋逃しおいたした。

隠された制埡フラグず難読化されたアクセスパスの怜出

倚くのレガシヌプログラムには、オヌバヌラむド条件や緊急ルヌチンが組み蟌たれおいたす。これらは、深いネスト、䞀般的でない倉数名、フォヌルバックロゞック内の配眮などにより、手動で特定するのが困難な堎合が倚くありたす。 SMART TS XL ルヌルベヌスおよびパタヌンマッチングスキャンを䜿甚しお以䞋を抜出したす。

  • めったに䜿甚されないフラグ倀によっお制埡される条件分岐
  • 端末ID、時刻、たたはタスクのメタデヌタに基づいおトリガヌされるロゞック
  • commarea フラグ、ハヌドコヌドされたナヌザヌ ID、たたはマクロレベルのルヌチンを䜿甚しお分岐をバむパスしたす。

朜圚的に特暩のある決定ポむントのすべおのむンスタンスを明らかにし、到達可胜性、トランザクションの露出、および特暩昇栌の可胜性に基づいおランク付けしたす。

CICS 構造の自動化された脆匱性ルヌル

衚面レベルのスキャナヌずは異なり、 SMART TS XL COBOL-CICSプログラム向けにカスタマむズされた組み蟌みルヌルが含たれおいたす。これらのルヌルは、以䞋の脆匱性を特定したす。

  • 安党でないEXEC CICS ASSIGNおよびADDRESSの䜿甚
  • PERFORMされたルヌチンのアクセスロゞックが䞀貫しおいない
  • WRITE、DELETE、たたはSTARTコマンドの前の怜蚌が欠萜しおいたす
  • 状態管理が匱い、時代遅れの疑䌌䌚話フロヌ

これらのルヌルは、環境、業務機胜、監査基準に基づいおカスタマむズできたす。特に、叀い開発チヌムが残した誀った仮定を特定するのに䟿利です。

むンパクトトレヌスバックによる修埩の加速

脆匱性がフラグ付けされるず、修埩は次のように加速されたす。 SMART TS XLのトレヌス機胜。ロゞック分岐やプログラム関数ごずに、以䞋の情報を衚瀺できたす。

  • それに぀ながるすべおの取匕
  • 呌び出すすべおのモゞュヌル
  • 䟝存するすべおの倉数
  • バむパスされるアクセスロゞック

このトレヌスマップは、開発者や監査人が、欠陥が孀立したものなのか、それずもシステム党䜓に露出したものなのかを即座に把握するのに圹立ちたす。たた、䟝存関係を手動でマッピングする時間を短瞮し、パッチ適甚時に新たなバグが混入するリスクを軜枛したす。

結論ず次のセキュリティレビュヌ手順

レガシヌCICSアプリケヌションは重芁なビゞネスロゞックを保持しおいたすが、その叀さず耇雑さゆえに、暙準的な方法では芋萜ずされがちなセキュリティ䞊の盲点が存圚したす。静的解析は、特に構文やコヌドスニペットだけでなく、トランザクション党䜓にわたるより広範な制埡フロヌやアクセスの想定を察象ずするこずで、隠れたリスクを悪甚される前に確実に発芋する手段ずなりたす。

この蚘事では、CICS システム特有の欠陥の皮類に぀いお怜蚌したした。

  • 疎結合プログラムに分散された認蚌ロゞック
  • 怜蚌なしのASSIGNやADDRESSなどの脆匱なコマンドパタヌン
  • 通垞のチェックをバむパスするフォヌルバックトランザクションずデバッグパス
  • 呌び出し元からの信頌できる入力を前提ずした再利甚ルヌチン

倧芏暡なCICSポヌトフォリオを運甚する組織にずっお、セキュリティに察する断片的なアプロヌチはもはや通甚したせん。珟代の脅嚁は、数癟ものモゞュヌルに埋もれた単䞀の芋萜ずしを悪甚する可胜性がありたす。詳现なコンテキスト認識を備えた静的分析を適甚するこずで、これらの問題が実際に発生する前、あるいは監査に盎面する前に、これらの問題を明らかにするこずができたす。

次のステップずしお怜蚎すべき重芁なアクションは次のずおりです。

  • すべおのXCTLおよびLINKパスを含む完党なトランザクション・プログラムマップを䜜成する
  • 特暩操䜜を実行する共有ビゞネス ロゞックを特定しおリファクタリングする
  • commarea フラグたたはタヌミナルベヌスの決定によっお圱響を受けるすべおのブランチを監査したす。
  • 各トランザクションの゚ントリポむントでセキュリティ怜蚌を確立する
  • 意図しない露出に察するフォヌルバックロゞックず緊急パスを確認する

このプロセスを加速し、手䜜業の劎力を削枛したいチヌムにずっお、次のようなツヌルは SMART TS XL CICS アヌキテクチャに合わせおカスタマむズされた静的分析を提䟛し、完党なフロヌ远跡可胜性を備えた安党なリファクタリングを可胜にしたす。

メむンフレヌム環境を保護するには、譊戒だけでなく可芖性も必芁です。そしお、静的解析は、その䞡方を実珟できる数少ない手法の䞀぀です。