
AST 없는 휴리스틱 지식 그래프 엔진으로, 심층 리포지토리 인텔리전스와 제로 트러스트 보안 스캐닝을 제공합니다. GitLab CI/CD 구성 요소로 통합되어 악성 코드를 차단하고 SARIF 텔레메트리를 GitLab Security Dashboard로 내보냅니다.
1회 스캔 · 97가지 구조 신호 · 50개 이상 언어 · 컴파일 불필요
19가지 위험 노출 점수 · 6가지 최종 보고서 · 의존성 0개 · pip install gitgalaxy
GitGalaxy는 반복적으로 발생하는 하나의 문제를 위해 존재합니다: 깨끗하게 컴파일되지 않는 대규모의 실제 다중 언어 코드베이스를 이해하는 것 — 대부분의 정적 분석 도구가 가정하는 깨끗한 단일 언어 입력이 아니라, 대부분의 프로덕션 저장소가 실제로 처해 있는 상태입니다.
time(s) ≈ 3.36e-05 × LOC^0.969 (R²=0.88, 거의 선형, 큰 입력에서도 저하되지 않음) — 반올림된 헤드라인만이 아니라 차트와 유도 과정은 주장만이 아닌 증명을 참조하세요.이것은 CodeQL, Semgrep 또는 SonarQube와 경쟁하는 취약점 스캐너가 아닙니다. 그 도구들은 코드가 컴파일된 이후에 깊고 정밀한 분석을 수행하며, 보통 한 번에 한 언어씩 다룹니다. GitGalaxy는 그보다 먼저 다른 질문에 답합니다 — 이 전체 시스템이 실제로 어떻게 생겼는지, 위험이 어디에 집중되어 있는지 — 더 깊은 도구들이 작업할 빌드를 확보하기도 전에 저장소의 모든 언어를 동시에 살펴봅니다. 각 도구의 역할이 정확히 어디서 시작되고 끝나는지는 아래의 "아키텍처 관점에서 어떻게 비교되는가"를 참조하세요.
Gitgalaxy는 50개 이상의 서로 다른 언어가 혼합된 전체 저장소를 평가하고, 아키텍처를 매핑하며, 우선순위가 매겨진 리팩토링 대상(핫스팟, 버스 팩터 위험, 하중 지지 파일)과 함께 위험 노출을 표면화하여 어디에 먼저 집중해야 할지 알려줍니다. 아래 그래프는 Apollo-11 1969년 비행 소프트웨어부터 현대 기술 스택에 이르는 샘플 코드 파일이 포함된 골든 테스트 저장소를 gitgalaxy로 한 번 스캔한 워크플로우입니다. 벤치마크

