enigma/zero
сканер онлайн
// как это работает

От адреса до промптов
для исправления — за пять минут.

Без исходного кода, без знания стека, без регистрации. Вы подтверждаете, что сайт ваш, — мы проверяем его публичную поверхность фиксированными безопасными правилами и объясняем каждую находку простыми словами.

бесплатная проверка ↵
[ url ]вы
──▶
[ verify ]вы
──▶
[ recon ]enigma
──▶
[ fetch ]enigma
──▶
[ analyze ×9 ]enigma
──▶
[ score ]enigma
──▶
[ report ]вы
// ваша часть

Пять шагов, никакой настройки.

Всё происходит в браузере. Ничего не нужно устанавливать и не нужно показывать код.

  1. 01

    Вставьте адрес

    Домен или полный адрес — сайт, веб-приложение или публичный API.

    $ ./security-scan my-app.vercel.app
  2. 02

    Подтвердите, что сайт ваш

    Добавьте meta-тег, загрузите файл или создайте DNS-запись. Примите условия. До этого никакой проверки не будет.

    ✓ владение подтверждено · meta-тег
  3. 03

    Запустите бесплатную проверку

    Basic проверяет публичную поверхность безопасными запросами только на чтение. Обычно 3–5 минут.

    [██████████░░░░░] 64% анализ
  4. 04

    Прочитайте отчёт

    Находки по приоритету, у каждой — доказательство и понятное исправление. На странице или в PDF.

    1 high · 3 medium · 2 low · 4 info
  5. 05

    Исправьте с ИИ и проверьте снова

    Скопируйте готовые промпты в Cursor, Lovable, Bolt или Claude Code. Повторная проверка покажет, что проблема ушла.

    ✦ промпт скопирован → повторить ↻
// под капотом

Шесть этапов. Фиксированные правила. Одинаковый вход — одинаковый результат.

Сканер детерминирован: никаких догадок и никакого ИИ в процессе. Подтверждение владения — жёсткий барьер: пока его нет, сайт никто не трогает.

$ ez pipeline --profile=basic --explain6 этапов
01 подтверждение владенияmeta-тег · файл · dns txtобязательно
02 разведка и профильdns · субдомены · доступность · сайт или api?пассивно
03 публичная поверхностьстраницы · js-бандлы · source maps · служебные путипассивно
04 анализ9 модулей параллельно — что проверяем ↓параллельно
├─ tls и httpsпротокол, сертификат, редиректы, hstsпассивно
├─ заголовки и cookiescsp, фреймы, referrer, secure / httponly / samesiteпассивно
├─ открытые файлы.git .env бэкапы листинг каталогов debugпробы
├─ секреты в клиентском кодеключи и токены в js и source mapsпассивно
├─ фингерпринт → cveнайденные версии сверяются с известными CVEпассивно
└─ ветка apiopenapi / swagger · graphql introspection · подробные ошибкипробы
05 оценкаважность × достоверность → приоритет исправления
06 отчётстраница + pdf · доказательства · шаги исправления · промпты для ИИ
// что проверяем

Девять модулей. Каждый — простыми словами.

[web] любая цель[api] цели с API
tls[web]

TLS и HTTPS

  • · версии протокола и слабые шифры
  • · срок и доверие сертификата
  • · редирект HTTP → HTTPS, HSTS
пример находки
MEDIUMсертификат истекает через 9 дней
headers[web]

Заголовки безопасности

  • · Content-Security-Policy
  • · X-Frame-Options / frame-ancestors
  • · CORS, nosniff, версии ПО
пример находки
LOWнет Content-Security-Policy
cookies[web]

Флаги cookies

  • · Secure на cookies по HTTPS
  • · HttpOnly у cookie авторизации
  • · настройки SameSite
пример находки
MEDIUMcookie сессии без HttpOnly
exposed-files[web]

Открытые файлы

  • · .git и .env в корне сайта
  • · бэкапы и архивы (.zip, .sql, .bak)
  • · листинг каталогов, debug-страницы
пример находки
CRITICAL/.env отдаёт 200 с ключами
js-secrets[web]

Секреты в клиентском коде

  • · API-ключи и токены в JS-бандлах
  • · секреты в публичных source maps
  • · сервисные ключи (service_role и др.)
пример находки
CRITICALключ Stripe в chunk-81.js
cve-match[web]

Известные уязвимости

  • · версии фреймворков и библиотек
  • · баннеры серверного ПО
  • · сверка с публичной базой CVE
пример находки
LOW[email protected] → CVE-2024-34351 (предположение)
openapi[api]

