
Эвристический движок графа знаний без AST для глубокого анализа репозитория и сканирования безопасности с нулевым доверием. Интегрируется как компонент GitLab CI/CD, блокирует враждебный код и экспортирует телеметрию SARIF в GitLab Security Dashboard.
1 сканирование · 97 структурных сигналов · 50+ языков · 0 необходимости в компиляции
19 оценок подверженности риску · 6 итоговых отчётов · 0 зависимостей · pip install gitgalaxy
GitGalaxy создан для решения одной повторяющейся проблемы: понимания большой, реальной, мультиязычной кодовой базы, которая не компилируется чисто, — именно в таком состоянии находятся большинство production-репозиториев, а не в виде чистого ввода на одном языке, который предполагает большинство инструментов статического анализа.
time(s) ≈ 3.36e-05 × LOC^0.969 выше
этого порога (R²=0.88, почти линейно, без деградации на больших входных данных) — график
и вывод см. в разделе Доказательства, а не просто утверждения,
а не только этот округлённый заголовок.Это не сканер уязвимостей, конкурирующий с CodeQL, Semgrep или SonarQube. Эти инструменты выполняют глубокий и точный анализ после того, как ваш код компилируется, как правило, по одному языку за раз. GitGalaxy сначала отвечает на другой вопрос — как на самом деле выглядит вся эта система и где сосредоточен риск, — по всем языкам репозитория одновременно, ещё до того, как у этих более глубоких инструментов появится сборка для работы. То, где именно начинается и заканчивается работа каждого инструмента, описано ниже в разделе «Как это сравнивается архитектурно».
GitGalaxy может оценивать полные репозитории, состоящие из смесей 50+ различных языков,
составлять карту архитектуры и выявлять подверженности риску вместе с приоритизированными
целями рефакторинга — горячие точки, риск bus-factor и несущие файлы, — чтобы вы знали, на
чём сосредоточиться в первую очередь. График ниже — это workflow одного сканирования GitGalaxy
нашего золотого тестового репозитория, который содержит примеры кода от полётного ПО
Apollo-11 1969 года до современных технологических стеков. Бенчмарк

Основной результат работы GitGalaxy — одна вещь: детерминированный структурный граф всего репозитория. Аудит безопасности, приоритизация рефакторинга и перевод легаси-кода на современные языки (см. раздел Инструменты для корпоративных кодовых баз и сценарии использования ниже) — всё это потребители одного и того же графа, а не отдельные продукты с отдельными движками, — поэтому этот инструмент читается скорее как платформа архитектурной аналитики, чем как узкоспециализированный сканер уязвимостей.
Большинство движков анализа кода используют AST, например tree-sitter, который даёт чрезмерно детализированное представление репозитория (как если бы вы попросили понять устройство дома и получили список каждого кирпича и каждого оконного стекла) и ограничивает языки и файлы, которые можно сканировать. Современные репозитории полиязычны. Во многих репозиториях есть старый код без качественного AST. Чтобы обойти это, GitGalaxy использует собственный regex/лексический движок структурного анализа со слоем статистики поверх него: он строит вектор признаков для каждого файла (из ~97 категорий regex-«сигналов», отмечающих границы функций, поток управления, ввод/вывод, мутацию состояния и десятки других структурных и связанных с безопасностью поведений) и для каждого репозитория (граф зависимостей через разрешение импортов + PageRank/центральность), затем преобразует эти сырые счётчики в нормализованные оценки риска от 0 до 100 с помощью сигмоидных функций и экспортирует результат в шесть форматов.
GitGalaxy обменивает точность уровня AST на скорость на порядки выше и универсальное покрытие языков — в том же духе, в котором BLAST обменял исчерпывающее выравнивание Смита–Уотермана на эвристическую скорость в геномике. Вывод включает SARIF, SBOM в формате CycloneDX, запрашиваемый граф знаний SQLite, оптимизированную для LLM сводку по архитектуре и данные 3D-визуализации за один проход сканирования — реальные цифры времени сканирования, а не голые прилагательные, см. в разделе «Какую проблему это решает?» выше.
Результат — детерминированный граф знаний репозитория, построенный без единого требования к компиляции кода. Он вычисляет соотношение тестового кода к основной логике, отображает «радиус поражения» каждого файла вниз по графу зависимостей и выявляет сигналы структуры проекта, которые построчные линтеры полностью пропускают. Извлечение сигналов для каждого файла выполняется за время, линейно зависящее от размера кодовой базы; метрики графа на уровне репозитория (центральность, обнаружение сообществ) используют стандартные алгоритмы сетевого анализа с явными ограничениями выборки на очень больших графах.

