GHSA-wxf3-4fvj-vqqx json
Unsafe plugins can be installed via pack import by tenant admins
published 3y ago modified 9mo ago
- cvss
- 8.7
- version 3.1, GitHub
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
### Summary Unsafe plugins (for instance `sql-list`) can be installed in subdomain tenants via pack import even if unsafe plugin installation for tenants is disables
### Details I have an example https://bot20230704.saltcorn.com/view/all_plugins It's publicly accessible (but has not so secure values except list of tenants). But using this mech one can read **any** data from other tenants.
### Impact All tenants of installation (i.e. `saltcorn.com`), can be compromised from tenant user has admin access. If an untrusted user has admin rights to a tenant instance, they will be able to install a plug-in that can access information from other tenants
### Revived after 0.8.7 After patch in 0.8.7 this is not fixed completely.
Here are steps to reproduce: 1. Publish to NPM plugin that was not approved by admin (in case of saltcorn.com) by @glutamate. I've just published this one: https://www.npmjs.com/package/saltcorn-qrcode 2. Publish somewhere plugin store that includes plugin from previous step: https://gist.github.com/pyhedgehog/f1fd7cb13f4d0a7ccf6a965748d19bd2 3. Add plugin store link to tenant store. 4. Install plugin. 5. Use it in tenant: https://bot20230704.saltcorn.com/view/testqr_show/1
Here are logic: Unsafe plugins checked against this list: https://github.com/saltcorn/saltcorn/blob/99fe277e497fd193bb070acd8c663aa254a9907c/packages/server/load_plugins.js#L191 But it's under control of tenant admin, not server admin. Proposed login: ```javascript const safes = getRootState().getConfig("available_plugins",[]).filter(p=>!p.unsafe).map(p=>p.location); ```
Patch / fix
- npm @saltcorn/cli 0.8.8-beta.2
- github.com/saltcorn/saltcorn@0f32a51 commit
- github.com/saltcorn/saltcorn#1973 pull request
Is GHSA-wxf3-4fvj-vqqx in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| GitHub | 3.1 | 8.7 | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | @saltcorn/cli | <0.8.8-beta.2 |
0.8.8-beta.2 |
References
-
github.com
/saltcorn/saltcorn/pull/1973
web
-
github.com
/saltcorn/saltcorn/commit/0f32a51277a635c814a634bda9b6d358fb8c04ab
web
-
github.com
/saltcorn/saltcorn/security/advisories/GHSA-wxf3-4fvj-vqqx
web
-
github.com
/saltcorn/saltcorn
package
-
github.com
/saltcorn/saltcorn/blob/99fe277e497fd193bb070acd8c663aa254a9907c/packages/server/load_plugins.js#L191
web
Sources
- GitHub Advisory GHSA-wxf3-4fvj-vqqx
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.