Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cobol-shield — COBOLレガシーシステム向けのセキュリティ強化ツールキット — 不可視Unicode検出、フォーマット境界分析、ソース変換の完全性 | Kitploit
ツール/GitHubGitHub/luiscastellanos-dev/cobol-shield
防御ツール静的コード分析 (SAST)脆弱性分析DevSecOpsサプライチェーンセキュリティ
GitHubluiscastellanos-dev/cobol-shield

cobol-shield

COBOLレガシーシステム向けのセキュリティ強化ツールキット — 不可視Unicode検出、フォーマット境界分析、ソース変換の完全性

リポジトリを見る
211ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

cobol-shield

COBOLレガシーシステム向けセキュリティ監査ツールキット

VTR Research Methodologyの一部 | DOI: 10.5281/zenodo.22063208 ステータス: 再現可能 | ライセンス: MIT | トラック: 重要インフラ

概要

GnuCOBOLソースにおけるコンパイルコンテキストの相違、不可視Unicode攻撃、および安全でないCOBOLパターンを検出します。同じソースファイルを-fixedと-freeでコンパイルすると異なるプログラムが生成されます — 本ツールはその相違を可観測かつ再現可能にします。

3コマンドで再現する方法

git clone https://github.com/LuisCastellanos-dev/cobol-shield
cd cobol-shield
bash tools/poc_compiler_flag.sh

本ツールが行わないこと

本ツールはリモートコード実行、権限昇格、ネットワークエクスプロイトを主張または実証するものではありません。検出結果はVTR方法論に従いCONFIRMADO、PROBABLE、またはOBSERVADOとして分類されます — 分類は証拠の強さを反映するものであり、影響の深刻度を示すものではありません。


COBOLレガシーシステム向けセキュリティ監査ツールキット

GnuCOBOLソースにおける不可視Unicode攻撃、安全でないCOBOLパターン、およびフォーマット変換の完全性問題を検出します。 GnuCOBOL 3.1.2で検証済み。IBM Enterprise COBOLまたはMicro Focusでの動作は未検証 — コンパイラ固有のフラグセマンティクスが異なる可能性があります。

PIC Xは何でも受け入れます。あなたのバッチはそうすべきではありません。


スコープ

cobol-shieldは2つの異なる脅威サーフェスをカバーします:

1. Unicode不可視文字 — CVE-2021-42574およびGlasswormクラスのベクターで、 視覚的なコードレビューを回避し、PIC Xフィールドを静かに破壊します。

2. COBOL静的解析 — レガシーソースにおける安全でないパターン: 未初期化の working-storage、チェックされていないSTRING/UNSTRINGオーバーフロー、REDEFINESのサイズ不一致、 および変換下で意味が変わる固定フォーマットの位置条件。


ツール

ファイル目的
tools/check-invisibles.pyCIチェッカー — 不可視Unicode検出時に終了コード1
tools/clean-invisibles.pyフォレンジック監査ログ付きサニタイザ
src/AUDITOR-INVISIBLE.cobHEX-OFを使用したCOBOL内バイトバリデータ
tools/cobol_rules.py静的解析ルール R-01からR-04
tools/transform_renumber.py固定フォーマット再番号付けシフトシミュレータ (フェーズ2)
tools/poc_compiler_flag.sh決定的PoC — 同一ファイル、-fixed対-free、コンパイラフラグの相違
tools/poc_differential.shフェーズ2差分PoC — SOURCE A対SOURCE B (手動移行)

静的解析ルール

各ルールはVTR Finding Schema v1出力を生成し、context_loaderを介して cryptofaultおよびvtr-forensic-imgと互換性があります。

ルール名前深刻度分類
R-01UNINITIALIZED_WS高HECHO
R-02UNSTRING_NO_OVERFLOW高HECHO
R-03REDEFINES_SIZE_MISMATCH高HECHO
R-04FORMAT_BOUNDARY_ANALYSIS情報PROYECCION

