Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
bidi-guard — Сканировать код на наличие невидимых двунаправленных символов Юникода (предотвращение атаки Trojan Source, CVE-2021-42574) | Kitploit
Инструменты/GitHubGitHub/moshe-ship/bidi-guard
Статический анализАнализ уязвимостейАнализ КодаDevSecOpsБезопасность Цепочки ПоставокОбучение и Образование
GitHubmoshe-ship/bidi-guard

bidi-guard

Сканировать код на наличие невидимых двунаправленных символов Юникода (предотвращение атаки 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:~
# Сканировать текущую директорию рекурсивно
bidi-guard scan .

# Сканировать конкретный файл
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

Обнаруживаемые символы

Все 16 управляющих двунаправленных символов Unicode:

Символы, отмеченные как Высокий или Критический, могут активно изменять порядок отображаемого текста — именно они используются в атаках 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    # ничего не находит
cat file.py            # выглядит совершенно нормально

bidi-guard показывает то, что grep не может: точный символ, его положение, окружающий контекст, уровень опасности и то, что он делает. Он также может автоматически исправить, удалив их.

Лицензия

MIT — Musa the Carpenter


Представлено вам Саудовским AI-сообществом — в первую очередь для арабов и всего мира.

Скачать инструмент
КомандаЧто делает
scanСканировать файлы на наличие bidi-символов, показать результаты с контекстом
ciРежим CI — завершается с ненулевым кодом, если найдены опасные символы
fixУдалить все bidi-символы из файлов (по умолчанию интерактивно)
explainПоказать, что делает каждый bidi-символ, с наглядными примерами
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Средний