МТС True TechИтоговый проект · задача № 2Версия 1.0
SecureCode AI
Локальный AI-ассистент разработчика для аудита безопасности кода: находит уязвимости, предлагает исправления и проверяет их, не отправляя код в облако.
РепозиторийИтоговый отчётЭкспериментыNotebookРелизы
Задача
Статические анализаторы работают по жёстким правилам и дают много ложных срабатываний, а отправлять приватный код во внешние облачные сервисы нельзя. SecureCode AI анализирует локальный репозиторий на Python, JavaScript, TypeScript и Go с помощью квантованной языковой модели, находит уязвимости и предлагает проверенные исправления.
Инструменты
Синтаксические деревья (ast, tree-sitter), поиск захардкоженных секретов, уязвимые версии библиотек по базе OSV, детерминированные правила для 35 типов CWE.
Поиск
Языковая модель сама ищет уязвимости по всему коду, независимо от сканеров; может сообщить о любой из 139 CWE.
Аудитор
Проверяет каждого кандидата: доходят ли недоверенные данные до уязвимой операции и есть ли реальный ущерб.
Скептик
Второй агент пытается опровергнуть находку; принимаются только те, что выдержали проверку.
Архитектор
Модель предлагает исправление в виде diff. Патч проверяется во временной копии; исходный репозиторий не меняется.
Отчёт
Markdown и HTML: CWE, категория OWASP Top 10, строка и готовое исправление.
Результат аудита
Демонстрационный файл с SQL-инъекцией. Одинаковый результат на локальной Qwen 2.5 Coder 7B (Q4_K_M, Ollama) и на DeepSeek.
| CWE | OWASP Top 10 | Уровень | Место | Итог |
|---|
| CWE-89 | A03:2021 Injection | HIGH | app.py:5 | COMPLETED |
- return conn.execute("SELECT * FROM users WHERE name = '" + name + "'")
+ return conn.execute("SELECT * FROM users WHERE name = ?", (name,))
Патч прошёл разбор и повторное сканирование (0 сигналов). Прогон на DeepSeek стоил $0.00014.
Отчёт: QwenОтчёт: DeepSeek
Корпус CVEfixes600
примеров, по 200 на Python, JS/TS и Go
Recall hybrid35.8%
против 34.3% у Semgrep
Автотестов3292
линтеры, типы и тесты в CI
Эксперименты
| Конфигурация | Precision | Recall | F1 |
|---|
| Сканеры SecureCode | 49.0% | 25.7% | 33.7% |
| DeepSeek, one-shot | 52.0% | 22.7% | 31.6% |
| Hybrid: сканеры и DeepSeek | 49.9% | 35.8% | 41.7% |
| Semgrep 1.177.0 | 50.0% | 34.3% | 40.7% |
На отложенной выборке полнота hybrid 32,8% против 32,5% у Semgrep; интервал разницы включает ноль, то есть hybrid на уровне статического анализатора, но не лучше. Precision около 50% объясняется устройством корпуса: одна и та же функция встречается в уязвимой и исправленной версиях.
Подробнее об экспериментах
Запуск
git clone https://github.com/shorinversion/securecode-ai
cd securecode-ai
python deploy/docker/quickstart.py --demo # нужен только Docker
python deploy/docker/quickstart.py --demo --provider local # uv и Ollama, модель скачается