Skip to content

[Проблема] 9 проблем безопасности при проверке через Bandit #1069

Description

@bug0rig

Версия TG WS Proxy

v1.8.1

Опишите вашу проблему

Я решил перестраховаться и запустил Bandit из корня репозитория (работал на ALTLinux 11.1). Вот что он нашел:

Файл: balancer.py
Тип проблемы: B311 – использование random.choice/random.randint для криптографических целей
Тяжесть: Low
Краткое описание: Стандартный генератор случайных чисел не подходит для безопасности.
Рекомендация: Заменить на secrets.choice / secrets.randbelow.
────────────────────────────────────────
Файл: config.py
Тип проблемы: B311 – random.choices в URL‑запросе
Тяжесть: Low
Краткое описание: Тот же недостаток.
Рекомендация: Использовать secrets.choice.
────────────────────────────────────────
Файл: ctk_theme.py, ctk_tooltip.py, ctk_tray_ui.py, tray_common.py, tg_ws_proxy.py, pool.py,
raw_websocket.py, win32_theme.py, windows.py, update_check.py
Тип проблемы: B110 – except Exception: pass (молчаливое подавление ошибок)
Тяжесть: Low
Краткое описание: Потенциально скрывает реальные сбои, усложняет отладку.
Рекомендация: Добавить логирование (log.exception), либо обработать конкретные исключения.
────────────────────────────────────────
Файл: fake_tls.py
Тип проблемы: B311 – random.randint для размера зашифрованных данных
Тяжесть: Low
Краткое описание: Не крипто‑стойко.
Рекомендация: secrets.randbits/secrets.randbelow.
────────────────────────────────────────
Файл: macos.py
Тип проблемы: B603 – вызовы subprocess.run/subprocess.call без shell=True (но без валидации входных
данных)
Тяжесть: Low
Краткое описание: Возможна передача не проверенных строк в системные вызовы.
Рекомендация: Валидировать/экранировать параметры, использовать массив аргументов как уже делается,
но убедиться, что аргументы не от пользователя.
────────────────────────────────────────
Файл: macos.py
Тип проблемы: B607 – запуск процессов по частичному пути (osascript, open, pbcopy)
Тяжесть: Low
Краткое описание: Неявный путь может привести к выполнению неожиданного исполняемого файла.
Рекомендация: Указать полный путь к исполняемому файлу или убедиться, что вызывается только
доверенный.
────────────────────────────────────────
Файл: utils.py
Тип проблемы: B104 – привязка к 0.0.0.0 (прослушивание всех интерфейсов)
Тяжесть: Medium
Краткое описание: Открывает сервис для внешних соединений без контроля доступа.
Рекомендация: Добавить возможность конфигурировать хост, по умолчанию привязываться к 127.0.0.1 или
использовать TLS/аутентификацию.
────────────────────────────────────────
Файл: windows.py
Тип проблемы: B404 – импорт subprocess (подсказка о потенциальных рисках)
Тяжесть: Low
Краткое описание: Просто предупреждение.
Рекомендация: При работе с subprocess проверять ввод, использовать безопасные аргументы.
────────────────────────────────────────
Файл: windows.py
Тип проблемы: B606 – запуск процесса без оболочки (os.startfile)
Тяжесть: Low
Краткое описание: Открывает файл/URL напрямую.
Рекомендация: Проверить, что путь контролируемый, либо использовать безопасный API.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions