pub enum FindingCategory {
Show 17 variants
AuthorityPropagation,
OverPrivilegedIdentity,
UnpinnedAction,
UntrustedWithAuthority,
ArtifactBoundaryCrossing,
FloatingImage,
LongLivedCredential,
PersistedCredential,
TriggerContextMismatch,
CrossWorkflowAuthorityChain,
AuthorityCycle,
UpliftWithoutAttestation,
SelfMutatingPipeline,
CheckoutSelfPrExposure,
VariableGroupInPrJob,
SelfHostedPoolPrHijack,
ServiceConnectionScopeMismatch,
// some variants omitted
}Expand description
MVP categories (1-5) are derivable from pipeline YAML alone. Stretch categories (6-9) need heuristics or metadata enrichment.
Variants§
AuthorityPropagation
OverPrivilegedIdentity
UnpinnedAction
UntrustedWithAuthority
ArtifactBoundaryCrossing
FloatingImage
LongLivedCredential
PersistedCredential
Credential written to disk by a step (e.g. persistCredentials: true on a checkout).
Disk-persisted credentials are accessible to all subsequent steps and any process
with filesystem access, unlike runtime-only HasAccessTo authority.
TriggerContextMismatch
Dangerous trigger type (pull_request_target / pr) combined with secret/identity access.
CrossWorkflowAuthorityChain
Authority (secret/identity) flows into an opaque external workflow via DelegatesTo.
AuthorityCycle
Circular DelegatesTo chain — workflow calls itself transitively.
UpliftWithoutAttestation
Privileged workflow (OIDC/broad identity) with no provenance attestation step.
SelfMutatingPipeline
Step writes to the environment gate ($GITHUB_ENV, pipeline variables) — authority can propagate.
CheckoutSelfPrExposure
PR-triggered pipeline checks out the repository — attacker-controlled fork code lands on the runner.
VariableGroupInPrJob
ADO variable group consumed by a PR-triggered job, crossing trust boundary.
SelfHostedPoolPrHijack
Self-hosted agent pool used in a PR-triggered job that also checks out the repository.
ServiceConnectionScopeMismatch
Broad-scope ADO service connection reachable from a PR-triggered job without OIDC.
Trait Implementations§
Source§impl Clone for FindingCategory
impl Clone for FindingCategory
Source§fn clone(&self) -> FindingCategory
fn clone(&self) -> FindingCategory
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FindingCategory
impl Debug for FindingCategory
Source§impl<'de> Deserialize<'de> for FindingCategory
impl<'de> Deserialize<'de> for FindingCategory
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Hash for FindingCategory
impl Hash for FindingCategory
Source§impl PartialEq for FindingCategory
impl PartialEq for FindingCategory
Source§impl Serialize for FindingCategory
impl Serialize for FindingCategory
impl Copy for FindingCategory
impl Eq for FindingCategory
impl StructuralPartialEq for FindingCategory
Auto Trait Implementations§
impl Freeze for FindingCategory
impl RefUnwindSafe for FindingCategory
impl Send for FindingCategory
impl Sync for FindingCategory
impl Unpin for FindingCategory
impl UnsafeUnpin for FindingCategory
impl UnwindSafe for FindingCategory
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.