Skip to content

sec(api): bound update-any by its Constraints on planned-purchase run #1129

Closed

Description

@cristim

Summary

The planned-purchase run (execute-now) route lets an update-any holder act on another user's execution without checking update-any's Constraints. This is the same class of gap as #1098 (pause/resume) and #961 (DELETE). The execute permission's own Constraints still apply to the row's recommendations, so the impact is narrower.

Evidence (origin/main d9b2aa7)

Scenario

A user holds update-any limited to provider=aws and an unconstrained execute. They can run another user's Azure planned purchase. The update-any bound is meant to stop them acting on rows outside their scope.

Proposed fix

Apply the same update-any Constraints check that #1098 and #1097 use to the run route. Once both land, consolidate on one helper. Add tests: bounded update-any is denied out of scope and allowed in scope; the creator is unaffected; admin is unaffected; a constraint-store error is not treated as a denial.

Found during review of the #1098 fix.

Activity

  1. IAmJSD commented on Oct 20, 2026

    @IAmJSD
    Collaborator

    Claiming: working on this

  2. self-assigned this
    on Oct 20, 2026
  3. added a commit that references this issue on Oct 23, 2026
    51da9bd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions