Forgejo 16.0.3 이하, 템플릿 저장소로 원격 코드 실행 가능한 치명적 취약점
Forgejo <=16.0.3 Critical RCE
Forgejo 16.0.3 이하 버전에서 템플릿 저장소를 이용한 원격 코드 실행(RCE) 취약점이 발견됐다. 템플릿 저장소로 새 저장소를 만들 때 변수 확장 과정에서 악의적인 .git 폴더가 생성될 수 있고, git이 초기화 중 이를 받아들여 호스트의 임의 데이터 읽기와 프로세스 실행이 가능해진다. 16.0.4에서 변수 확장 후 기존 .git 폴더를 제거하도록 수정됐다. 공개 가입을 막아둔 사설 인스턴스는 위험이 낮다.
악의적인 템플릿 저장소를 이용해 Forgejo 호스트의 임의 데이터를 읽고 임의 프로세스를 실행하는 원격 코드 실행 공격이 가능하다.
HN 토론
62- amiga386
URL을 https://codeberg.org/forgejo/forgejo/milestone/139655로 바꿔야 합니다.
> PR: Critical: fix: prevent template expansion from interfering with git repo initialization. 템플릿 저장소에서 새 저장소를 생성할 때, Forgejo는 템플릿 저장소를 복제하고, .git 폴더를 제거하고, .forgejo/template에 나열된 파일에 대해 변수 템플릿 확장을 수행한 다음, 새 git 저장소를 초기화합니다. 이 과정에서 변수 템플릿 확장을 악용하여 새 .git 폴더를 생성할 수 있으며, git은 새 git 저장소를 초기화할 때 이를 채택하고 통합합니다. 악성 템플릿 저장소를 사용하여 Forgejo 호스트에서 임의의 데이터를 읽고, Forgejo 호스트에서 임의의 프로세스를 실행하는 원격 코드 실행 공격이 가능합니다. 이 문제를 해결하기 위해 변수 확장이 완료된 후, git 저장소를 초기화하기 전에 디렉터리에서 기존 .git 폴더를 제거합니다.
- techknowlogick
여기에 글을 올리는 이유는 누군가 물어봤기 때문입니다. Gitea는 이 두 가지 문제 모두로부터 보호됩니다.
(편향 고지: Gitea 프로젝트 리더십의 일부입니다)
수정: 참고로, 보안 사고는 누구에게나 발생하며, 보고한 사람을 비난해서는 안 됩니다. 특히 그렇게 하면 전반적으로 보고되는 문제가 줄어들 수 있기 때문입니다.
- keel-control
LLM 기여를 금지했을 때 처음 든 생각이었습니다.
그들은 AI를 사용해 취약점을 확인하지 않을 수 있지만, 공격자들은 사용할 것이므로 그들은 불리한 위치에 서게 됩니다.
- Macha
현재 codeberg 속도 제한 때문에 릴리스 노트를 읽을 수 없으므로, 릴리스 노트에 있는 두 가지 수정 사항은 다음과 같습니다:
https://codeberg.org/forgejo/forgejo/pulls/14301:
*Critical:* fix: prevent template expansion from interfering with git repo initialization. 템플릿 저장소에서 새 저장소를 생성할 때, Forgejo는 템플릿 저장소를 복제하고, `.git` 폴더를 제거하고, `.forgejo/template`에 나열된 파일에 대해 변수 템플릿 확장을 수행한 다음, 새 git 저장소를 초기화합니다. 이 과정에서 변수 템플릿 확장을 악용하여 새 `.git` 폴더를 생성할 수 있으며, git은 새 git 저장소를 초기화할 때 이를 채택하고 통합합니다. 악성 템플릿 저장소를 사용하여 Forgejo 호스트에서 임의의 데이터를 읽고, Forgejo 호스트에서 임의의 프로세스를 실행하는 원격 코드 실행 공격이 가능합니다. 이 문제를 해결하기 위해 변수 확장이 완료된 후, git 저장소를 초기화하기 전에 디렉터리에서 기존 `.git` 폴더를 제거합니다.
https://codeberg.org/forgejo/forgejo/pulls/14301:
API에서 편집 가능한 PR을 확인할 때 authorization reducer에 접근하도록 보장합니다. Forgejo의 API를 통해 git 저장소 콘텐츠를 편집할 때, "allow maintainer edit" 옵션이 있는 열린 풀 리퀘스트가 존재하는 경우 저장소 유지관리자가 소유하지 않은 브랜치를 편집할 수 있도록 하는 특수 보안 제어가 사용됩니다. 이 특수 보안 제어는 API별 보안 요구 사항을 고려하지 않았습니다 […]
- jzebedee
관련 변경 사항:
보안 버그 수정
PR: Critical: fix: prevent template expansion from interfering with git repo initialization. 템플릿 저장소에서 새 저장소를 생성할 때, Forgejo는 템플릿 저장소를 복제하고, .git 폴더를 제거하고, .forgejo/template에 나열된 파일에 대해 변수 템플릿 확장을 수행한 다음, 새 git 저장소를 초기화합니다. 이 과정에서 변수 템플릿 확장을 악용하여 새 .git 폴더를 생성할 수 있으며, git은 새 git 저장소를 초기화할 때 이를 채택하고 통합합니다. 악성 템플릿 저장소를 사용하여 Forgejo 호스트에서 임의의 데이터를 읽고, Forgejo 호스트에서 임의의 프로세스를 실행하는 원격 코드 실행 공격이 가능합니다. 이 문제를 해결하기 위해 변수 확장이 완료된 후, git 저장소를 초기화하기 전에 디렉터리에서 기존 .git 폴더를 제거합니다.