CVE-2026-77426:
JavaScript 취약성 분석 및 완화
개요
CVE-2026-77426 is a set of five authorization vulnerabilities in the Unleash open-source feature management platform's admin API, collectively described as "Missing await on permission check + cross-project IDOR in admin API." The vulnerabilities affect all versions of unleash-server (npm) prior to 8.0.3 and were disclosed on September 22, 2026. The most critical flaw is a missing await on an async permission check that completely bypasses authorization for segment strategy modifications; the remaining four are Insecure Direct Object Reference (IDOR) issues enabling cross-project data disclosure and modification. The CVSS v4.0 base score is 7.1 (High) (GitHub Advisory).
기술적 세부 사항
The vulnerabilities are classified under CWE-862 (Missing Authorization) and CWE-639 (Authorization Bypass Through User-Controlled Key). The primary flaw (Vuln 1) resides in src/lib/features/segment/segment-controller.ts (line 345): the POST /api/admin/segments/strategies handler calls this.accessService.hasPermission() without await, so the variable receives a truthy Promise object rather than the resolved boolean — causing the if (!hasFeatureStrategyPermission) guard to never trigger. The four IDOR flaws involve API endpoints that accept project-scoped URL parameters but perform lookups using only the resource identifier (feature name, strategy ID, or tag), without validating that the resource belongs to the specified project: GET /api/admin/projects/:projectId/features/:featureName/environments/:environment/variants (variants.ts line 213), GET .../strategies/:strategyId (feature-toggle-controller.ts line 1107), getEnvironmentInfo() (feature-toggle-service.ts line 1611), and PUT /:projectId/tags (feature-toggle-controller.ts line 576) (GitHub Advisory, Commit c93a963).
영향
Any authenticated Unleash user — regardless of their project-level permissions — can exploit the missing await bug to modify segment assignments on any feature strategy across all projects and environments, constituting a high-integrity impact. The four IDOR vulnerabilities allow the same authenticated user to read variant configurations (names, weights, payloads), full strategy configurations, and environment metadata from projects they have no access to, as well as modify tags on features belonging to other projects. Collectively, these flaws break Unleash's project-based access control model, enabling unauthorized cross-project reconnaissance and configuration tampering that could affect feature flag rollout behavior in production environments (GitHub Advisory).
악용 가능성
No public proof-of-concept exploit code has been published, and there is no evidence of in-the-wild exploitation as of the disclosure date. The EPSS score is 0.0, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation requires only a valid authenticated session (low-privilege user), no special attack complexity, and is network-accessible, making it straightforward for any insider or compromised account to abuse (GitHub Advisory).
착취 단계
- Authenticate: Obtain any valid Unleash user account (even a low-privilege account with access to a single project).
- Exploit missing await (Vuln 1 — Segment Assignment Bypass): Send a
POSTrequest to/api/admin/segments/strategieswith a body specifyingprojectId,environmentId,strategyId, andsegmentIdstargeting a strategy in a project the attacker does not haveUPDATE_FEATURE_STRATEGYpermission for. Because the permission check is never awaited, the 403 guard never fires and the modification succeeds. - Exploit cross-project variant read (Vuln 2): Send a
GETrequest to/api/admin/projects/<attacker-controlled-projectId>/features/<target-featureName>/environments/<env>/variantsusing afeatureNamefrom a different project. The endpoint ignoresprojectIdand returns variant configuration (names, weights, payloads) for the target feature. - Exploit cross-project strategy read (Vuln 3): Send a
GETrequest to the strategy endpoint with a known or guessedstrategyIdfrom another project. The endpoint only validatesstrategyId, returning the full strategy configuration regardless of project context. - Exploit cross-project environment info leak (Vuln 4): Call
getEnvironmentInfovia the relevant admin API endpoint supplying afeatureNamefrom a different project; the missingvalidateFeatureBelongsToProjectcall returns environment metadata for the target feature. - Exploit cross-project tag modification (Vuln 5): Send a
PUTrequest to/:projectId/tagswith a body containing feature identifiers belonging to a different project; the endpoint does not validate project membership and applies the tag modification. (GitHub Advisory, Commit c93a963, Commit bea7eff)
타협의 징후
- Network/Logs: HTTP
POSTrequests to/api/admin/segments/strategiesfrom users who do not holdUPDATE_FEATURE_STRATEGYfor the referencedprojectId/environmentIdthat return HTTP 200 instead of 403. - Network/Logs:
GETrequests to/api/admin/projects/<projectId>/features/<featureName>/environments/<env>/variantswhereprojectIddoes not match the project owningfeatureName, returning HTTP 200. - Network/Logs:
GETrequests to strategy endpoints (.../strategies/:strategyId) where thestrategyIddoes not belong to theprojectIdorfeatureNamein the URL path, returning HTTP 200. - Network/Logs:
PUTrequests to/:projectId/tagscontaining feature names from projects other thanprojectId, returning HTTP 200. - Application Logs: Unexpected segment assignment changes or tag modifications on features in projects where the acting user has no configured permissions, visible in Unleash audit logs. (GitHub Advisory)
완화 및 해결 방법
Upgrade unleash-server (npm) to version 8.0.3 or later, which includes five targeted fixes: adding await to the hasPermission() call in segment-controller.ts; adding validateFeatureBelongsToProject() calls in the variants route and getEnvironmentInfo(); and adding strategyBelongsToFeatureAndProject() validation in the strategy read/patch handlers. No official configuration-based workaround is available for the missing await issue — patching is the only reliable remediation. Organizations unable to upgrade immediately should restrict Unleash admin API access to trusted internal networks and audit user permissions to minimize the blast radius (GitHub Advisory, Unleash v8.0.3 Release).
추가 자료
근원: 이 보고서는 AI를 사용하여 생성되었습니다.
관련 JavaScript 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."