Gitgalaxy의 핵심 출력은 단 하나입니다: 저장소 전체의 결정론적 구조 그래프. 보안 감사, 리팩토링 우선순위 지정, 레거시-현대 언어 번역(아래 엔터프라이즈 코드베이스 도구 및 사용 사례 참조)은 모두 별도의 엔진을 가진 별도 제품이 아니라 동일한 그래프의 소비자입니다 — 그래서 이것은 단일 목적의 취약점 스캐너라기보다 아키텍처 인텔리전스 플랫폼에 더 가깝게 읽히는 이유입니다.
대부분의 코드 인텔리전스 엔진은 tree-sitter와 같은 AST를 사용하는데, 이는 저장소를 지나치게 세분화된 관점으로 보여주고(집을 이해하려 하는데 벽돌과 유리창 하나하나의 목록을 받는 것과 같음) 스캔할 수 있는 언어와 파일을 제한합니다. 현대 저장소는 다중 언어입니다. 많은 저장소에는 제대로 된 AST가 없는 오래된 코드가 있습니다. 이를 우회하기 위해 Gitgalaxy는 상단에 통계 레이어를 얹은 맞춤형 정규식/어휘 구조 분석 엔진을 사용합니다 — 함수의 경계, 제어 흐름, I/O, 상태 변이, 그리고 수십 가지의 기타 구조적·보안 관련 동작을 표시하는 약 97개 정규식 "신호" 범주에서 파일별 특징 벡터를 구축하고, 저장소별로는(import 해석 + PageRank/중심성 기반 의존성 그래프) 구축한 다음, sigmoid 함수를 통해 이러한 원시 카운트를 정규화된 0–100 위험 점수로 변환하고 그 결과를 6가지 형식으로 내보냅니다.
Gitgalaxy는 AST 수준의 정밀도를 수 배의 속도와 보편적인 언어 커버리지로 맞바꿉니다. 이는 BLAST가 유전체학에서 Smith-Waterman의 완전 탐색 정렬을 휴리스틱 속도로 맞바꾼 것과 같은 정신입니다. 출력에는 단일 스캔 패스로 생성된 SARIF, CycloneDX SBOM, 쿼리 가능한 SQLite 지식 그래프, LLM에 최적화된 아키텍처 브리프, 3D 시각화 데이터가 포함됩니다 — 막연한 형용사 대신 실제 스캔 시간 수치를 보려면 위의 "어떤 문제를 해결하나?"를 참조하세요.
그 결과는 코드를 컴파일할 것을 요구하지 않고 구축된 저장소의 결정론적 지식 그래프입니다. 테스트 코드와 핵심 로직의 비율을 계산하고, 의존성 그래프를 통해 각 파일의 다운스트림 "블래스트 반경"을 매핑하며, 라인 단위 린터가 완전히 놓치는 프로젝트 구조 신호를 표면화합니다. 파일별 신호 추출은 코드베이스 크기에 선형적인 시간으로 실행됩니다. 저장소 수준 그래프 메트릭(중심성, 커뮤니티 탐지)은 매우 큰 그래프에 명시적 샘플링 경계가 있는 표준 네트워크 분석 알고리즘을 사용합니다.
구조 그래프를 git 히스토리와 교차시키면 두 가지 구체적이고 우선순위가 매겨진 리팩토링 신호도 표면화됩니다: 버스 팩터 위험(거의 전적으로 한 명의 기여자가 소유한 하중 지지 파일)과 리팩토링 핫스팟(높은 변경 빈도, 높은 복잡성, 높은 기술 부채를 동시에 가진 파일 — 리팩토링 노력이 실제로 효과를 보는 위치를 알려주는 표준 신호)입니다. 둘 다 단순한 점수가 아니라 이름이 지정된 파일 수준 대상입니다.

GitGalaxy는 서로 다른 두 종류의 출력을 생성하며, 이 둘은 다르게 읽어야 합니다.
위험 노출 점수는 19개 범주(시크릿, 인젝션 표면, 메모리 손상 등)에 걸친 0–100 밀도 정규화 신호로, 함수에서 파일, 폴더, 저장소 순으로 집계됩니다. 높은 점수는 이것이 먼저 주목할 가치가 있다는 의미입니다 — 이는 평결이 아니라 우선순위 신호입니다. 두 파일이 완전히 다른 이유로 동일한 점수를 가질 수 있습니다: 실제 문제이거나, 표면적으로는 동일해 보이는 정당한 패턴일 수 있습니다. 암호화된 멀웨어와 잘 테스트된 암호화 루틴 모두 높은 엔트로피를 생성합니다. GitGalaxy는 어떤 것을 찾았는지 알려줄 수 없습니다 — 단지 다시 살펴볼 가치가 있는 무언가가 거기에 있다는 것만 알려줍니다.
**파인딩(Findings)**은 개별 라인 수준 플래그입니다: 위험 임계값을 넘은 특정 구조적 시그니처. 이것들은 검토할 증거이지 확인된 취약점이 아닙니다. GitGalaxy는 코드를 실행하거나 런타임 데이터플로우를 추적하거나 악용 가능성을 검증하지 않습니다 — 텍스트에 패턴이 존재한다는 것을 이 정확한 라인에서 알려주고, 직접 판단할 수 있는 컨텍스트를 넘겨줄 뿐입니다.
이것은 의도된 설계이지, 숨기고 있는 한계가 아닙니다. GitGalaxy는 정밀도보다 재현율을 선택하는 쪽으로 설계되었습니다: 더 많이 플래그하고, 인간이나 더 깊은 도구가 목록을 좁히도록 하는 것입니다. 실제 문제에 대해 침묵할 위험을 감수하기보다는 말입니다. 오탐은 그 트레이드오프의 예상 비용이며, 읽은 코드를 실행하지 않는 모든 정적 분석기에게 동일하게 적용되는 비용입니다.
이는 또한 GitGalaxy가 특정 부류의 문제에 가장 강하다는 것을 의미합니다 — 적대적 회피가 아닌 과실. 누군가 제거하는 것을 잊은 하드코딩된 키, 안전하지 않은 레지스트리, 명백히 위험한 eval() 호출 — 이들의 반대편에는 스캐너를 피하려는 사람이 없습니다. 정적 시그니처 기반 탐지가 어떻게 작동하는지 아는 특별한 동기를 가진 공격자는 엔트로피 임계값 같은 개별 신호를 큰 노력 없이 회피할 수 있습니다. GitGalaxy를 손으로 읽기에는 너무 큰 코드베이스에 대한 빠른 1차 패스로 취급하십시오 — 무언가가 안전한지에 대한 최종 판정이 아닙니다.
대부분의 의존성 스캐너는 조회 테이블로 작동합니다: 누군가 취약점을 발견하고 신고하여 이제 피드에 CVE 번호가 있기 때문에 취약점이 존재한다는 것을 압니다. 이는 유용하지만 필연적으로 반응적입니다 — 이런 방식으로 구축된 스캐너는 아직 발견되고 공개되지 않은 모든 것에 대해 장님이며, 신고된 사례와 약간 다르게 보이는 알려진 위험 패턴의 단순 변형조차 볼 수 없습니다.
GitGalaxy는 다른 접근 방식을 취합니다: 알려진 사례를 매칭하는 대신 약점 클래스를 매칭합니다. 파인딩은 CVE ID가 아닌 CWE(Common Weakness Enumeration)로 태그됩니다 — 하드코딩된 자격 증명, 동적 코드 실행, 안전하지 않은 역직렬화. "오염된 입력의 동적 실행"에 대한 구조적 시그니처는 어떤 변수 이름, 어떤 특정 배치에서든 그 패턴이 나타나는 모든 곳을 포착합니다 — 누군가 이미 신고서를 제출한 하나의 사례만이 아니라.
동일한 철학이 SBOM 레이어에도 확장됩니다. "이 패키지 버전이 취약점 데이터베이스에 나타나는가"라고 묻는 대신, GitGalaxy는 "디스크에 있는 이 패키지의 실제 콘텐츠가 정당한 버전의 모습과 구조적으로 일치하는가"라고 묻습니다 — 엔트로피, 구조적 지문, 동작 이상 플래그. 그렇게 해서 변조된 의존성은 누구도 아무것도 발견하거나 공개하기 전인 첫날에 잡힙니다. 기다릴 CVE가 없기 때문입니다.
이것은 CVE 피드 도구(Snyk, Dependabot, OSV-Scanner)에 대한 보완이지 대체가 아닙니다 — 그 도구들은 "이 정확한 알려진 버그가 존재하는가"에 대한 올바른 답입니다. GitGalaxy는 더 넓은 그물에 대한 올바른 답입니다: 누군가 특정 사례를 먼저 발견하고 신고할 것을 요구하지 않는 약점 클래스와 물리적 이상입니다.
이것은 각 도구가 구조적으로 요구하고 탐지하는 대상에 대한 자체 보고 방식의 비교이지, 독립적인 벤치마크가 아닙니다 — 각 프로젝트의 자체 문서로 검증하십시오. 이 비교는 한 가지 질문에 명확히 답하기 위해 존재합니다: 관련은 있지만 다른 작업을 수행하는 도구들과 비교하여 GitGalaxy가 실제로 메우도록 구축된 격차가 무엇인가.
| GitGalaxy | Semgrep | CodeQL | Snyk / Dependabot | |
|---|---|---|---|---|
| AST 또는 빌드 요구 | 아니요 — 정규식/어휘 구조적 시그니처 | 예 — 언어별 AST 패턴 매칭 | 예 — 코드 데이터베이스 컴파일/추출 | 아니요 — 패키지 매니페스트를 읽음 |
| 탐지 기준 | 약점 클래스(CWE) + 물리적/구조적 이상 | 패턴 매칭 규칙(SAST) | 데이터플로우/오염 쿼리(SAST) | CVE/권고 데이터베이스 조회(SCA) |
| 깨지거나 컴파일되지 않은 코드에서 동작 | 예 — 이것이 설계 목표 | 부분적 — 규칙/파서에 따라 다름 | 아니요 — 작동하는 빌드 필요 | 예 — 매니페스트만 읽음 |
| 오프라인 / 에어갭 | 예, 완전히 로컬 | OSS 엔진은 로컬 실행, Cloud Platform은 호스팅형 | 로컬 실행, 주로 GitHub 호스팅 Actions로 사용 | 클라우드 의존(Snyk), GitHub 호스팅(Dependabot) |
GitGalaxy의 SAST 범주 동료들이 AST나 컴파일 가능한 빌드를 필요로 하고, CVE 피드 도구들이 패키지 매니페스트를 필요로 하는 바로 그 지점이 GitGalaxy가 메우도록 구축된 격차입니다 — 그것들이 잘하는 일을 대체한다는 주장이 아닙니다.
위의 모든 "구조적 시그니처" 및 "AST 불필요" 주장은 맹목적으로 믿는 것이 아니라 직접 검사하고 다시 실행할 수 있는 세 가지로 뒷받침됩니다:
gitgalaxy/standards/language_standards.py는 실제 구조적 시그니처를 가진 45개 언어에 걸쳐 엔진이 구문(함수 시작, API 경계, 안전 우회)을 인식하는 데 사용하는 모든 정규식 규칙(총 약 1,970개의 컴파일된 패턴)을 정의합니다. 그 규칙 각각은 무엇을 매칭해야 하는지, 무엇을 명시적으로 제외해야 하는지(대부분의 정규식 기반 도구가 건너뛰는 오탐 검사), 그리고 적대적 입력에 의해 멈추지 않는지 테스트됩니다. 전체 인덱스는 **tests/README.md**를, 이를 마무리한 감사는 epic #518을 참조하세요 — 이론적 커버리지뿐 아니라 그 과정에서 수십 개의 실제 정규식 버그가 발견되고 수정되었습니다.language-crucible은 주요 오픈소스 프로젝트에서 가져온 약 120개의 실제 하위 디렉터리를 고정(pin)하고 태그한 스냅샷입니다 — Godot의 C++, Roslyn C# 컴파일러, curl, Kubernetes, Apollo 11의 AGC 비행 소프트웨어 등 — 의도적으로 연결이 끊기고 컴파일 불가능한 상태로 남겨두었으며, 실제 저장소가 처한 것과 동일한 적대적 상태입니다. 파싱 엔진을 건드리는 모든 풀 리퀘스트는 해당 전체 코퍼스를 다시 스캔하고 체크인된 스냅샷(tests/golden_master_audit.json)과 출력을 필드별로 디프합니다. 디프가 발생하면 실제 코드에서 출력이 변경되었다는 뜻이며, 승인되기 전에 설명이 필요합니다 — 스모크 테스트가 아니라 실제 골든 마스터 비교입니다. 이것이 CI에 정확히 어떻게 연결되는지는 tests/README.md를, 코퍼스가 왜 그렇게 구축되었는지는 language-crucible 자체 README를 참조하세요._galaxy_audit.json, _galaxy_master.db, _galaxy_llm.md가 엔진 릴리스별로 버전 관리되어 보존됩니다. 정확히 어떤 저장소와 커밋이 스캔되었는지를 고정하는 코퍼스 매니페스트는 현재 그곳에 보관된 더 큰 배치의 323개 저장소 하위 집합을 포함합니다 — 완전하다고 암시하지 않고 해당 저장소 자체 README에 명확히 명시되어 있습니다.위의 속도 주장이 피팅된 것도 바로 그 원시 출력 배치입니다 — 유리한 Kubernetes 예제만이 아니라 모든 저장소가 플로팅되었습니다:
항상 최신 스캐너 버전 — 전체 유도 과정과 방법론은 gitgalaxy-raw-output의 Speed Telemetry 섹션에 있습니다.
GitGalaxy는 스타만 받고 잊히는 것이 아니라 CI 안에서 실행되도록 만들어졌습니다 — 그래서 우리는 사람들의 발견과 함께 CI/프로덕션 통합을 별도의 도입 신호로 추적하며, 노이즈로 걸러내지 않습니다.
왼쪽: GitHub 스타와 포크(누적 — 단순히 이후의 스냅샷이 아니라 각 스타/포크의 자체 타임스탬프에서 재구성)와 함께 일일 고유 클로너 및 프로필 조회수. 오른쪽: GitLab CI/CD 카탈로그 사용량(지난 30일 동안 파이프라인에서 GitGalaxy를 실행한 고유 프로젝트) 및 GitHub Action 도입(코드 검색을 통해 워크플로우에서 액션을 참조하는 고유 저장소 — GitGalaxy는 아직 Marketplace에 등록되지 않았으므로 이것이 가능한 최선의 수동 신호입니다). 왼쪽 패널과 달리 GitHub와 GitLab은 이 두 가지에 대한 어떤 이력도 노출하지 않습니다 — 오른쪽 패널은 소급 채워진 추세가 아니라 하루하루 채워지는 것을 기대하십시오.
기준선 대조 저장소와 비교한 PyPI, GitHub, GitLab 전반의 결합 배포량 — 균일하게 중복 제거된 수치가 아닙니다. GitHub의 고유 클로너 수와 GitLab의 고유 프로젝트 수는 진정으로 중복 제거됩니다. PyPI의 공개 다운로드 데이터는 중복 제거할 정체성이 없으며(미러 없이 측정 — 알려진 미러 동기화 봇은 제외하지만 CI 기반 설치는 제외하지 않음), 따라서 그 구성 요소는 원시 다운로드 이벤트 수입니다. GitHub/PyPI의 세부 항목 라인은 전체 가져오기 추적 이후에 소스별 추적이 추가되었기 때문에 기간 중간부터 시작됩니다. 그 이전 시점의 전체 라인은 모든 소스의 합계입니다.
소스별로 정확히 무엇이 중복 제거되고 그렇지 않은지를 포함한 전체 방법론: squid-protocol/squid-telemetry.
GitGalaxy는 스캐닝과 벡터화의 100%를 로컬에서 수행합니다 — 엔진은 완전히 에어갭된 환경에서도 연결된 환경과 동일하게 실행됩니다.
플랫폼용 템플릿을 파이프라인에 바로 넣으세요. 각 템플릿은 GitGalaxy 스캔을 실행하며 위험 임계값 또는 악성코드 시그니처 위반 시 빌드를 실패시킬 수 있습니다.
| 플랫폼 | 템플릿 |
|---|---|
| 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 — 범용 셸 호출 가능 템플릿 |
코어 엔진의 구조적 그래프는 그 위에 구축된 독립 실행형 도구 모음에 공급되며, 각
도구는 gitgalaxy/tools/ 아래의 별도 모듈로, 동일한 결정적 스캔
출력을 소비하며 저장소 자체를 다시 파싱하지 않습니다.
결정적이고 충실도가 높은 번역 파이프라인입니다. 레거시 COBOL을 완전히 컴파일되는 최신 Spring Boot 아키텍처로 변환하고, 메모리를 정확히 매핑하고 JPA 엔티티, REST 컨트롤러, Maven 빌드를 스캐폴딩한 다음 AI를 활용하여 격리된 비즈니스 로직을 번역합니다.
메인프레임 모놀리스를 정화하기 위한 분석 제품군입니다. 레거시 어휘 함정을 안전하게 무력화하고, 죽은 실행 메모리를 추출하며, 토폴로지 DAG 실행 순서를 매핑하고, 현대 클라우드 배포를 위한 Zero-Trust JCL 구성을 생성합니다.
매니페스트 파일을 신뢰하는 대신 물리적 파일 내부를 스캔하는 커밋 전 방화벽으로, 스테가노그래피, 바이트 수준 XOR 복호화 루프, 호모글리프 타이포스쿼팅, 노출된 암호화 볼트가 CI/CD 파이프라인에 유입되기 전에 차단하도록 설계되었습니다. GitHub Action을 통해 직접 배포하세요.
package.json이나 requirements.txt를 맹목적으로 신뢰하지 않는 SBOM(Software Bill of Materials) 생성기입니다. 디스크에서 물리적 종속성을 찾아 정식 버전이 가져야 할 엔트로피 및 언어적 정체성과 대조하여 확인하고, 엄격한 CycloneDX 1.4 JSON 보고서를 생성합니다.
문서화되지 않았거나 오래된 API 표면을 결정적으로 매핑하는 도구입니다. 구조적 정규식을 사용하여 활성 물리적 라우팅 로직(Express, Spring Boot, FastAPI)을 찾고, 공식 OpenAPI/Swagger 문서에 집합 이론을 적용하여 섀도 API(문서화되지 않은 라우트)와 고스트 API(더 이상 구현되지 않는 문서화된 라우트)를 분리합니다.
인덱스 없이 0.07 GB/초로 동작하는 로그 분석 도구입니다. 대규모 데이터베이스 덤프를 스트리밍하여 PII(신용카드, SSN, AWS 키)를 탐지하고 마스킹하며, 정적 아키텍처 맵을 사용하여 런타임 실행 빈도를 ASCII 시계열 히스토그램으로 보고합니다.
AppSec 센서는 원시 상태 변이 기능에 연결된 AI 에이전트를 플래그합니다. LLM 오케스트레이션 프레임워크(LangChain, LlamaIndex)가 직접 네트워크/디스크 I/O와 함께 import되고, 임계값 미만의 방어적 프로그래밍 밀도가 결합된 경우입니다. 이는 라이브러리 식별 신호이지 런타임 동작에 대한 주장이 아닙니다. 데이터 흐름 추적이 없는 정규식 전용 엔진은 코드가 실제로 해당 경로를 실행한다는 것을 증명할 수 없으므로 그렇게 주장하지 않습니다(입증 불가능한 주장을 했다가 제거된 검사는 #1102를 참조하세요). 별도로 Dev Agent 방화벽은 토큰 규모와 폭발 반경을 평가하여 위험하거나 컨텍스트 토큰을 고갈시키는 파일을 자율 코딩 에이전트가 수정하지 못하도록 제한합니다.
시각적 분석을 선호한다면, 각 파일이 노드를 나타내고 특정 위험 지표에 따라 크기와 색상이 지정되는 토폴로지 대시보드를 구축했습니다.
생성된 your_repo_GPU_galaxy.json 파일(또는 원시 저장소의 .zip)을 GitGalaxy.io로 직접 끌어다 놓기만 하면 됩니다. 모든 렌더링과 스캔은 전적으로 브라우저의 로컬 메모리에서 이루어집니다.

Copyright (c) 2026 Joe Esquibel
GitGalaxy는 PolyForm 비상업적 라이선스 1.0.0에 따라 배포됩니다.
우리는 오픈소스 및 학술 커뮤니티에 깊이 헌신하고 있습니다. 개인 프로젝트, 학술 연구 또는 비상업적 개발에 GitGalaxy를 사용하는 경우 엔진은 100% 무료입니다.
터미널 또는 개인 CI/CD 파이프라인에서 상업용 라이선스로 인한 지연을 없애려면 다음 환경 변수를 설정하기만 하면 됩니다:```bash export GITGALAXY_LICENSE_KEY="COMMUNITY_FREE_TIER"
### 상업 및 엔터프라이즈 사용
기업 환경, 독점 코드베이스 또는 상용 CI/CD 파이프라인에서 GitGalaxy를 실행하려면 엔터프라이즈 라이선스가 필요합니다. 라이선스가 없는 기업 파이프라인은 의도적인 실행 마찰을 겪게 되며, 기업 환경에서 커뮤니티 무료 티어 키를 사용하려고 시도하면 감사 로그에 명시적인 비준수 경고가 발생합니다.
조직을 위한 상용 키를 획득하고 깨끗한 규정 준수 로그를 보장하려면 다음으로 연락하세요: **[email protected]**