Repository navigation
fix(security): name no nodes in authorization denials - #1322
Merged
Merged
Conversation
A refused location listing named the nodes the person could not view and read differently for a location that does not exist. Listing refusals now carry one fixed message with the decision ID, identical for unassigned and unknown locations. The audit event keeps the missing nodes.
Every refusal from person authorization now shows fixed text per action and its decision ID; the audit event keeps the missing nodes. Unknown jobs and triggers are refused only after the caller is authorized for the target, so an unknown object reads the same as a forbidden one.
kvlonge
enabled auto-merge (squash)
November 6, 2026 11:43
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Security fix. A refused request named the nodes the caller lacked permission on. Some of those nodes the caller could not see at all: a whole location, or a job's or trigger's write set. Refusals also read differently for existing and unknown locations, jobs and triggers, so a signed-in person could list another location's nodes or probe which objects exist.
Changes
missing view permission for this target, plus the decision ID. It names no nodes and gives no count. This covers listings, check SQL and evidence, job runs, trigger pause and resume, sensor cursor reset, cancel and rerun.Verification
make check-cipasses.