GitGalaxy создаёт два разных типа выходных данных, и их следует читать по-разному.
Оценки подверженности риску — это нормированный по плотности сигнал в диапазоне 0–100 по 19 категориям (секреты, поверхность инъекций, повреждение памяти и другие), агрегируемый от функции к файлу, к папке и к репозиторию. Высокий показатель означает этому стоит уделить внимание в первую очередь — это сигнал приоритизации, а не вердикт. Два файла могут иметь одинаковый показатель по совершенно разным причинам: реальная проблема или легитимный паттерн, который на поверхности выглядит идентично. Зашифрованное вредоносное ПО и хорошо протестированная криптографическая процедура оба создают высокую энтропию. GitGalaxy не может сказать, какой из случаев он нашёл, — только то, что там есть что-то, заслуживающее второго взгляда.
Находки — это отдельные флаги на уровне строк: конкретная структурная сигнатура, пересекшая порог риска. Это доказательства для проверки, а не подтверждённые уязвимости. GitGalaxy никогда не выполняет код, не трассирует потоки данных во время выполнения и не проверяет эксплуатируемость, — он сообщает, что паттерн существует в тексте, на этой конкретной строке, и передаёт вам контекст, чтобы вы вынесли суждение самостоятельно.
Это сделано намеренно, а не является скрываемым ограничением. GitGalaxy спроектирован так, чтобы ошибаться в сторону полноты, а не точности: помечать больше и позволять человеку или более глубокому инструменту сузить список, а не рисковать промолчать о чём-то реальном. Ложные срабатывания — ожидаемая цена такого компромисса, как и для любого статического анализатора, который не исполняет читаемый код.
Это также означает, что GitGalaxy наиболее силён против конкретного класса проблем —
халатности, а не злонамеренного обхода. Захардкоженный ключ, который кто-то забыл удалить,
небезопасный реестр, явно опасный вызов eval() — никто на той стороне не пытается спрятаться
от сканера. Целенаправленно мотивированный злоумышленник, знающий, как работает статическое
сигнатурное обнаружение, может без особых усилий обойти отдельные сигналы, такие как пороги
энтропии. Относитесь к GitGalaxy как к быстрому первому проходу по кодовой базе, слишком
большой для ручного чтения, — а не как к последнему слову о том, безопасно ли что-то.
Большинство сканеров зависимостей работают по справочной таблице: они знают об уязвимости, потому что кто-то её нашёл, зарегистрировал, и теперь у неё есть номер CVE в ленте. Это полезно, но неизбежно реактивно: сканер, построенный таким образом, слеп ко всему, что ещё не обнаружено и не раскрыто, включая простые варианты известных вредоносных паттернов, которые лишь немного отличаются от зарегистрированного экземпляра.
GitGalaxy использует другой подход: вместо сопоставления известных экземпляров он сопоставляет классы слабостей. Его находки тегируются по CWE (Common Weakness Enumeration) — захардкоженные учётные данные, динамическое выполнение кода, небезопасная десериализация, — а не по ID CVE. Структурная сигнатура «динамического выполнения заражённых входных данных» обнаруживает этот паттерн везде, где бы он ни появился, с любыми именами переменных, в любом конкретном расположении, — а не только тот единственный случай, на который кто-то уже подал отчёт.
Та же философия распространяется на слой SBOM. Вместо вопроса «есть ли эта версия пакета в базе данных уязвимостей» GitGalaxy задаёт вопрос: «соответствует ли фактическое содержимое пакета на диске структурно тому, как должна выглядеть легитимная версия» — энтропия, структурный отпечаток, флаги поведенческих аномалий. Именно так подделанная зависимость обнаруживается в первый же день, до того как кто-то что-то обнаружил или раскрыл, потому что ждать CVE не нужно.
Это дополнение к инструментам на основе CVE-лент (Snyk, Dependabot, OSV-Scanner), а не их замена: эти инструменты — правильный ответ на вопрос «присутствует ли эта конкретная известная ошибка». GitGalaxy — правильный ответ для более широкой сети: классы слабостей и физические аномалии, для которых не требуется, чтобы кто-то сначала нашёл и зарегистрировал конкретный экземпляр.
Это самостоятельно заявленное сравнение того, что каждый инструмент структурно требует и что обнаруживает, а не независимый бенчмарк, — сверяйтесь с собственной документацией каждого проекта. Оно существует, чтобы прямо ответить на один вопрос: какой именно пробел призван закрыть GitGalaxy по сравнению с инструментами, выполняющими смежную, но иную работу.
Именно там, где аналогам GitGalaxy в категории SAST нужен AST или компилирующая сборка, а инструментам на основе CVE-лент нужен манифест пакета, и находится пробел, для закрытия которого создан GitGalaxy, — а не утверждение, что он заменяет то, что они делают хорошо.
Каждое утверждение о «структурных сигнатурах» и «отсутствии AST» выше подкреплено тремя вещами, которые вы можете проверить и перезапустить сами, а не просто принять на веру:
gitgalaxy/standards/language_standards.py определяет каждое regex-правило, которое движок использует для распознавания конструкции — начало функции, граница API, обход защиты, — на 45 языках, имеющих реальные структурные сигнатуры (всего ~1970 скомпилированных паттернов). Каждое из этих правил проверяется на то, что оно должно сопоставлять, что должно явно исключать (проверка ложных срабатываний, которую пропускает большинство regex-инструментов), и что его нельзя повесить враждебным вводом. Полный индекс — в tests/README.md, а аудит, который его завершил, — в epic #518: по ходу дела были найдены и исправлены десятки реальных regex-багов, а не только теоретическое покрытие.language-crucible — это закреплённый, тегированный снимок ~120 реальных подкаталогов, взятых из крупных open-source проектов: C++ Godot, компилятор Roslyn на C#, curl, Kubernetes, полётное ПО AGC Apollo 11 и другие, — намеренно оставленных отсоединёнными и некомпилируемыми, в том же враждебном состоянии, в котором находятся реальные репозитории. Каждый pull request, затрагивающий парсинг-движок, пересканирует весь корпус и сравнивает вывод поле за полем с закоммиченным снимком (tests/golden_master_audit.json); отличие означает, что вывод изменился на реальном коде, и его нужно объяснить до того, как изменение будет принято, — это не smoke-тест, а настоящее сравнение с golden master. О том, как именно это подключено к CI, см. , а о том, почему корпус устроен именно так, — .GitGalaxy предназначен для запуска в CI, а не только для получения звёзд и забвения, — поэтому мы отслеживаем интеграцию в CI/production как отдельный сигнал внедрения наряду с человеческим обнаружением, а не отфильтровываем его как шум.
Слева: звёзды и форки GitHub (кумулятивно — восстановлено по собственной временной метке каждой звезды и каждого форка, а не просто снимок на будущее) наряду с ежедневными уникальными клонировавшими и просмотрами профилей. Справа: использование GitLab CI/CD Catalog (уникальные проекты, запускающие GitGalaxy в пайплайне за последние 30 дней) и внедрение GitHub Action (уникальные репозитории, ссылающиеся на action в workflow, через поиск по коду — GitGalaxy ещё нет в Marketplace, так что это лучший доступный пассивный сигнал). В отличие от левой панели, GitHub и GitLab не раскрывают никакой истории по этим двум — ожидайте, что правая панель будет заполняться день за днём, а не покажет ретроспективный тренд.
Совокупный объём распространения через PyPI, GitHub и GitLab относительно наших базовых контрольных репозиториев — не единообразно дедуплицированный подсчёт. Количество уникальных клонировавших на GitHub и уникальных проектов на GitLab действительно дедуплицировано; публичные данные о загрузках PyPI не имеют идентичности, по которой можно было бы дедуплицировать (измерено без зеркал, что исключает известных зеркальных синхронизирующих ботов, но не установки из CI), так что этот компонент — сырой подсчёт событий загрузки. Линии разбивки GitHub/PyPI начинаются не с начала окна, потому что отслеживание по источникам было добавлено после отслеживания общего объёма; линия общего объёма до этого момента агрегирует все источники.
Полная методология, включая то, что именно дедуплицируется, а что нет по каждому источнику: squid-protocol/squid-telemetry.
GitGalaxy выполняет 100% своего сканирования и векторизации локально — движок работает одинаково как в полностью изолированной среде (air-gapped), так и при наличии подключения.
Вставьте шаблон для вашей платформы прямо в свой пайплайн — каждый из них запускает сканирование GitGalaxy и может прервать сборку при превышении порога риска или обнаружении сигнатур вредоносного ПО.
Структурный граф основного движка питает набор автономных инструментов, построенных поверх него; каждый из них является отдельным модулем в gitgalaxy/tools/, который использует тот же детерминированный результат сканирования, а не переанализирует репозиторий заново.
Детерминированный конвейер трансляции с высокой точностью. Он преобразует унаследованный COBOL в полностью компилируемые современные архитектуры Spring Boot, точно отображая память и создавая каркасы JPA-сущностей, REST-контроллеров и Maven-сборок, после чего использует ИИ для перевода изолированной бизнес-логики.
Аналитический набор для очистки мейнфрейм-монолитов. Он безопасно нейтрализует устаревшие лексические ловушки, извлекает мёртвую исполнительную память, строит топологические DAG-порядки выполнения и генерирует JCL-конфигурации с нулевым доверием (Zero-Trust) для современных облачных развёртываний.
Pre-commit файрволы, которые сканируют физическое содержимое файлов, а не доверяют манифест-файлам, — созданы для блокировки стеганографии, циклов побайтового XOR-дешифрования, гомоглифного тайпсквоттинга и открытых криптографических хранилищ до того, как они попадут в ваш CI/CD пайплайн. Разверните напрямую через наш GitHub Action.
Генератор Software Bill of Materials (SBOM), который не доверяет слепо package.json или requirements.txt, — он находит физические зависимости на диске, проверяет их энтропию и лингвистическую идентичность на соответствие тому, как должна выглядеть легитимная версия, и формирует строгие JSON-отчёты CycloneDX 1.4.
Детерминированный инструмент картирования недокументированной и устаревшей поверхности API. Он использует структурные регулярные выражения для поиска активной физической логики маршрутизации (Express, Spring Boot, FastAPI) и применяет теорию множеств к официальной документации OpenAPI/Swagger, чтобы выявить Shadow API (недокументированные маршруты) и Ghost API (документированные маршруты, которые больше не реализованы).
Анализ логов, работающий со скоростью 0,07 ГБ/с без необходимости индекса. Он потоково обрабатывает огромные дампы баз данных, чтобы находить и маскировать PII (банковские карты, номера SSN, AWS-ключи), и использует статические карты архитектуры для вывода частоты выполнения в рантайме в виде ASCII-гистограмм временных рядов.
Сенсор AppSec помечает ИИ-агентов, подключённых к возможности прямого изменения состояния: фреймворк оркестрации LLM (LangChain, LlamaIndex), импортированный вместе с прямым сетевым/дисковым вводом-выводом, в сочетании с плотностью защитного программирования ниже порогового значения. Это сигнал на основе идентичности библиотек, а не утверждение о поведении в рантайме, — движок, работающий только с регулярными выражениями и не имеющий трассировки потоков данных, не может доказать, что код реально выполняет этот путь, поэтому и не заявляет об этом (см. #1102 для проверок, которые были удалены за такое недоказуемое утверждение). Отдельно Dev Agent Firewall оценивает массу токенов и радиус поражения, чтобы ограничить автономных агентов кодирования от изменения опасных файлов или файлов, истощающих контекстные токены.
Если вы предпочитаете визуальную аналитику, мы создали топологическую панель, где каждый файл представлен узлом, размер и цвет которого зависят от конкретных метрик риска.
Просто перетащите сгенерированный файл your_repo_GPU_galaxy.json (или .zip вашего исходного репозитория) прямо в GitGalaxy.io. Вся отрисовка и сканирование происходят полностью в локальной памяти вашего браузера.
Картирование 3,2 миллиона строк C++ за 11 секунд | OpenCV 

Авторское право (c) 2026 Joe Esquibel
GitGalaxy распространяется под лицензией PolyForm Noncommercial License 1.0.0.
Мы глубоко привержены сообществам открытого кода и академическим кругам. Если вы используете GitGalaxy для личных проектов, академических исследований или некоммерческой разработки, движок полностью бесплатен.
Чтобы убрать задержки коммерческого лицензирования в вашем терминале или личных CI/CD пайплайнах, просто задайте следующую переменную окружения:```bash export GITGALAXY_LICENSE_KEY="COMMUNITY_FREE_TIER"
### Коммерческое и корпоративное использование
Запуск GitGalaxy в корпоративных средах, проприетарных кодовых базах или коммерческих CI/CD пайплайнах требует корпоративной лицензии. Некорпоративные пайплайны без лицензии столкнутся с намеренными помехами при выполнении, а попытка использовать ключ Community Free Tier в корпоративной среде вызовет явные предупреждения о несоответствии в ваших журналах аудита.
Чтобы получить коммерческий ключ для вашей организации и обеспечить чистые журналы соответствия, пожалуйста, свяжитесь с нами: **[email protected]**
Сопоставление этого структурного графа с историей git также выявляет два конкретных приоритизированных сигнала для рефакторинга: риск bus-factor (несущие файлы, принадлежащие почти полностью одному контрибьютору) и горячие точки рефакторинга (файлы, которые одновременно отличаются высокой изменчивостью, высокой сложностью и высоким техническим долгом, — стандартный сигнал того, где усилия по рефакторингу действительно окупаются). Оба — именованные цели на уровне файлов, а не просто оценка.
| GitGalaxy | Semgrep | CodeQL | Snyk / Dependabot |
|---|
| Требует AST или сборку | Нет — regex/лексические структурные сигнатуры | Да — сопоставление паттернов AST по каждому языку | Да — компилирует/извлекает базу кода | Нет — читает манифесты пакетов |
| Основа обнаружения | Классы слабостей (CWE) + физическая/структурная аномалия | Правила сопоставления паттернов (SAST) | Запросы потоков данных и taint (SAST) | Поиск по базе CVE/уведомлений (SCA) |
| Работает со сломанным/нескомпилированным кодом | Да — это целевой сценарий разработки | Частично, зависит от правила/парсера | Нет — нужна рабочая сборка | Да — только читает манифест |
| Офлайн / изолированная среда (air-gapped) | Да, полностью локально | OSS-движок работает локально; Cloud Platform размещена в облаке | Работает локально; обычно используется через GitHub-hosted Actions | Зависит от облака (Snyk); размещён на GitHub (Dependabot) |
_galaxy_audit.json, _galaxy_master.db и _galaxy_llm.md сохраняется с версионированием под каждый релиз движка. Манифест корпуса, фиксирующий, какие именно репозитории и коммиты были отсканированы, в настоящее время покрывает подмножество из 323 репозиториев из более крупного пакета, архивированного там, — о чём прямо сказано в README этого репозитория, а не подразумевается, что список полон.Именно этот пакет необработанных выходных данных лежит в основе приведённого выше утверждения о скорости — нанесён каждый репозиторий, а не только благоприятный пример Kubernetes:
Всегда новейшая версия сканера — полный вывод и методология — в разделе Speed Telemetry репозитория gitgalaxy-raw-output.
| Платформа | Шаблон |
|---|
| GitHub Actions | gitgalaxy-pipeline.yml — см. полное руководство по интеграции |
| GitLab CI | scan.yml |
| Bitbucket Pipelines | bitbucket-pipelines.yml + bitbucket_insights.py (публикует результаты в виде аннотаций Bitbucket Code Insights) |
| Azure Pipelines | azure-pipelines.yml |
| Всё остальное (Jenkins, CircleCI и т. д.) | scan.yml — универсальный шаблон, вызываемый из shell |