Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
bidi-guard — コード内の不可視の双方向 Unicode 文字をスキャンします(Trojan Source 攻撃の防止、CVE-2021-42574) | Kitploit
ツール/GitHubGitHub/moshe-ship/bidi-guard
静的分析脆弱性分析コード分析DevSecOpsサプライチェーンセキュリティ学習と教育
GitHubmoshe-ship/bidi-guard

bidi-guard

コード内の不可視の双方向 Unicode 文字をスキャンします(Trojan Source 攻撃の防止、CVE-2021-42574)

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

人気

すべて見る →

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

すべてのツールを探索

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

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

bidi-guard

目に見えない双方向 Unicode 文字をコードからスキャン

MIT License Python 3.9+


存在理由

目に見えない Unicode 双方向文字は、ソースコードを実行時とは異なる表示にすることができます。これが CVE-2021-42574 — Trojan Source 攻撃です。

攻撃者はテキストの方向を反転させる文字を埋め込みます。コードレビューでは、こう見えます:

root@kitploit:~
access_level = "admin"

しかしコンパイラにはこう見えます:

root@kitploit:~
access_level = "user"

これらの文字は目に見えません。エディタにも表示されず、レビュアーも気づきません。bidi-guard なら見つけられます。

インストール

root@kitploit:~
pip install bidi-guard

クイックスタート

root@kitploit:~
# Scan current directory recursively
bidi-guard scan .

# Scan a specific file
bidi-guard scan src/auth.py

すべての双方向 Unicode 文字を検出し、正確な位置、コンテキスト、深刻度を表示します。

コマンド

CI 統合

GitHub Action

root@kitploit:~
name: BiDi Guard
on: [push, pull_request]
jobs:
  bidi-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.11"
      - run: pip install bidi-guard
      - run: bidi-guard ci .

Pre-commit

.pre-commit-config.yaml に追加:

root@kitploit:~
repos:
  - repo: https://github.com/Moshe-ship/bidi-guard
    rev: v0.1.0
    hooks:
      - id: bidi-guard

検出される文字

Unicode の双方向制御文字 全16種類:

高または重大とマークされた文字は、表示されるテキストを能動的に並べ替えることができます — Trojan Source 攻撃で使われるのはこれらの文字です。

ライブラリとして使用

root@kitploit:~
from bidi_guard import scan_file, Finding

findings = scan_file("src/auth.py")
for f in findings:
    print(f"{f.char_name} at line {f.line}:{f.col} — severity: {f.severity}")

なぜ grep だけではダメなのか?

これらの文字は目に見えません。文字通り、目に見えないのです:

root@kitploit:~
grep "RLO" file.py    # finds nothing
cat file.py            # looks completely normal

bidi-guard は grep には見えないものを表示します: 正確な文字、その位置、周囲のコンテキスト、深刻度、そしてその働きです。さらに、それらを除去して自動修正することもできます。

ライセンス

MIT — Musa the Carpenter


このツールは Saudi AI Community によって提供されています — まずアラブ人へ、そして広く世界へ。

ツールをダウンロード
コマンド説明
scan双方向文字をファイルからスキャンし、コンテキスト付きで結果を表示
ciCI モード — 危険な文字が見つかった場合、非ゼロで終了
fixファイルからすべての双方向文字を削除(デフォルトは対話式)
explain各双方向文字の働きを視覚的な例で表示
initプロジェクト用の .bidi-guard.yml 設定ファイルを生成
コードポイント名前略称深刻度
U+200E左から右へのマークLRM低
U+200F右から左へのマークRLM低
U+061Cアラビア文字マークALM低
U+200Dゼロ幅接合子ZWJ低
U+200Cゼロ幅非接合子ZWNJ低
U+2066左から右へのアイソレートLRI中
U+2067右から左へのアイソレートRLI高
U+2068ファーストストロングアイソレートFSI高
U+2069ポップ方向アイソレートPDI中
U+202A左から右への埋め込みLRE中
U+202B右から左への埋め込みRLE高
U+202Cポップ方向書式PDF中
U+202D左から右へのオーバーライドLRO高
U+202E右から左へのオーバーライドRLO重大
U+2028行区切りLS中
U+2029段落区切りPS中