Gogs는 오픈 소스 자체 호스팅 Git 서비스입니다. 0.14.3 이전에는 (*Repository).UploadRepoFiles가 업로드 대상(osx.IsSymlink(targetPath))의 리프에서만 심볼릭 링크를 확인합니다. 형제 UpdateRepoFile, DeleteRepoFile 및 GetDiffPreview는 모든 구성 요소를 통계하는 hasSymlinkInPath를 사용합니다. UploadRepoFiles는 유일한 특이치입니다. 저장소 쓰기 액세스 권한과 파일 이름에 리터럴 백슬래시가 포함된 멀티파트 업로드 권한이 있는 공격자(Linux에서는 filepath.Base로 보존된 후 /로 변환됨)
Gogs는 오픈 소스 자체 호스팅 Git 서비스입니다. 0.14.3 이전에는 (*Repository).UploadRepoFiles가 업로드 대상(osx.IsSymlink(targetPath))의 리프에서만 심볼릭 링크를 확인합니다. 형제 UpdateRepoFile, DeleteRepoFile 및 GetDiffPreview는 모든 구성 요소를 통계하는 hasSymlinkInPath를 사용합니다. UploadRepoFiles는 유일한 특이치입니다. 저장소 쓰기 액세스 권한과 파일 이름에 리터럴 백슬래시(Linux에서는 filepath.Base에 의해 보존된 후 pathx.Clean에 의해 /로 변환됨)가 포함된 멀티파트 업로드 권한이 있는 공격자는 이전에 커밋된 디렉터리 심볼릭 링크를 통해 쓰기를 리디렉션합니다. iox.CopyFile은 os.Create(O_NOFOLLOW 없음)를 사용하여 대상을 열므로 커널은 상위 심볼릭 링크를 따르고 gogs UID가 쓸 수 있는 모든 위치에 공격자 바이트를 씁니다( ~git/.ssh/authorized_keys → SSH 발판 또는 .git/hooks/post-receive → next-push RCE). 이 취약점은 0.14.3에서 수정되었습니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 90.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 90.00 |
VPI 공식 vpi-v1 기준