악용이 확인된(CISA KEV 등재) 취약점에 대한 브리핑입니다. 무슨 일이 일어나는지, 무엇이 영향을 받는지, 무엇을 해야 하는지를 방어자의 관점에서 정리했으며, 재현 절차는 포함하지 않습니다.
- CVE
- CVE-2026-60004
- 심각도
- 치명적 (CVSS 9.8, v3.1; NVD에 기록된 점수는 CVE 번호 부여 기관이 제시한 것입니다)
- 분류
- 코드 주입 (CWE-94)
- 영향
- 악성 Git 훅이 설치됨 → Gitea OS 사용자 권한으로 명령 실행
- 영향 버전
- 벤더 권고 기준 Gitea 1.17 – 1.27.0. 1.27.1에서 수정
- 악용
- CISA KEV 등재(2026년 8월 25일 추가, 기한 8월 28일). 랜섬웨어 캠페인 사용 여부는 "Unknown"으로 기록됨
- 가능성
- EPSS 0.868 (2026-09-05 기준 당사 피드), 최상위 등급
"권한 필요"를 안심 요소로 읽지 마십시오
해석 A (CISA의 설명)
"저장소 쓰기 권한을 가진 공격자" — 조건부로 들림
해석 B (CVSS 벡터)
PR:N — 권한 필요 없음
↓ 벤더 권고가 두 해석을 모두 설명합니다
공개 가입이 켜져 있을 때
가입 → 저장소 생성 → 공격에 필요한 쓰기 권한을 스스로 부여
"그래도 권한 X가 필요하다"는 점에서 안심하는 것은 취약점을 잘못 판단하는 흔한 방식입니다. 중요한 질문은 누가 그 권한을 갖고 있는가가 아니라 그 권한을 외부에서 얻을 수 있는가입니다. 공개 가입, 초대 없는 회원 가입, 기본으로 부여되는 권한은 획득 경로가 있는 권한이므로, 실질적인 조건이라고 볼 수 없습니다.
이는 흔한 보안 실수는 가정의 실패의 항목 ②와 같은 문제입니다. 또한 설정 파일이 아니라 HTTP를 통해 가입 경로를 직접 확인하십시오 (인증과 권한 부여의 차이).
결함의 내용
- 경로
diffpatch엔드포인트가 공유 임시 클론에서 패치 적용을 잘못 처리함- 결과
- 악성 Git 훅(
hooks/post-index-change)이 설치될 수 있음 - 실행 조건
- Git이 인덱스를 기록할 때 훅이 Gitea OS 사용자 권한으로 실행됨
- 접근 가능 항목
- 애플리케이션 시크릿, 데이터베이스 자격 증명, OAuth 토큰, 마운트된 저장소
- 전제 조건
- 벤더는 악용에 Git 2.32 이상,
diffpatch경로 활성화, 쓰기 및 실행이 가능한 임시 파일 시스템이 필요하다고 설명함
업데이트 후에도 심어진 Git 훅은 남아 있으므로, 업데이트가 끝이 아닙니다
이 취약점은 서버에 실행 가능한 무언가를 남깁니다. 업데이트는 그것을 설치하는 경로를 막지만, 이미 설치된 것을 제거하지는 않습니다.
Git 훅은 정상적인 원격 실행 지점으로 설계되어 있어, 일단 존재하면 의심스럽게 보이지 않습니다. 정상적인 유지보수와 백도어를 구분하는 것은 누가, 누구의 허가로 만들었는지, 그리고 기록에 남아 있는지뿐입니다. 결함을 수정한 뒤에는 공격자가 남겼을 수 있는 것을 반드시 확인하십시오. 이 단계를 건너뛰지 마십시오.
해야 할 일
1.27.1 이상으로 업데이트 (가장 중요한 조치)
벤더 권고는 영향 범위를 1.17 – 1.27.0으로, 수정 버전을 1.27.1로 제시합니다. 여기서 시작하십시오. 자체 호스팅 인스턴스는 누군가 대신 업데이트해 주지 않습니다. 먼저 CVE 대응 플레이북에 따라 실행 중인 버전을 확인하십시오.
가입 설정을 실제로 확인
앞서 설명한 것처럼, 공개 가입이 켜져 있으면 권한 조건이 사실상 사라집니다. 설정 값만 읽지 말고 로그아웃한 상태에서 가입 페이지를 열어 실제로 어떻게 동작하는지 보십시오. 내부 인스턴스라면 가입을 닫고, 인증에만 의존하지 말고 네트워크 계층에서도 접근을 제한하십시오.
인식하지 못하는 훅과 파일 찾기
업데이트 후 저장소 훅 디렉터리에서 직접 넣지 않은 스크립트, 예상하지 못한 실행 파일, Gitea 프로세스에서 나가는 낯선 트래픽이 있는지 확인하십시오. 질문은 "업데이트했는가"가 아니라 **"무엇이 남아 있는가"**입니다.
침해가 의심되면 접근 가능한 항목을 노출된 것으로 간주
벤더가 접근 가능하다고 밝힌 항목은 애플리케이션 시크릿, 데이터베이스 자격 증명, OAuth 토큰입니다. 점검으로 결론을 내릴 수 없다면 "모르겠다"는 "아무 일도 없었다"가 아닙니다. 이들을 교체하십시오. 키 관리는 .env와 API 키의 위험성에서 다룹니다.
선택 자체를 다시 검토 (서두르지 않아도 됨)
직접 운영하면 업데이트도 직접 해야 하는 책임이 따릅니다. 장단점은 자체 호스팅 Git과 GitHub, 어느 쪽이 더 안전한가에서 확인할 수 있습니다. 이것은 이전을 권하는 논거가 아닙니다. 업데이트를 지속적으로 적용할 수 있는지를 기준으로 결정하라는 논거입니다.
이 사이트의 견해: CVSS와 KEV는 서로 다른 것을 측정하므로 둘 다 읽어야 합니다
이 사례는 CVSS, EPSS, KEV를 이용한 CVE 분류에서 다룬 내용을 보여주는 실제 사례가 되었습니다. CVSS는 기술적으로 얼마나 심각한지, CISA 등재는 현장에서 어떻게 쓰이고 있는지, EPSS는 악용 가능성을 추정한다는 점에서 세 가지는 서로 다른 측정값입니다.
여기서 CVSS의 PR:N과 CISA의 "쓰기 권한 필요"는 모순처럼 보였습니다. 둘 중 하나만 읽었다면 "권한이 필요하니 나중에 해도 된다"고 결론 내렸을 수 있습니다. 불일치는 대개 데이터의 오류가 아니라 어떤 전제를 놓쳤다는 신호입니다. 이 경우 답은 벤더 보안 권고에 있었습니다(공개 가입).
1차 출처
- Gitea 보안 권고 GHSA-rcr6-4jqh-j84m — github.com (영향 1.17–1.27.0 / 1.27.1에서 수정 / 권한 조건과 공개 가입과의 관계 / 접근 가능 항목 / 전제 조건)
- NIST NVD, "CVE-2026-60004" — nvd.nist.gov (CVSS v3.1 9.8, 벡터, CWE-94; 상태 Analyzed)
- CISA Known Exploited Vulnerabilities Catalog — cisa.gov (2026년 8월 25일 추가, 기한 8월 28일, 랜섬웨어 캠페인 사용 "Unknown")
- Gitea, "Release of 1.27.1" — blog.gitea.com
모두 2026년 9월 5일에 확인했습니다. 이 사이트에는 재현 절차와 개념 증명(PoC) 코드 링크를 게시하지 않습니다.
다음으로 읽을 글
- 장단점: 자체 호스팅 Git과 GitHub, 어느 쪽이 더 안전한가
- 절차: CVE 대응 플레이북 / CVSS, EPSS, KEV 읽는 법
- 용어집: 백도어란 무엇인가 (남겨진 것을 어떻게 생각할지)