
로컬에 의도적으로 취약하게 구성된 실습 환경으로, 가이드 워크숍과 CTF 챌린지를 통해 Dockerized Git 서버를 대상으로 Git push-option RCE, 안전하지 않은 역직렬화(unsafe deserialization), 중복 키 파싱(duplicate-key parsing), 구성 오버라이드(configuration overrides)를 연습할 수 있습니다.
공개적으로 문서화된 CVE-2026-3854의 취약점 개념에서 영감을 받은 로컬 Learning Lab 및 Research Lab입니다. 두 경험 모두 가상의 Git 서버인 ForgeDock을 대상으로 실제 인증된 Git 푸시를 사용합니다; Research Lab입니다.

[!CAUTION] 이 프로젝트는 의도적으로 취약하게 만들어졌습니다. 로컬에서만 실행하세요. 해당 포트를 공용 또는 공유 네트워크에 노출하지 마세요. 프로덕션 용도로 사용하지 마세요.
[!NOTE] 이 저장소는 읽기 전용 교육 참고 자료로 게시되었습니다. 공개 이슈, 풀 리퀘스트, 기능 요청 또는 지원 요청을 받지 않습니다. 의도하지 않은 보안 경계 실패는 SECURITY.md에 설명된 대로 비공개로 신고해 주세요.
푸시 옵션, 안전하지 않은 직렬화, 중복 키 파싱, 구성 오버라이드 및 제한된 실행 체인을 가르치는 가이드 워크숍입니다. 강의는 짧은 설명과 실행 중인 랩에 대한 안전한 실험을 결합합니다.
세 개의 순차적 챌린지 카드, 선택적 힌트, 백엔드 생성 플래그를 제공하는 CTF 스타일 경험입니다. 일반 UI는 소스, 추적, 직렬화기 출력, 실행 게이트 출력 또는 안내형 워크스루를 노출하지 않습니다.
git clone https://github.com/royaleybovich/CVE-2026-3854-lab.git
cd CVE-2026-3854-lab
docker compose up -d --build
플래그나 자격 증명 설정이 필요하지 않습니다. 일회성 초기화 프로그램이 첫 번째 시작 시 개인 Docker 볼륨에 독립적인 무작위 증명 값과 서비스 자격 증명을 생성합니다. make up은 이와 동등한 편의 명령입니다. 선택적 .env 파일은 기본값을 재정의하거나 명시적 값을 Docker 외부에 유지하는 경우에만 필요합니다.
| 서비스 | 로컬 URL |
|---|---|
| Flagship | http://localhost:8080 |
| ForgeDock | http://localhost:3000 |
| 웹 터미널 | http://localhost:7681 |
일회용 랩 계정은 다음과 같습니다:
Username: devuser
Password: devpass
이 공개 자격 증명은 로컬의 일회용 랩 안에서만 존재합니다. 다른 곳에서 재사용하지 마세요.
docker compose)릴리스 준비 검증은 Apple Silicon(arm64)에서 확인되었습니다. 다른 운영 체제와 CPU 아키텍처는 클린 클론 검사가 기록되기 전까지 검증되었다고 주장되지 않습니다.
make up # build and start; private lab state is generated automatically
make logs # follow service logs
make reset # delete lab repositories/progress and rebuild
make down # stop the lab without deleting Docker volumes
make test # run unit and live integration tests
make reset은 Docker 볼륨(랩 저장소, 런타임 진행 상태, 증명 값, 내부 자격 증명 포함)을 삭제합니다. 다음 시작 시 새로운 개인 값이 자동으로 생성됩니다.
게시된 포트는 127.0.0.1에 바인딩됩니다. Redis, 훅 실행기, 내부 처리 서비스는 게시되지 않습니다. 실행기는 Docker 소켓이나 호스트 파일시스템 마운트가 없으며, Linux capabilities를 제거하고, 읽기 전용 파일시스템을 사용하며, 셸 명령이나 호출자가 제어하는 환경을 허용하지 않고, 랩이 소유한 정확한 증명 실행 파일만 호출할 수 있습니다. 이러한 통제는 실습 범위를 제한하지만, 공개적으로 노출해도 안전하게 만들지는 않습니다.
Browser / Git client
↓
Flagship portal / ForgeDock
↓
Internal processing network
↓
Constrained executor
ForgeDock은 공개적으로 문서화된 CVE-2026-3854의 취약점 개념을 의도적으로 단순화하고 안전하게 제약한 재구성입니다. GitHub의 독점 구현을 재현하지 않습니다. 필드 이름, 서비스 경계, 실행 동작은 실제 GitHub 및 GitHub Enterprise Server 구현과 다릅니다.
의도적으로 취약한 동작은 이 랩을 위해 다운스트림에서 추가되었으며 업스트림 Forgejo 취약점이 아닙니다. ForgeDock은 GitHub가 아니며, 이 프로젝트는 GitHub, Forgejo, Wiz 또는 인용된 연구자들과 제휴하거나 보증하지 않습니다.
이 크레딧은 출처와 의존성을 설명할 뿐이며 협업, 승인 또는 보증을 의미하지 않습니다.
Flagship이 만든 소프트웨어와 커리큘럼은 파일에 다른 호환 라이선스가 명시된 경우를 제외하고 GPL-3.0-or-later로 라이선스가 부여됩니다. LICENSE, NOTICE.md, Forgejo 출처, TRADEMARKS.md를 참조하세요. 기존 타사 라이선스 및 고지는 계속 유효합니다.