ScanSecrets — это мощное расширение для Visual Studio Code, предназначенное для локального SAST-сканирования кодовой базы на предмет утекших секретов (API-ключей, токенов, паролей, PII).
Вместо простых регулярных выражений сканер использует комплексный подход: регулярные выражения + анализ энтропии по Шеннону + оценку контекста (названия переменных, тестовые/продовые файлы, наличие заглушек).
- Глубокий анализ: Ищет токены (AWS, GitHub, Slack и др.), PII (кредитные карты, телефоны) и высокоэнтропийные строки (потенциальные криптографические ключи).
- Умный скоринг: Каждой находке присваивается уровень угрозы (
CRITICAL,HIGH,MEDIUM,LOW,INFO) в зависимости от того, где она найдена (например, секрет в.env.prodполучит оценку выше, чем вtest_mocks.py). - Генерация отчетов: Автоматически создает детализированный
.jsonотчет в папкеreports/внутри вашего проекта. - Умное игнорирование: Поддерживает файл
.scanignoreдля исключения папок (node_modules,venv,.git).
Для работы Python-скриптов требуется установленная библиотека PyYAML.
Установите её глобально или в виртуальное окружение:
pip install pyyaml
### Структура проекта
```text
scansec/
├── package.json # Манифест расширения
├── tsconfig.json # Настройки TypeScript
├── db/ # YAML-базы правил и ключевых слов
│ ├── pii-stable.yml
│ └── sensitive-fields*.yml
├── python/ # Ядро сканера (Python)
│ ├── main.py # Точка входа, парсинг аргументов
│ ├── scanner.py # Обход директорий и связывание логики
│ ├── detector.py # Поиск по Regex и расчет энтропии
│ ├── rules_loader.py # Загрузка и дедупликация YAML правил
│ ├── scorer.py # Оценка находок и анализ контекста
│ ├── report_generator.py # Создание JSON и вывод в консоль
│ └── models.py # Дата-классы (DTO)
└── src/
└── extension.ts # Логика VS Code UI и запуск Python- Откройте папку с проектом в VS Code.
- Нажмите на иконку щита в правом верхнем углу редактора.
- Дождитесь завершения сканирования. Результаты появятся во вкладке Output (Вывод) -> ScanSecrets.
- JSON отчет будет сохранен в папке
reports/в корне вашего проекта.
- Создайте файлы: Скопируйте приведенные выше коды в соответствующие файлы в папке
scansecrets. - Установите зависимости: В терминале в папке
scansecrets:npm install
- Запуск отладки:
- Откройте проект в VS Code.
- Нажмите
F5.
- Проверка:
- В открывшемся окне (Extension Development Host) откройте любую папку с кодом.
- Создайте в корне этой папки файл
.scanignoreи добавьте туда папки, которые хотите скрыть (например,.git,venv,node_modules). - Нажмите на иконку щита в правом верхнем углу (рядом с Run).
- Откроется панель Output (Вывод) с результатами.
- Опционально: Зайдите в настройки (
Ctrl+,) -> Расширения -> ScanSecrets и укажите другой путь к ignore-файлу, чтобы проверить кастомную настройку.
- Упаковка плагина (чтобы установить навсегда)
Чтобы собрать плагин в формат
.vsixи установить его в свой рабочий VS Code:У вас появится файлnpx @vscode/vsce package
scansecrets-1.0.0.vsix. В основном окне VS Code перейдите во вкладку "Расширения" (Ctrl+Shift+XилиCmd+Shift+X), нажмите на три точки "..." в правом верхнем углу меню расширений -> Install from VSIX... и выберите созданный файл.