위협 요약
CVE-2026-60004는 Gitea의 diffpatch 처리 경로에서 발생하는 원격 코드 실행(Remote Code Execution, RCE) 취약점이다. 공격자는 일반적인 저장소 쓰기 권한(Write access)을 이용해 서버가 Git 인덱스를 갱신하는 과정에 실행 가능한 Git hook을 심고, Gitea 서비스 계정 권한으로 임의 셸 명령을 실행할 수 있다. 공개 가입(Open registration)이 기본 설정으로 켜져 있고 사용자가 저장소를 만들 수 있으면 비인증 방문자도 필요한 권한을 얻을 수 있어 인터넷 노출 인스턴스의 우선순위가 높다.
취약점 개요
CVE-2026-60004는 GitHub Security Advisory GHSA-rcr6-4jqh-j84m으로 공개된 Gitea diffpatch 원격 코드 실행 취약점이다. CVSS v3.1 기본 점수는 9.8(Critical)이며 벡터는 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H이다. 영향을 받는 Gitea 제품·버전은 1.17 이상 1.27.1 미만(>=1.17, <1.27.1)이고, 수정 버전은 1.27.1이다. 운영 환경에서는 컨테이너 태그가 아니라 실제 실행 바이너리와 이미지 다이제스트를 기준으로 모든 노드의 버전을 확인한다.
기술적 분석
diffpatch 엔드포인트는 저장소 제어 콘텐츠(repository-controlled content)를 패치로 처리한다. 동일한 패치를 두 번 제출하면 add/add 충돌이 생기고 Git의 3-way fallback이 --cached 작업 중에도 인덱스 경로를 체크아웃한다. bare clone에서는 저장소 루트가 $GIT_DIR이므로 실행 권한이 설정된 hooks/post-index-change 파일이 live Git hook으로 배치될 수 있다.
Git은 인덱스를 기록할 때 이 hook을 실행한다. 따라서 저장소 쓰기 권한을 가진 공격자가 hook 내용을 통제하면 Gitea 서비스 계정(Gitea OS user) 권한으로 임의 명령을 실행하는 경로가 성립한다. hook의 반환값은 diffpatch 응답으로 전달되지 않을 수 있으므로, 요청 성공 여부만으로 실행 여부를 판단하면 안 된다.
영향 범위
공격에는 활성화된 diffpatch 경로, 패치를 제출할 저장소에 대한 일반 쓰기 권한, 쓰기와 실행이 가능한 임시 파일시스템이 필요하다. 공개 가입이 켜져 있으면 비인증 방문자가 계정을 등록하고 저장소를 생성해 쓰기 권한 전제조건을 충족할 수 있다. 인터넷에 노출된 Gitea, 외부 협업자가 쓰기 권한을 가진 조직, 기본 권한이 느슨한 인스턴스를 우선 점검한다.
공식 권고문에는 테스트 인스턴스에서 사용할 수 있는 PoC(Proof of Concept)가 포함되어 있다. 이 PoC는 기존 계정으로 저장소를 만들고 실행 가능한 hook 패치를 두 번 제출한 뒤 결과를 가져오는 흐름을 보인다. 2026-07-31 기준 공식 권고문은 CISA KEV(Known Exploited Vulnerabilities) 등재 또는 실제 악용 사례를 선언하지 않는다. 따라서 실제 악용을 단정하지 말고, 공개 PoC와 공격 전제조건을 기준으로 노출 여부를 조사한다.
대응 방안
모든 영향 인스턴스를 Gitea 1.27.1 이상으로 패치하고 롤링 배포의 잔여 노드, 프록시 뒤 노드, 스테이징·개발 환경을 함께 검증한다. 패치 전까지는 리버스 프록시와 네트워크 ACL(Access Control List)에서 diffpatch 경로를 제한하고, 공개 가입과 불필요한 외부 접근을 비활성화하며, 저장소 쓰기 권한을 최소화한다. 임시 완화는 패치를 대체하지 않는다.
탐지에는 Gitea 접근 로그와 애플리케이션 로그의 diffpatch 요청, 동일 패치의 반복 제출, hooks/post-index-change 경로, 비정상적인 저장소 생성·권한 변경을 사용한다. 호스트·컨테이너에서는 Gitea 프로세스의 비정상 자식 프로세스, 새 파일·예약 작업, 외부 네트워크 연결을 EDR(Endpoint Detection and Response) 및 감사 로그와 상관 분석한다. 의심 정황이 있으면 인스턴스를 격리하고 로그, 컨테이너 이미지, 데이터 볼륨 스냅샷을 보존한다.
침해 가능성이 있으면 Gitea 개인 액세스 토큰, OAuth·웹훅 시크릿, deploy key, CI/CD 변수, 패키지 레지스트리·클라우드 자격 증명을 우선순위에 따라 재발급한다. 기존 값은 새 값의 적용을 확인한 뒤 폐기하고, 서비스 계정 권한과 조직·저장소의 Write·Maintain·Owner 권한을 재검토한다.
참고문헌
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!