Unleash: Clone-feature lets a user copy a feature from a project they cannot readGHSA-8xcj-9hfr-fh9j
Fix: Unleash/unleash@2dc6ac0GHSA-8xcj-9hfr-fh9j is a CWE-639 vulnerability in unleash-server. A fix is available for unleash-server — see the affected versions and patch details below.
Exploitation Status
Proof-of-concept exploit code exists
- CISA’s SSVC triage found public proof-of-concept exploit code for this CVE, though no confirmed active exploitation.
Exploitation and automatability from CISA’s SSVC triage for GHSA-8xcj-9hfr-fh9j.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
Real-World Exposure
How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.
unleash-servernpmDescription
Summary
The clone-feature endpoint supports copying features across projects, but it does not verify that the caller can access the source project. A user with create permissions in one project can clone a feature from another project they cannot read and then inspect the copied configuration.
This vulnerability cannot be confirmed without Enterprise access. Report is based on a circumstantial evidence in the open-source repository.
Details
src/lib/features/feature-toggle/feature-toggle-service.ts implements cloneFeatureToggle. This operation needs authorization for both sides: permission to read/copy the source feature and permission to create the destination feature.
The clone path validates permissions against the destination project, but not against the source project that owns featureName. Because feature names are globally unique, a caller can reference a feature outside projects they can access.
PoC
- Create or identify two projects:
P1with a private or restricted feature namedsecret-feature, andP2where the attacker has clone/create permissions. - Authenticate as the attacker.
- Send:
POST /api/admin/projects/P2/features/secret-feature/clone
Content-Type: application/json
{ "name": "secret-feature-copy" }
- Open
P2and inspectsecret-feature-copy. Verify if strategy parameters, constraints, variants, and variant payloads from the source feature have been copied.
Impact
Users with permissions on one project can disclose feature configuration from another project if they know or guess the source feature name. Feature names could be available in more public applications that have a common SDK access to multiple projects.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | unleash-server | all versions | 8.0.3npm install unleash-server@8.0.3 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for unleash-server, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update unleash-server to 8.0.3 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-8xcj-9hfr-fh9j is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Frequently Asked Questions
Is GHSA-8xcj-9hfr-fh9j in your dependencies?
Find it across npm, including transitive dependencies.