Skip to content

ToxicSnail/autofixer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

 
 
 

Contributors

Languages