-
Notifications
You must be signed in to change notification settings - Fork 0
Treat reusable-workflow secret inheritance as privileged execution #29
Copy link
Copy link
Closed
Labels
authority:githubGitHub is the authoritative lifecycle record for this workGitHub is the authoritative lifecycle record for this workbeta:blockerMust be resolved before the first 2.0 betaMust be resolved before the first 2.0 betacompletion:evidence-requiredClose only after all explicit acceptance and operational evidence is publicClose only after all explicit acceptance and operational evidence is publiccompletion:evidence-verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedkind:defectA public product behavior is incorrectA public product behavior is incorrectpriority:P1High-priority product or release riskHigh-priority product or release riskrepo:github-control-planeOwned by the public organization control planeOwned by the public organization control planestatus:doneDerived from the authoritative closed issue stateDerived from the authoritative closed issue state
Milestone
Description
Metadata
Metadata
Assignees
Labels
authority:githubGitHub is the authoritative lifecycle record for this workGitHub is the authoritative lifecycle record for this workbeta:blockerMust be resolved before the first 2.0 betaMust be resolved before the first 2.0 betacompletion:evidence-requiredClose only after all explicit acceptance and operational evidence is publicClose only after all explicit acceptance and operational evidence is publiccompletion:evidence-verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedAcceptance, fixed version, and required operational evidence are publicly verifiedkind:defectA public product behavior is incorrectA public product behavior is incorrectpriority:P1High-priority product or release riskHigh-priority product or release riskrepo:github-control-planeOwned by the public organization control planeOwned by the public organization control planestatus:doneDerived from the authoritative closed issue stateDerived from the authoritative closed issue state
Problem
The public qualification scanner marks a job as privileged when it has write permissions, requests an environment, or contains an explicit
${{ secrets.* }}expression. A reusable-workflow caller withsecrets: inherithas none of those shapes, so it is not treated as privileged when the workflow also supportsworkflow_dispatch. The scanner can therefore accept an unguarded manual-dispatch job that invokes a local or external reusable workflow and passes repository or organization secrets from a non-target ref.For a local reusable workflow, the selected dispatch ref also selects the called workflow source. This permits contributor-controlled workflow code from an unprotected ref to receive inherited credentials while the portable trust scan remains green.
Acceptance criteria
secrets: inheritand explicit reusable-workflow secret maps, is classified as privileged.workflow_dispatchis rejected unless its effective condition fails closed outside the repository target ref.secrets: inheritcalls and unguarded explicit secret maps, while accepting a protected-target caller and a genuinely credential-free reusable workflow.Delete when every reusable-workflow credential path participates in the same protected-ref and untrusted-contribution checks as direct secret expressions.