Skip to content

Lannix/ScanSec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScanSecrets (VS Code Extension)

ScanSecrets — это мощное расширение для Visual Studio Code, предназначенное для локального SAST-сканирования кодовой базы на предмет утекших секретов (API-ключей, токенов, паролей, PII).

Вместо простых регулярных выражений сканер использует комплексный подход: регулярные выражения + анализ энтропии по Шеннону + оценку контекста (названия переменных, тестовые/продовые файлы, наличие заглушек).

Ключевые особенности

  1. Глубокий анализ: Ищет токены (AWS, GitHub, Slack и др.), PII (кредитные карты, телефоны) и высокоэнтропийные строки (потенциальные криптографические ключи).
  2. Умный скоринг: Каждой находке присваивается уровень угрозы (CRITICAL, HIGH, MEDIUM, LOW, INFO) в зависимости от того, где она найдена (например, секрет в .env.prod получит оценку выше, чем в test_mocks.py).
  3. Генерация отчетов: Автоматически создает детализированный .json отчет в папке reports/ внутри вашего проекта.
  4. Умное игнорирование: Поддерживает файл .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

Использование

  1. Откройте папку с проектом в VS Code.
  2. Нажмите на иконку щита в правом верхнем углу редактора.
  3. Дождитесь завершения сканирования. Результаты появятся во вкладке Output (Вывод) -> ScanSecrets.
  4. JSON отчет будет сохранен в папке reports/ в корне вашего проекта.


Как добавить и проверить (пошагово)

  1. Создайте файлы: Скопируйте приведенные выше коды в соответствующие файлы в папке scansecrets.
  2. Установите зависимости: В терминале в папке scansecrets:
    npm install
  3. Запуск отладки:
    • Откройте проект в VS Code.
    • Нажмите F5.
  4. Проверка:
    • В открывшемся окне (Extension Development Host) откройте любую папку с кодом.
    • Создайте в корне этой папки файл .scanignore и добавьте туда папки, которые хотите скрыть (например, .git, venv, node_modules).
    • Нажмите на иконку щита в правом верхнем углу (рядом с Run).
    • Откроется панель Output (Вывод) с результатами.
    • Опционально: Зайдите в настройки (Ctrl+,) -> Расширения -> ScanSecrets и укажите другой путь к ignore-файлу, чтобы проверить кастомную настройку.
  5. Упаковка плагина (чтобы установить навсегда) Чтобы собрать плагин в формат .vsix и установить его в свой рабочий VS Code:
    npx @vscode/vsce package
    У вас появится файл scansecrets-1.0.0.vsix. В основном окне VS Code перейдите во вкладку "Расширения" (Ctrl+Shift+X или Cmd+Shift+X), нажмите на три точки "..." в правом верхнем углу меню расширений -> Install from VSIX... и выберите созданный файл.

About

Плагин для VS Code для проверки кода на утечки секретов с помощью regex, энтропии, слов исключений. Работает полностью локально.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors