risk

package
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2026 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyGovernFirstProfile added in v1.1.0

func ApplyGovernFirstProfile(profileName string, paths []ActionPath) ([]ActionPath, *ActionPathToControlFirst)

func BuildActionPaths added in v1.0.11

func BuildActionPaths(attackPaths []riskattack.ScoredPath, inventory *agginventory.Inventory) ([]ActionPath, *ActionPathToControlFirst)

func BuildIdentityActionTargets added in v1.1.0

func BuildIdentityActionTargets(paths []ActionPath) (*IdentityActionTarget, *IdentityActionTarget)

Types

type ActionPath added in v1.0.11

type ActionPath struct {
	PathID                     string   `json:"path_id"`
	Org                        string   `json:"org"`
	Repo                       string   `json:"repo"`
	AgentID                    string   `json:"agent_id,omitempty"`
	ToolType                   string   `json:"tool_type"`
	Location                   string   `json:"location,omitempty"`
	WriteCapable               bool     `json:"write_capable"`
	OperationalOwner           string   `json:"operational_owner,omitempty"`
	OwnerSource                string   `json:"owner_source,omitempty"`
	OwnershipStatus            string   `json:"ownership_status,omitempty"`
	ApprovalGapReasons         []string `json:"approval_gap_reasons,omitempty"`
	PullRequestWrite           bool     `json:"pull_request_write,omitempty"`
	MergeExecute               bool     `json:"merge_execute,omitempty"`
	DeployWrite                bool     `json:"deploy_write,omitempty"`
	DeliveryChainStatus        string   `json:"delivery_chain_status,omitempty"`
	ProductionTargetStatus     string   `json:"production_target_status,omitempty"`
	ProductionWrite            bool     `json:"production_write"`
	ApprovalGap                bool     `json:"approval_gap"`
	SecurityVisibilityStatus   string   `json:"security_visibility_status,omitempty"`
	CredentialAccess           bool     `json:"credential_access"`
	DeploymentStatus           string   `json:"deployment_status,omitempty"`
	WorkflowTriggerClass       string   `json:"workflow_trigger_class,omitempty"`
	ExecutionIdentity          string   `json:"execution_identity,omitempty"`
	ExecutionIdentityType      string   `json:"execution_identity_type,omitempty"`
	ExecutionIdentitySource    string   `json:"execution_identity_source,omitempty"`
	ExecutionIdentityStatus    string   `json:"execution_identity_status,omitempty"`
	ExecutionIdentityRationale string   `json:"execution_identity_rationale,omitempty"`
	BusinessStateSurface       string   `json:"business_state_surface,omitempty"`
	SharedExecutionIdentity    bool     `json:"shared_execution_identity,omitempty"`
	StandingPrivilege          bool     `json:"standing_privilege,omitempty"`
	AttackPathScore            float64  `json:"attack_path_score"`
	RiskScore                  float64  `json:"risk_score"`
	RecommendedAction          string   `json:"recommended_action"`
	MatchedProductionTargets   []string `json:"matched_production_targets,omitempty"`
}

func DecorateActionPaths added in v1.1.0

func DecorateActionPaths(paths []ActionPath) []ActionPath

type ActionPathSummary added in v1.0.11

type ActionPathSummary struct {
	TotalPaths                  int `json:"total_paths"`
	WriteCapablePaths           int `json:"write_capable_paths"`
	ProductionTargetBackedPaths int `json:"production_target_backed_paths"`
	GovernFirstPaths            int `json:"govern_first_paths"`
}

type ActionPathToControlFirst added in v1.0.11

type ActionPathToControlFirst struct {
	Summary ActionPathSummary `json:"summary"`
	Path    ActionPath        `json:"path"`
}

type ExposureGroup added in v1.1.0

type ExposureGroup struct {
	GroupID                  string   `json:"group_id"`
	Org                      string   `json:"org"`
	Repos                    []string `json:"repos"`
	ToolTypes                []string `json:"tool_types"`
	ExecutionIdentity        string   `json:"execution_identity,omitempty"`
	ExecutionIdentityType    string   `json:"execution_identity_type,omitempty"`
	ExecutionIdentityStatus  string   `json:"execution_identity_status,omitempty"`
	DeliveryChainStatus      string   `json:"delivery_chain_status,omitempty"`
	WorkflowTriggerClass     string   `json:"workflow_trigger_class,omitempty"`
	BusinessStateSurface     string   `json:"business_state_surface,omitempty"`
	RecommendedAction        string   `json:"recommended_action"`
	SharedExecutionIdentity  bool     `json:"shared_execution_identity"`
	StandingPrivilege        bool     `json:"standing_privilege"`
	PathCount                int      `json:"path_count"`
	WriteCapablePathCount    int      `json:"write_capable_path_count"`
	ProductionWritePathCount int      `json:"production_write_path_count"`
	PathIDs                  []string `json:"path_ids"`
	ExampleRepo              string   `json:"example_repo,omitempty"`
	ExampleLocation          string   `json:"example_location,omitempty"`
}

func BuildExposureGroups added in v1.1.0

func BuildExposureGroups(paths []ActionPath) []ExposureGroup

type IdentityActionTarget added in v1.1.0

type IdentityActionTarget struct {
	ExecutionIdentity            string   `json:"execution_identity,omitempty"`
	ExecutionIdentityType        string   `json:"execution_identity_type,omitempty"`
	ExecutionIdentitySource      string   `json:"execution_identity_source,omitempty"`
	RepoCount                    int      `json:"repo_count"`
	PathCount                    int      `json:"path_count"`
	WriteCapablePathCount        int      `json:"write_capable_path_count"`
	HighImpactPathCount          int      `json:"high_impact_path_count"`
	UnknownToSecurityPathCount   int      `json:"unknown_to_security_path_count"`
	UnresolvedOwnershipPathCount int      `json:"unresolved_ownership_path_count"`
	SharedExecutionIdentity      bool     `json:"shared_execution_identity"`
	StandingPrivilege            bool     `json:"standing_privilege"`
	Rationale                    []string `json:"rationale,omitempty"`
}

type IdentityExposureSummary added in v1.1.0

type IdentityExposureSummary struct {
	TotalNonHumanIdentitiesObserved      int `json:"total_non_human_identities_observed"`
	IdentitiesBackingWriteCapablePaths   int `json:"identities_backing_write_capable_paths"`
	IdentitiesBackingDeployCapablePaths  int `json:"identities_backing_deploy_capable_paths"`
	IdentitiesWithUnresolvedOwnership    int `json:"identities_with_unresolved_ownership"`
	IdentitiesWithUnknownExecutionLinked int `json:"identities_with_unknown_execution_correlation"`
}

func BuildIdentityExposureSummary added in v1.1.0

func BuildIdentityExposureSummary(paths []ActionPath, inventory *agginventory.Inventory) *IdentityExposureSummary

type OwnerlessExposure added in v1.1.0

type OwnerlessExposure struct {
	ExplicitOwnerPaths   int `json:"explicit_owner_paths"`
	InferredOwnerPaths   int `json:"inferred_owner_paths"`
	UnresolvedOwnerPaths int `json:"unresolved_owner_paths"`
	ConflictOwnerPaths   int `json:"conflict_owner_paths"`
}

func BuildOwnerlessExposure added in v1.1.0

func BuildOwnerlessExposure(paths []ActionPath) *OwnerlessExposure

type RepoAggregate

type RepoAggregate struct {
	Org      string  `json:"org"`
	Repo     string  `json:"repo"`
	Score    float64 `json:"combined_risk_score"`
	Autonomy string  `json:"highest_autonomy"`
}

type Report

type Report struct {
	GeneratedAt              string                    `json:"generated_at"`
	TopN                     []ScoredFinding           `json:"top_findings"`
	Ranked                   []ScoredFinding           `json:"ranked_findings"`
	Repos                    []RepoAggregate           `json:"repo_risk"`
	AttackPaths              []riskattack.ScoredPath   `json:"attack_paths,omitempty"`
	TopAttackPaths           []riskattack.ScoredPath   `json:"top_attack_paths,omitempty"`
	ActionPaths              []ActionPath              `json:"action_paths,omitempty"`
	ActionPathToControlFirst *ActionPathToControlFirst `json:"action_path_to_control_first,omitempty"`
}

func Score

func Score(findings []model.Finding, topN int, now time.Time) Report

type ScoredFinding

type ScoredFinding struct {
	CanonicalKey  string        `json:"canonical_key"`
	Score         float64       `json:"risk_score"`
	BlastRadius   float64       `json:"blast_radius"`
	Privilege     float64       `json:"privilege_level"`
	TrustDeficit  float64       `json:"trust_deficit"`
	EndpointClass string        `json:"endpoint_class"`
	DataClass     string        `json:"data_class"`
	AutonomyLevel string        `json:"autonomy_level"`
	Reasons       []string      `json:"reasons"`
	Finding       model.Finding `json:"finding"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL