Forgejo 16.0.3 이하의 심각한 원격 코드 실행(RCE) 취약점

5 hours ago 1

악성 템플릿 저장소로 Forgejo 호스트의 임의 데이터를 읽거나 프로세스를 실행할 수 있는 심각한 RCE 취약점이 16.0.4에서 수정됨 저장소 생성 중 변수 치환으로 재생성된 .git 폴더를 Git 초기화가 그대로 사용하는 문제였으며, 이제 치환 완료 후에도 해당 폴더를 삭제함 PR의 유지관리자 수정 허용 기능이 API 토큰의 권한 제한을 반영하지 않아 허용 범위 밖의 변경이 가능했던 문제도 해결함 읽기 권한만 있는 사용자와 공개 저장소의 비인증 호출자가 초안 릴리스 첨부파일의 메타데이터와 전체 내용을 가져올 수 있던 접근 통제 문제를 수정함 이번 릴리스는 저장소 권한 처리, 패키지 용량 중복 집계, 작업 로그 표시를 바로잡고 보안 관련 의존성도 업데이트함 보안 취약점과 수정 방식 템플릿 저장소를 통한 RCE를 차단함 — PR #14301 템플릿으로 새 저장소를 생성할 때는 템플릿 저장소를 복제하고 .git을 삭제한 뒤, .forgejo/template에 나열된 파일의 변수를 치환하고 새 Git 저장소를 초기화함 변수 치환을 악용해 .git 폴더를 재생성하면 Git이 초기화 과정에서 해당 폴더를 그대로 사용했음 이로 인해 악성 템플릿 저장소로 Forgejo 호스트의 임의 데이터를 읽고 임의 프로세스를 실행할 수 있었음 수정 후에는 변수 치환이 끝난 시점에도 기존 .git 폴더를 삭제한 다음 저장소를 초기화함 API 권한 제한 우회를 수정함 — PR #14301 열린 PR에 "allow maintainer edit" 옵션이 있으면 유지관리자가 자신이 소유하지 않은 브랜치도 수정할 수 있도록 별도 보안 제어를 사용함 이 제어가 저장소별 액세스 토큰 등 API 인증의 권한 제한을 반영하지 않아, 제한된 토큰으로도 허용 범위 밖의 변경이 가능했음 이제 API에서 수정 가능한 PR을 확인할 때도 API 인증의 보안 제한을 반영함 초안 릴리스 첨부파일 접근 통제를 수정함 — PR #13934, 백포트 #14024 저장소 읽기 권한만 있는 사용자도 자신에게 숨겨진 초안 릴리스의 첨부파일 메타데이터와 전체 내용을 가져올 수 있었으며, 공개 저장소에서는 비인증 호출자도 접근 가능했음 GetReleaseAttachment API와 웹 다운로드 경로 ServeAttachment에는 릴리스의 초안 여부 확인이 빠져 있었음 반면 GetRelease와 ListReleaseAttachments는 이미 초안 여부를 확인하고 있었음 Gi...

Read Entire Article