OpenAPI / Swagger

  • · публичный swagger-ui и /openapi.json
  • · служебные и админские методы в схеме
  • · чувствительные поля в схеме
пример находки
MEDIUM/swagger показывает 14 админских методов
graphql[api]

GraphQL

  • · introspection включён в продакшене
  • · схема показывает внутренние типы
  • · открытый GraphiQL / playground
пример находки
MEDIUMintrospection отдаёт всю схему
verbose-errors[api]

Подробные ошибки

  • · stack trace в ответах
  • · отладочные страницы фреймворка
  • · тексты ошибок базы данных
пример находки
LOWответ 500 показывает stack trace
// что делает basic — и чего не делает

Смотрим, но не трогаем.

ограничение скорости · только чтение · без нагрузки
класс 01пассивно

Пассивные проверки

Получаем публичные ресурсы, как любой посетитель, и разбираем ответы.

+ TLS и сертификат
+ заголовки безопасности
+ флаги cookies
+ JS-бандлы и source maps
+ фингерпринт технологий
класс 02пробы

Лёгкие активные пробы

Несколько безопасных запросов только на чтение к местам, которые не должны быть публичными.

+ GET /.git/HEAD, /.env, бэкапы
+ OPTIONS и CORS с безобидным Origin
+ GraphQL introspection только на чтение
+ поиск OpenAPI / Swagger
не в basicadvanced · скоро

Только в Advanced

Будущий платный режим: глубже проверки, строже подтверждение полномочий, согласованные границы.

− эксплуатация уязвимостей
− подбор паролей и обход авторизации
− использование найденных ключей
− доступ к данным других пользователей
− сканирование портов и нагрузка
// из чего состоит находка

Каждая находка отвечает на шесть вопросов.

  1. 01чточто именно нашли
  2. 02гдеадрес и файл
  3. 03доказательствоответ, который это подтверждает
  4. 04последствиячто может пойти не так
  5. 05как исправитьшаги простыми словами
  6. 06промпт для иивставить в ваш ИИ-инструмент
● подтверждено

Мы увидели это напрямую. Доказательство приложено.

◌ предположение

Вывод по косвенным признакам, например по номеру версии. Проверьте вручную.

что

В коде, который получает каждый посетитель, найден ключ формата Stripe live secret key (sk_live_…).

где
GEThttps://my-app.vercel.app/_next/static/chunks/81-a3f9.js
доказательство
HTTP 200
const stripe = new Stripe("sk_l…Qx4")
HTTP 200наблюдениеправило secrets.client_bundle
Значение скрыто. SHA-256: 9f2c41a7d0…
Ключ в отчёте замаскирован. Мы не использовали, не проверяли и не сохраняли его.
последствия

С этим ключом кто угодно может создавать платежи, оформлять возвраты и читать данные клиентов и платежей в вашем аккаунте Stripe.

как исправить

Отзовите ключ в Stripe Dashboard → Developers → API keys → Roll key. Используйте секретный ключ только на сервере (API route / server action) из process.env.STRIPE_SECRET_KEY, без префикса NEXT_PUBLIC_.

промпт для ии
✦ вставьте в Cursor, Lovable, Bolt, Claude Code…

В клиентском коде моего Next.js-приложения https://my-app.vercel.app найден секретный ключ Stripe. Перенеси всё, что использует этот ключ, в серверный код (API routes или server actions), читай его из process.env.STRIPE_SECRET_KEY без префикса NEXT_PUBLIC_ и вызывай эти методы с клиента. Не меняй цены и логику оплаты. Перечисли изменённые файлы.

[ правила, а не ии ]

Проверка детерминирована.

Что проверять, решают фиксированные правила. ИИ не выбирает цели, не отправляет запросы и не пишет отчёт — тексты и промпты тоже взяты из правил.

[ приватно ]

Результаты остаются вашими.

Регистрация не нужна. Отчёт открывается по приватной ссылке, а секреты в доказательствах всегда скрыты.

[ честно ]

Показываем, чего не увидели.

В каждом отчёте есть покрытие и ограничения. Нет находок — не значит безопасно: значит, на публичной поверхности ничего не нашлось.

// вопросы

Что спрашивают вайб-кодеры.

Да. Basic отправляет немного запросов только на чтение — не больше трёх в секунду, без эксплуатации и без нагрузки. Для сайта это выглядит как аккуратный посетитель.

Проверьте приложение раньше, чем это сделает кто-то другой.

Бесплатно. Около пяти минут. Без регистрации.

~/enigma-zero — basic scanпассивно + безопасные пробы
# вставьте домен или полный адрес и нажмите enter