Skip to content

A tool for automatically detecting and fixing popular python vulnerabilities such as SQL injection, eval() in Python code.

Notifications You must be signed in to change notification settings

ToxicSnail/autofixer

Repository files navigation

AutoFixer

AutoFixer – это инструмент для автоматического обнаружения и исправления некоторых распространённых уязвимостей в Python-коде:

  • Небезопасные вызовы eval()
  • SQL-инъекции

Возможности

  • Поиск и исправление eval():
    Скрипт анализирует файлы на наличие вызовов eval() и автоматически заменяет их на ast.literal_eval() (или иные безопасные аналоги), а также добавляет импорт ast при необходимости.

  • Поиск и исправление SQL-инъекций:
    Скрипт ищет места, где SQL-запрос формируется путём небезопасной конкатенации строк (например, "SELECT ... " + str(user_input)), и переписывает код на параметризованные запросы (например, cursor.execute(query, (param,))).

Установка

Шаг 1. (Опционально) Создайте и активируйте виртуальное окружение

python3 -m venv .venv
source .venv/bin/activate

Шаг 2. Установите зависимости

pip install --upgrade pip setuptools wheel
pip install -r requirements.txt

Шаг 3. Установите пакет

pip install .
При установке будет создан(ы) CLI-скрипт(ы) (например, sql-fix, eval-fix) в виртуальном окружении.

Запуск

Вариант 1. Запуск через main.py

В корне проекта лежит скрипт main.py, который умеет работать как с аргументами, так и в интерактивном режиме.

  • Интерактивный режим (просто запустить без аргументов):
    python main.py
  • Режим командной строки:
    python main.py [sql|eval|all] <your_path_to_test> [--fix]

Вариант 2. Использование консольных команд(entry поинты)

Если вы установили пакет командой pip install ., и в вашем setup.py прописаны entry_points вида:

entry_points={
    'console_scripts': [
        'sql-fix=sql_injection_fixer_v2.sql_fixer:main',
        'eval-fix=eval_fixer.eval_fixer:main'
    ],
},

После такой установки в активированном окружении будут доступны команды:

  • SQL-инъекции:
    • Показать справку(инструкции)
      sql-fix --help 
    • Поиск уязвимостей
      sql-fix /path/to/your/code
    • Поиск с автоисправлением
      sql-fix /path/to/your/code --fix
  • eval():
    • Показать справку(инструкции)
      eval-fix --help 
    • Поиск уязвимостей
      eval-fix /path/to/your/code
    • Поиск с автоисправлением
      eval-fix /path/to/your/code --fix

Структура проекта

autofixer/
  ├── .venv/
  ├── eval_fixer/
  │    ├── __init__.py
  │    └── eval_fixer.py
  ├── sql_injection_fixer_v2/
  │    ├── __init__.py
  │    └── sql_fixer.py
  ├── test_code/
  │    ├── example.py
  │    └── vulnerable_code.py
  ├── requirements.txt
  ├── setup.py
  ├── main.py
  └── README.md

Примечания

  • Файлы build/, dist/, *.egg-info и виртуальные окружения (.venv/) обычно не коммитят в репозиторий. Можете добавить их в .gitignore.

Лицензия

Проект разработан в рамках курсовой работы Горького Кирилла в 2024-2025 г.


AutoFixer — это экспериментальный инструмент.

Он может не учесть все возможные варианты уязвимостей. Рекомендуется вручную проверять исправленный код перед деплоем в production. Также не рекомендуется использовать продукт в корпоративной или комерческой разработке.

Если у вас есть предложения по улучшению или вы нашли баг, создавайте issue или Pull Request!

About

A tool for automatically detecting and fixing popular python vulnerabilities such as SQL injection, eval() in Python code.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages