| id | CTI-2026-0530-GOGS |
|---|---|
| title | 미패치 Critical RCE — Gogs git rebase 인자 주입 취약점 |
| subtitle | 인증된 일반 사용자가 셀프호스팅 Git 서버를 장악하는 9.4점 결함, 그리고 교차 테넌트 침해 |
| author | Dennis Kim (김호광 / HoKwang Kim) |
| gameworker@gmail.com | |
| github | gameworkerkim |
| date | 2026-05-30 |
| classification | TLP:GREEN |
| severity | HIGH |
| lang | ko |
| tags | Argument-Injection · RCE · Self-Hosted-Git · Supply-Chain · Cross-Tenant · Unpatched |
| threat_actors | N/A (PoC·Metasploit 모듈 공개) |
| cve | CVE 미부여 (Rapid7 산정 CVSS 9.4) |
| frameworks | MITRE ATT&CK · NIST SP 800-61 (사고 대응) · STIX/TAXII |
| license | CC BY-NC-SA 4.0 |
리포트 ID
CTI-2026-0530-GOGS· 발행일 2026-05-30 · 분류TLP:GREEN· 심각도 🔴 HIGH 저자 Dennis Kim (김호광) · gameworker@gmail.com · @gameworkerkim
인증된 일반 사용자가 셀프호스팅 Git 서버를 장악하는 9.4점 결함, 그리고 교차 테넌트 침해
- 요약 (TL;DR)
- 취약점 분석 —
--exec인자 주입 - 공격 시나리오 — 무권한 계정에서 서버 장악까지
- 영향 범위와 노출 규모
- 포렌식 흔적과 탐지
- 완화 권고 (패치 부재 상황)
- 한국 관점 — 셀프호스팅 Git의 사각지대
- 결론
- 참고 문헌
2026년 5월 28일, Rapid7은 인기 셀프호스팅 Git 서비스 Gogs에서 인증된 일반 사용자가 서버에서 임의 코드를 실행할 수 있는 Critical 취약점을 공개했다. CVE 식별자는 아직 부여되지 않았으나 Rapid7은 CVSS 9.4로 산정했다.
핵심은 Gogs의 "Rebase before merging" 병합 동작에서 발생한다. 공격자가 악성 브랜치명으로 풀 리퀘스트를 생성하면, 해당 브랜치명이 git rebase 명령의 --exec 플래그로 주입되어 각 커밋 재생 후 임의 셸 명령이 실행된다. 관리자 권한도, 타 사용자와의 상호작용도 필요 없다.
더 심각한 점은 본 취약점이 2026년 3월 17일 메인테이너에게 보고되었음에도 발행 시점 기준 미패치 상태이며, Rapid7이 Linux·Windows 양쪽을 자동 공격하는 Metasploit 모듈까지 공개했다는 것이다. 즉, 무기는 공개되었고 패치는 없다.
| # | 판단 | 신뢰도 |
|---|---|---|
| KJ-1 | 본 결함은 사용자 입력(브랜치명)이 셸 명령 인자로 그대로 전달되는 **전형적 인자 주입(argument injection)**이며, 인증 외 별도 전제 조건이 사실상 없다. | High |
| KJ-2 | 미패치 + 공개 Metasploit 모듈의 조합은 실전 악용 장벽을 거의 제거한다. 노출 인스턴스는 즉시 위험에 노출된다. | High |
| KJ-3 | 단일 서버를 공유하는 환경에서 교차 테넌트(cross-tenant) 침해가 가능하다 — 한 사용자가 타인의 비공개 저장소를 읽을 수 있다. | High |
| KJ-4 | 기본 설정(회원가입·저장소 생성 허용) 인스턴스가 가장 위험하다. 완화는 가능하나 근본 패치를 대체하지 못한다. | Medium-High |
| KJ-5 | 셀프호스팅 Git은 소스코드·자격증명·CI 파이프라인의 단일 신뢰 지점이므로, 본 결함은 공급망 침해의 교두보가 될 수 있다. | Medium-High |
Gogs는 Go로 작성된 경량 셀프호스팅 Git 서비스로, GitHub의 자체 호스팅 대안으로 널리 쓰인다. 본 취약점은 PR을 병합할 때 git rebase를 사용하는 "Rebase before merging" 옵션에서 발생한다.
git rebase는 한 브랜치의 커밋 시퀀스를 다른 베이스 브랜치 위에 재생하여 선형 히스토리를 만드는 동작이다. 이때 git rebase는 각 커밋 재생 후 셸 명령을 실행하는 --exec 플래그를 인자로 받을 수 있다. Gogs는 병합 시 사용자가 제어하는 브랜치명을 충분한 정제(sanitization) 없이 git rebase 호출에 전달한다. 따라서 공격자가 브랜치명에 --exec 형태의 페이로드를 삽입하면, 병합 과정에서 해당 명령이 서버 호스트에서 실행된다.
연구자 Jonah Burgess(Rapid7): "임의의 인증 사용자가 악성 브랜치명으로 PR을 생성해 'Rebase before merging' 시
--exec플래그를git rebase에 주입함으로써 서버에서 RCE를 달성할 수 있다."
영향 플랫폼은 Windows·Linux·macOS 등 지원되는 모든 플랫폼이다.
본 취약점의 위험성은 전제 조건이 거의 없다는 데 있다.
| 시나리오 | 전제 | 공격 경로 |
|---|---|---|
| ① 기본 설정 인스턴스 | 회원가입·저장소 생성 허용(기본값) | 계정 생성 → 저장소 생성(자동 소유자) → 설정에서 rebase 병합 토글 1회 → 익스플로잇 체인 단독 실행 |
| ② 쓰기 권한 보유자 | rebase 병합이 이미 활성화된 저장소에 write 권한 | 직접 익스플로잇 실행 |
| ③ 저장소 생성 제한 환경 | rebase 병합이 켜진 임의 저장소에 write 권한 | 해당 저장소를 경유해 실행 |
특히 ①은 *"등록 사용자가 저장소를 만들면 자동으로 소유자가 되고, rebase 병합 활성화는 설정의 토글 하나"*라는 점에서, 타 사용자와의 상호작용 없이 전체 익스플로잇 체인을 단독 운용할 수 있다.
성공 시 공격자는 서버 침해, 인스턴스 내 모든 저장소 접근, 자격증명 덤프, 네트워크 내 타 시스템으로의 이동, 호스팅된 저장소 코드 변조가 가능하다. 무엇보다 동일 공유 서버에 호스팅된 타 사용자의 비공개 저장소를 읽는 교차 테넌트 데이터 침해로 이어진다.
- 추정 노출 인스턴스: 인터넷에 직접 노출된 Gogs 인스턴스는 약 1,141대로 추정된다. 다만 대부분의 배포가 VPN·내부망 뒤에 있어 실제 규모는 더 클 것으로 평가된다.
- 무기화 수준: Rapid7은 Linux·Windows 표적을 대상으로 전체 익스플로잇 체인을 자동화하는 Metasploit 모듈을 공개했다. 모듈은 두 가지 모드를 지원한다 — (a) 공격자 계정에 임시 저장소를 생성·실행·삭제하는 기본 모드, (b) 이미 write·merge 권한을 가진 저장소를 표적으로 하는 모드.
- 패치 상태: 2026-03-17 메인테이너 보고에도 불구하고 발행 시점 기준 미패치.
Rapid7에 따르면 공격 흔적은 모드에 따라 다르다.
- 자체 저장소 생성·삭제 모드: 서버 로그에 남는 흔적은 사실상 HTTP 500 오류 한 건뿐이다. 사후 분석 시 정상 오류와 구분이 어렵다.
- 기존 저장소 악용 모드: 추가 아티팩트가 남아 상대적으로 탐지 가능성이 높다.
따라서 탐지 권고는 다음과 같다.
- PR 병합 이벤트와 연계된 비정상 HTTP 500 패턴 모니터링
- 비정상적 브랜치명(특수문자·
--exec유사 토큰 포함) 생성 이벤트 경보 - Gogs 프로세스에서 파생된 예기치 않은 셸·자식 프로세스 행위 탐지
- 신규 계정 → 저장소 생성 → rebase 토글 → 병합으로 이어지는 단시간 연쇄 행위 추적
근본 패치가 없는 상황에서 Rapid7이 권고한 임시 완화는 다음과 같다.
- 회원가입 제한 —
app.ini에서DISABLE_REGISTRATION = true로 설정해 미신뢰 사용자의 계정 생성을 차단한다. - 저장소 생성 제한 —
app.ini에서MAX_CREATION_LIMIT = 0으로 설정해 사용자의 자체 저장소 생성을 막는다. - rebase 병합 설정 감사 — rebase 병합이 활성화된 저장소를 전수 점검하고, 불필요한 활성화를 해제한다.
- 네트워크 격리 — 인터넷 직접 노출을 제거하고 VPN·내부망·접근통제 뒤로 이동한다.
- 대안 검토 — 패치 제공이 불확실한 경우, 유지보수가 활발한 Forgejo·Gitea 등으로의 마이그레이션을 중장기 과제로 검토한다(단, Gitea 계열도 별도 취약점 이력이 있으므로 버전 점검 필수).
국내 스타트업·연구실·중소 SI 환경에서 Gogs·Gitea류 셀프호스팅 Git은 "가볍고 무료라서" 광범위하게 쓰이지만, 다음 사각지대가 존재한다.
- 자산 인벤토리 누락 — "내부용 Git"이라는 인식 때문에 보안 자산 목록·취약점 스캔 대상에서 빠지는 경우가 많다.
- CI/CD 신뢰 연쇄 — Git 서버는 소스코드뿐 아니라 배포 키·웹훅·CI 러너 토큰의 신뢰 기점이다. 서버 장악은 곧 빌드 파이프라인 오염으로 번질 수 있다.
- 교차 테넌트 위험 — 한 서버에 여러 팀·프로젝트가 공존하는 공용 인스턴스에서, 본 결함은 한 팀이 타 팀의 비공개 코드를 탈취하는 경로가 된다.
권고: 국내 운영 주체는 인터넷 노출 여부와 무관하게 자사 Gogs 인스턴스를 즉시 인벤토리에 포함하고, §5의 완화책을 적용한 뒤 패치 동향을 추적할 것.
본 취약점은 새로운 공격 기법이 아니라, 사용자 입력을 셸 인자에 신뢰한 고전적 실수다. 그러나 (1) 인증 외 전제 조건이 없고, (2) 공개 Metasploit 모듈이 존재하며, (3) 근본 패치가 없다는 삼중 조건이 겹치면서 실전 위험도는 매우 높다.
셀프호스팅 Git은 조직의 가장 민감한 자산 — 소스코드, 자격증명, 배포 파이프라인 — 의 단일 신뢰 지점이다. 이런 시스템을 "내부용이라 괜찮다"는 가정 아래 방치하는 것이 가장 큰 위험이다. 패치가 나올 때까지, 노출 제거와 설정 강화는 선택이 아니라 필수다.
[1] Ravie Lakshmanan, "Critical Gogs RCE Vulnerability Lets Any Authenticated User Execute Arbitrary Code", The Hacker News, 2026-05-28. https://thehackernews.com/2026/05/critical-gogs-rce-vulnerability-lets.html
[2] Jonah Burgess, "Authenticated RCE via Argument Injection in Gogs (Unfixed)", Rapid7, 2026-05. https://www.rapid7.com/blog/post/ve-authenticated-rce-via-argument-injection-gogs-unfixed/
[3] Rapid7, "Metasploit module — Gogs git rebase argument injection RCE", GitHub PR #21515. rapid7/metasploit-framework#21515
[4] Atlassian, "Merging vs. Rebasing", Git Tutorials. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
[5] Git Documentation, "git-rebase — --exec option". https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---execltcmdgt
© 2026 Dennis Kim (김호광) · 본 문서는 독립 CTI 아카이브(TLP:GREEN) 공개를 목적으로 작성됐다. 문의: gameworker@gmail.com · GitHub: gameworkerkim/CYBER-THREAT-INTELLIGENCE-REPORT