R-01 — UNINITIALIZED_WS VALUE句なしで宣言され、PROCEDURE DIVISION内でINITIALIZEまたはMOVEもされていない Working-Storage変数を検出します。バッチおよびCICS環境における暗黙の未定義動作リスク。

R-02 — UNSTRING_NO_OVERFLOW ON OVERFLOW処理なしのSTRING/UNSTRING文を検出します。入力がターゲットフィールド長を 超えた場合の暗黙の切り捨て。

R-03 — REDEFINES_SIZE_MISMATCH 再定義されるフィールドがそのベースよりも多くのバイトを宣言しているREDEFINESを検出します。 メモリ境界違反リスク — コンパイラ依存の動作。

R-04 — FORMAT_BOUNDARY_ANALYSIS (フェーズ1 — 観察のみ) 固定フォーマットCOBOLソースにおける位置条件を検出します:

  • COL73_NONEMPTY — 識別領域 (列73–80) 内の非空白コンテンツ
  • COL7_VERB — コメント行内のCOBOL実行可能動詞 (列7 = * / / / D)
  • SOURCE_BOUNDARY — 列80を超えるコンテンツ

R-04はseverity=info、classification=PROYECCIONを生成します。これは フォーマット条件を文書化するものであり、脆弱性ではありません。影響評価には変換 差分解析 (フェーズ2) が必要です。


コンパイラフラグのセマンティック相違 — 決定的PoC

中心命題: COBOL固定フォーマットファイルは、ビルドに使用されるコンパイラフラグに よって異なるセマンティクスを持ち、そのフラグはソースファイルの外側に存在する。

GnuCOBOL 3.1.2で実証、単一アーティファクト、無修正:

bash tools/poc_compiler_flag.sh
cobc -x -fixed poc-same-file.cbl → compiles → output: 0000001000
cobc -x -free  poc-same-file.cbl → 10 compilation errors

-fixedの場合: 6行目の列7=*はコメントインジケータ — MOVE 999999 は休眠状態であり、プログラムは実行され1000を表示します。

-freeの場合: シーケンス番号000100...001000が数値リテラルとして 解析されます — PROGRAM-IDヘッダーが見つからないと報告され、すべての行が エラーを生成します。同じファイルが構文的に無効となります。

コンパイラフラグはソースファイル内にはありません。それはMakefile、 CI設定、またはオペレータの起動コマンド内に存在します。それを変更すること — 意図的であれ偶発的であれ — は、プログラムが有効かどうか、そして何をするかを 変えてしまいます。

証拠: corpus/fixed-format/poc-evidence.md
SHA-256および完全なエラーログを文書化。

変換差分 — フェーズ2 (手動移行)

以前のPoCは手動移行を介して同じ命題を実証しています:

SOURCE A (fixed-format, col7='*' dormant):   output → 0000001000
SOURCE B (free-format,  code active):         output → 0000999999

SHA-256 A: b70a948a0df5e8f685e82f5bffc9c4710f2c0a7a23b6294e7ca20092c2d25d37
SHA-256 B: f5fd80f79ed3e5be97628f89790256d6fba80605dce2b7985b729b5fef6f26d5

制限事項: SOURCE Bは不正確な移行の手動表現であり、 実際の再番号付け下でのIBM Z Open EditorまたはIBM SCUの出力ではありません。 上記のコンパイラフラグPoCにはこの制限はありません。


Unicode検出

検出範囲:

コードポイント名前リスク
U+0001–U+001FC0 Controlsバッチ異常終了
U+200B–U+200FZero-Widthデータ破損、VSAM切り捨て
U+202A–U+202EBidi OverrideTrojan Source — CVE-2021-42574
U+2066–U+2069Bidi Isolate方向スプーフィング
U+FE00–U+FE0FVariation SelectorsGlasswormクラスのステガノグラフィ
U+E000–U+F8FFPrivate Use Areaペイロード隠蔽
U+FEFFBOM暗黙の先頭バイト付加
# Byte-level inspection
hexdump -C source.cob | grep -E "e2 80 (8b|ae)"

