Forgejo 16.0.3 이하, 악성 템플릿으로 호스트 데이터 탈취·원격 코드 실행 가능
- Forgejo 16.0.3 이하에서 악성 템플릿 저장소가 변수 확장 과정에 .git 디렉터리를 다시 만들면, 새 저장소 초기화 시 Git이 이를 채택해 호스트의 임의 데이터를 읽고 임의 프로세스를 실행하는 원격 코드 실행 취약점 발생함
- Forgejo 16.0.4는 변수 확장이 끝난 뒤 기존 .git 디렉터리를 다시 삭제하고 Git 저장소를 초기화하도록 바꿔 취약점을 차단함
- 토론에서는 새 저장소를 만들 수 있는 신뢰하지 않는 사용자가 공격 조건을 충족하므로, 공개 회원 가입을 켠 인스턴스는 즉시 업데이트해야 한다는 의견 제기됨
- 이번 릴리스에는 API에서 편집 가능한 PR을 확인할 때 authorization reducer를 거치게 하는 인가 검사 수정도 포함됨
- Gitea 프로젝트 리더십 참여자는 Gitea가 이번 두 문제 모두에서 보호된다고 밝힘
Hacker News opinions
릴리스 노트 페이지가 과부하로 안 열리는데, PR은 아직 볼 수 있더라. 템플릿 확장으로 다시 만든 .git 디렉터리를 Git 초기화가 받아들이는 게 문제임.
공개 회원 가입을 꺼뒀다면 위험도는 조금 낮아 보임.
새 저장소를 만들 수 있는 사용자가 악성 템플릿으로 호스트의 임의 데이터를 읽고 프로세스를 실행할 수 있는 거임. 기본 설정이 공개 가입이라면 신뢰하지 않는 사용자에게 그 권한을 주는 셈이니 빨리 업데이트해야 함. 단일 사용자나 신뢰된 사용자만 있으면 급박함은 덜함.
확장 뒤 .git을 지우는 방식 말고, 문제의 Git 호출을 샌드박스로 격리했어야 하는 것 아닌가 싶음.
자가 호스팅 중이면 Codeberg 계정을 만들어 Forgejo 보안 공지 이슈를 팔로우하는 게 좋겠음. 공지는 Matrix의 #forgejo-chat:matrix.org에도 올라옴.
Codeberg 제한 때문에 릴리스 노트를 못 읽는 사람을 위해 말하면, 이번 릴리스에는 이 치명적 수정 외에 API에서 편집 가능한 PR을 확인할 때 인가 reducer를 거치게 하는 수정도 들어갔음.
LLM 기여를 제한한 날 이런 취약점이 나온 건 아이러니하긴 함. 공격자는 취약점 탐색에 AI를 쓸 테니까.
LLM 기여를 허용한다고 이 문제가 고쳐졌다고 말할 수는 없음. 독립적인 LLM 스캔은 이력용 허위 PR 같은 잡음을 많이 만들고, 그러면 유용한 PR도 묻히거나 엉터리 수정이 승인될 수 있음.
LLM 기여 금지는 LLM으로 취약점을 조사하는 일까지 금지하는 건 아님. 실제 정책도 LLM 작성 비중이 높은 프로젝트를 제한한 것이지 모든 LLM 기여를 막은 게 아니라고 봄.
Gitea 프로젝트 리더십 쪽에 있는데, Gitea는 이 두 문제 모두에 보호돼 있다고 함. 보안 사고는 누구에게나 생기니 신고한 프로젝트를 비난해서는 안 된다고 생각함.