Quick answers
- Is This vulnerability exploited in the wild?
- No. Junglewise Threat Intelligence has no report of This vulnerability being exploited in the wild.
- How severe is This vulnerability?
- Low severity, with a CVSS score of 3.1, published 16 April 2026.
- Which products and versions are affected?
- @paperclipai/server (npm) SEMVER:introduced=0,fixed=2026.416.0.
- Is there a fix for This vulnerability?
- Yes. @paperclipai/server (npm): upgrade to 2026.416.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is This vulnerability attacked?
- It is attacked over the network, in a software library.
- Am I affected?
- Check whether you run @paperclipai/server (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.
How to fix
- @paperclipai/server (npm): upgrade to 2026.416.0 or later
npm install @paperclipai/server@2026.416.0
Technical details
This is an authorization bypass / account spoofing vulnerability in the approval-resolution endpoints (POST /approvals/:id/approve, /reject, /request-revision). The vulnerability stems from the server accepting a client-supplied `decidedByUserId` field in the request body and writing it verbatim into the authoritative `approvals.decidedByUserId` column without validating it against the authenticated actor's identity. The authorization check (`assertBoard`) only verifies that the caller is a board user with access to the approval's company—it never ties the supplied `decidedByUserId` to `req.actor.userId`. For hire_agent approvals with a monthly budget, the forged user ID is also written to the `budget_policies` row as `createdByUserId`/`updatedByUserId`. The attack requires authentication (board-level access) but no additional preconditions; any board member of a company can spoof decisions for approvals in that company. The fix (v2026.416.0) validates that the authenticated actor ID matches the supplied `decidedByUserId`.
Affected products
- Paperclip server <= 2026.410.0-canary.1
Timeline
- 2026-04-16: disclosed
- 2026-04-16: patched: v2026.416.0