AutoFixer – это инструмент для автоматического обнаружения и исправления некоторых распространённых уязвимостей в Python-коде:
- Небезопасные вызовы
eval() - SQL-инъекции
-
Поиск и исправление eval():
Скрипт анализирует файлы на наличие вызововeval()и автоматически заменяет их наast.literal_eval()(или иные безопасные аналоги), а также добавляет импортastпри необходимости. -
Поиск и исправление SQL-инъекций:
Скрипт ищет места, где SQL-запрос формируется путём небезопасной конкатенации строк (например,"SELECT ... " + str(user_input)), и переписывает код на параметризованные запросы (например,cursor.execute(query, (param,))).
python3 -m venv .venv
source .venv/bin/activatepip install --upgrade pip setuptools wheel
pip install -r requirements.txtpip install .При установке будет создан(ы) CLI-скрипт(ы) (например, sql-fix, eval-fix) в виртуальном окружении.
В корне проекта лежит скрипт main.py, который умеет работать как с аргументами, так и в интерактивном режиме.
- Интерактивный режим (просто запустить без аргументов):
python main.py
- Режим командной строки:
python main.py [sql|eval|all] <your_path_to_test> [--fix]
Если вы установили пакет командой 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!