使用方法

# Unicode CI check — exits 1 on detection
python3 tools/check-invisibles.py .

# Sanitize with forensic audit log
python3 tools/clean-invisibles.py . --report audit-$(date +%Y%m%d).log

# Run static analysis rules
python3 -c "
from tools.cobol_rules import scan_path_r01, scan_path_r02, scan_path_r03, scan_path_r04
import json
for f in scan_path_r02('your-source.cbl'):
    print(f.to_json())
"

# Transformation differential PoC
bash tools/poc_differential.sh

GitHub Action

- name: Check for invisible Unicode
  run: python3 tools/check-invisibles.py .

なぜCOBOLか

PIC X(n)は生のバイトバッファです。検証なしで任意のバイトシーケンスを 受け入れます。Zowe APIレイヤーがMOVEを介してJSONをCOBOLコピーブックに 渡すと、不可視Unicodeがレコードに静かに侵入します。

固定フォーマットCOBOLは第2のサーフェスを追加します: 位置列セマンティクス (列7はインジケータ領域、列73–80は識別領域) はフォーマット依存です。 これらのセマンティクスを保持しない移行ツールは、休眠コードを活性化したり、 プログラム構造を静かに破壊したりする可能性があります。

CVE-2021-42574との共通メカニズムは検出ギャップです — 視覚的検査を 回避するコンテンツ。データフィールド切り捨てベクターとフォーマット変換 ベクターは、CVE-2021-42574で説明されているソースコードのセマンティック 反転とは異なります。


テストスイート

pip install pytest
python -m pytest tests/ -q
# 159 tests, 0 failures

参考文献

  • CVE-2021-42574 — Trojan Source
  • Glassworm — Aikido Security, March 2026
  • IBM Enterprise COBOL Programming Guide — Source Format
  • GnuCOBOL Programmer's Guide
  • Open Mainframe Project — Zowe
  • VTR Finding Schema v1 — tools/vtr_finding.py

既知の制限事項

コンパイラスコープ: すべてのルールはGnuCOBOL 3.1.2のみに対して検証されています。IBM Enterprise COBOLおよびMicro Focus COBOLは、異なるフラグセマンティクス、列境界動作、および拡張機能サポートを持っています。これらのコンパイラでの結果は未検証です — テストされるまでINFERENCIAとして分類してください。

R-04キーワードマッチング (COL7_VERB): コメント行内のCOBOL動詞の検出は固定キーワードリストを使用します。リストにないセキュリティ関連動詞を含むコメント行は偽陰性を生成します。R-04がPROYECCIONに分類されるのはこのためです — これは条件を文書化するものであり、確認された脆弱性ではありません。

cfg-shieldアナログ — 機能名依存性: METHODOLOGY.mdに文書化されているクロス言語方法論は、機能/フラグ名が認識可能な命名規則に従うことを前提としています。非記述的な名前 (例: legacy、compat) を持つセキュリティ関連フラグは、手動レビューなしでは正しく分類されない可能性があります。

単一コンパイラPoC: 決定的PoC (poc-same-file.cbl) はGnuCOBOL下での相違を実証しています。同じ相違クラスは他のCOBOLコンパイラでも予想されますが、まだ検証されていません。


ライセンス

MIT


Luis F. Castellanos — Applied Cryptography & Systems Engineering · FreeBSD / Rust · COBOL Legacy Auditing · Founder @ Vector Telemetry Research

実績

  • FreeBSDコミット rGa841961da752 がベースシステムにマージ
  • IBM Bank-of-Z Issue #205 — システム的なタイムスタンプ欠陥を特定しアップストリームに報告
  • SCaLE 24x提出: Same Source, Different Program: Compilation Context as a Security Variable — 2026年11月審査中
  • プレプリント: DOI 10.5281/zenodo.22063208 — v2.0.0 (2026-08-23)
ツールをダウンロード