🔍 GitHub CVE Scanner - Руководство по использованию
Скрипт для сканирования репозиториев GitHub на наличие известных уязвимостей в проектах React и Next.js.
📋 Обнаруживаемые уязвимости
Сканер проверяет следующие CVE:
🚀 Как использовать
Предварительные требования
- Современный веб-браузер (Chrome, Firefox, Edge и т. д.)
- Доступ к GitHub (опционально: Personal Access Token для частных репозиториев)
Пошаговая инструкция
1. Открыть консоль браузера
- Перейдите на любую страницу GitHub (например,
https://github.com)
- Откройте DevTools:
- Chrome/Edge:
F12 или Ctrl+Shift+I (Windows) / Cmd+Option+I (Mac)
- Firefox:
F12 или Ctrl+Shift+K (Windows) / Cmd+Option+K (Mac)
- Перейдите на вкладку Console
2. Скопировать и выполнить скрипт
- Откройте файл
main.js
- Скопируйте всё содержимое файла
- Вставьте в консоль браузера
- Нажмите
Enter, чтобы выполнить
3. Настроить сканирование
Скрипт задаст несколько интерактивных вопросов:
3.1. Аутентификация (первый вопрос)
🔐 Scan private repos too?
OK = Enter PAT
Cancel = Public only
- OK: Вас попросят ввести Personal Access Token (PAT) GitHub
- Позволяет сканировать частные репозитории
- Необходим для доступа к организациям
- Cancel: Будут сканироваться только публичные репозитории
Как создать PAT:
- Перейдите по адресу:
https://github.com/settings/tokens
- Нажмите "Generate new token" → "Generate new token (classic)"
- Дайте описательное имя
- Выберите область
repo (полный доступ к репозиториям)
- Нажмите "Generate token"
- Скопируйте токен немедленно (он больше не будет показан)
3.2. Область сканирования (если аутентифицированы)
🔍 What do you want to scan?
OK = Organizations
Cancel = User Profile
- OK: Сканировать организации
- Cancel: Сканировать только профиль пользователя
3.3. Выбор организаций (если выбрано "Organizations")
🏢 Scan all organizations?
OK = All organizations
Cancel = Single organization
Вариант A - Все организации (OK):
- Скрипт автоматически найдёт все организации аутентифицированного пользователя
- Просканирует все репозитории всех организаций
Вариант B - Конкретная организация (Cancel):
- Вас попросят ввести URL или название организации:
🔗 Enter organization URL or name:
Example: github.com/my-org or my-org
- Принимаемые форматы:
github.com/my-org
https://github.com/my-org
my-org (только имя)
3.4. Профиль пользователя (если не аутентифицированы или выбрано Profile)
- Если вы находитесь на странице профиля GitHub, скрипт обнаружит это автоматически
- В противном случае будет предложено:
📊 Функции
✨ Проверка по всем веткам
Скрипт проверяет все ветки каждого репозитория, а не только ветку по умолчанию. Это гарантирует, что уязвимости в ветках разработки, staging или других активных ветках будут обнаружены.
🏢 Поддержка организаций
- Сканирует репозитории организаций GitHub
- Возможность сканировать все организации или одну конкретную
- Поддерживает ввод URL или названия организации
🔒 Доступ к частным репозиториям
С действительным Personal Access Token скрипт может:
- Получать доступ к частным репозиториям
- Сканировать частные организации
- Проверять ветки частных репозиториев
📈 Результаты
После выполнения скрипт отобразит:
Таблица результатов
Таблица в консоли, показывающая:
- Repo: Имя репозитория
- Branch: Имя проверенной ветки
- Next: Версия Next.js (если присутствует)
- React: Версия React (если присутствует)
- ReactDOM: Версия react-dom (если присутствует)
- RSCWebpack: Версия react-server-dom-webpack (если присутствует)
- RSCParcel: Версия react-server-dom-parcel (если присутствует)
- RSCTurbopack: Версия react-server-dom-turbopack (если присутствует)
- Status: Статус уязвимости
✅ Safe: Уязвимостей не обнаружено
⚠️ CVE-XXXX-XXXXX: Обнаружена уязвимость
Сводка
📊 Summary:
Total repos: 15
Branches scanned: 23
With package.json: 20
Skipped: 3 (no package.json)
⚠️ 5 vulnerable repo(s) found!
или
✅ No vulnerabilities found!
⚙️ Технические настройки
- Задержка между API-запросами: 200 мс (для предотвращения ограничения скорости)
- Задержка между сканированиями: 30 мс
- Результатов на странице: 100 элементов
- Поддержка частных репозиториев: Да (с PAT)
- Проверка веток: Все ветки каждого репозитория
🔧 Устранение неполадок
Ошибка: "Token invalid"
- Проверьте, что токен скопирован правильно
- Убедитесь, что токен имеет область
repo
- Проверьте, не истёк ли срок действия токена
Ошибка: "No repositories found"
- Проверьте, существует ли пользователь/организация
- Если вы сканируете организации, убедитесь, что у вас есть доступ
- Проверьте, есть ли репозитории в профиле/организации
Ошибка: "No organizations found"
- Проверьте, что вы аутентифицированы с действительным токеном
- Убедитесь, что вы состоите в организациях
- Токен должен иметь разрешения на доступ к организациям
Сканирование слишком медленное
- Скрипт намеренно делает задержки, чтобы избежать ограничения скорости
- Репозитории с большим количеством веток займут больше времени
- Организации с большим количеством репозиториев займут больше времени
📝 Важные заметки
- Ограничение скорости: Скрипт соблюдает лимиты API GitHub с автоматическими задержками
- Конфиденциальность: Токен используется только локально в браузере, не отправляется на внешние серверы
- Точность: Сканер проверяет только
package.json в корне репозитория
- Ветки: Проверяются все ветки, но отображаются только те, у которых есть
package.json
- Версии: Сканер обнаруживает уязвимые версии на основе определений CVE
🛡️ Безопасность
- Скрипт полностью выполняется в браузере (на стороне клиента)
- Никакие данные не отправляются на внешние серверы
- Personal Access Token используется только для запросов к API GitHub
- Рекомендуется использовать токены с минимально необходимыми областями
📄 Лицензия
MIT License
🔄 Версия
3.0.0
Разработано для обнаружения уязвимостей безопасности в проектах React и Next.js