Documentation
¶
Overview ¶
Package analyze provides security analysis for PIDL protocols.
Index ¶
- type AnalysisOptions
- type RiskCategory
- type RiskSeverity
- type SecurityAnalysis
- func (a *SecurityAnalysis) HasRisks() bool
- func (a *SecurityAnalysis) HasRisksAtOrAbove(severity RiskSeverity) bool
- func (a *SecurityAnalysis) RisksByCategory(category RiskCategory) []SecurityRisk
- func (a *SecurityAnalysis) RisksBySeverity(severity RiskSeverity) []SecurityRisk
- func (a *SecurityAnalysis) String() string
- func (a *SecurityAnalysis) ToJSON() ([]byte, error)
- func (a *SecurityAnalysis) ToMarkdown() string
- type SecurityRisk
- type SecurityRule
- type SecuritySummary
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnalysisOptions ¶
type AnalysisOptions struct {
// MinSeverity filters risks below this severity level.
MinSeverity RiskSeverity
// Categories filters to only these categories (empty = all).
Categories []RiskCategory
// EnabledRules specifies which rules to run (empty = all).
EnabledRules []string
// DisabledRules specifies which rules to skip.
DisabledRules []string
}
AnalysisOptions controls analysis behavior.
func DefaultAnalysisOptions ¶
func DefaultAnalysisOptions() AnalysisOptions
DefaultAnalysisOptions returns default analysis options.
type RiskCategory ¶
type RiskCategory string
RiskCategory represents the category of a security risk.
const ( CategoryTrustBoundary RiskCategory = "trust_boundary" CategoryAuthentication RiskCategory = "authentication" CategoryDataProtection RiskCategory = "data_protection" CategoryTokenSecurity RiskCategory = "token_security" CategoryCommunication RiskCategory = "communication" CategoryConfiguration RiskCategory = "configuration" )
func ParseCategory ¶
func ParseCategory(s string) (RiskCategory, error)
ParseCategory parses a category string.
type RiskSeverity ¶
type RiskSeverity string
RiskSeverity represents the severity level of a security risk.
const ( // SeverityCritical represents critical security risks. SeverityCritical RiskSeverity = "critical" // SeverityHigh represents high security risks. SeverityHigh RiskSeverity = "high" // SeverityMedium represents medium security risks. SeverityMedium RiskSeverity = "medium" // SeverityLow represents low security risks. SeverityLow RiskSeverity = "low" // SeverityInfo represents informational findings. SeverityInfo RiskSeverity = "info" )
func ParseSeverity ¶
func ParseSeverity(s string) (RiskSeverity, error)
ParseSeverity parses a severity string.
func (RiskSeverity) Weight ¶
func (s RiskSeverity) Weight() int
severityWeight returns the numeric weight of a severity level.
type SecurityAnalysis ¶
type SecurityAnalysis struct {
// ProtocolID identifies the analyzed protocol.
ProtocolID string `json:"protocol_id"`
// ProtocolName is the human-readable name.
ProtocolName string `json:"protocol_name"`
// AnalyzedAt is when the analysis was performed.
AnalyzedAt time.Time `json:"analyzed_at"`
// Risks contains all identified security risks.
Risks []SecurityRisk `json:"risks"`
// Summary provides aggregate statistics.
Summary SecuritySummary `json:"summary"`
}
SecurityAnalysis contains the complete analysis result.
func Analyze ¶
func Analyze(p *pidl.Protocol, opts AnalysisOptions) *SecurityAnalysis
Analyze performs security analysis on a protocol.
func (*SecurityAnalysis) HasRisks ¶
func (a *SecurityAnalysis) HasRisks() bool
HasRisks returns true if any risks were found.
func (*SecurityAnalysis) HasRisksAtOrAbove ¶
func (a *SecurityAnalysis) HasRisksAtOrAbove(severity RiskSeverity) bool
HasRisksAtOrAbove returns true if any risks at or above the given severity exist.
func (*SecurityAnalysis) RisksByCategory ¶
func (a *SecurityAnalysis) RisksByCategory(category RiskCategory) []SecurityRisk
RisksByCategory returns risks filtered by category.
func (*SecurityAnalysis) RisksBySeverity ¶
func (a *SecurityAnalysis) RisksBySeverity(severity RiskSeverity) []SecurityRisk
RisksBySeverity returns risks filtered by severity.
func (*SecurityAnalysis) String ¶
func (a *SecurityAnalysis) String() string
String returns a human-readable text representation.
func (*SecurityAnalysis) ToJSON ¶
func (a *SecurityAnalysis) ToJSON() ([]byte, error)
ToJSON returns the analysis as JSON bytes.
func (*SecurityAnalysis) ToMarkdown ¶
func (a *SecurityAnalysis) ToMarkdown() string
ToMarkdown returns a markdown representation.
type SecurityRisk ¶
type SecurityRisk struct {
// ID is a unique identifier for this risk type.
ID string `json:"id"`
// Severity indicates how serious the risk is.
Severity RiskSeverity `json:"severity"`
// Category classifies the type of risk.
Category RiskCategory `json:"category"`
// Title is a brief description of the risk.
Title string `json:"title"`
// Description provides detailed information about the risk.
Description string `json:"description"`
// Location identifies where in the protocol the risk was found.
Location string `json:"location"`
// Remediation provides guidance on how to address the risk.
Remediation string `json:"remediation"`
}
SecurityRisk represents a security risk identified in the protocol.
type SecurityRule ¶
type SecurityRule struct {
// ID is a unique identifier for the rule.
ID string
// Name is a human-readable name.
Name string
// Description explains what the rule checks.
Description string
// Check runs the rule against a protocol and returns any risks found.
Check func(p *pidl.Protocol) []SecurityRisk
}
SecurityRule defines a security check.
func DefaultRules ¶
func DefaultRules() []SecurityRule
DefaultRules returns all built-in security rules.
type SecuritySummary ¶
type SecuritySummary struct {
// TotalRisks is the total number of risks found.
TotalRisks int `json:"total_risks"`
// BySeverity breaks down risks by severity level.
BySeverity map[RiskSeverity]int `json:"by_severity"`
// ByCategory breaks down risks by category.
ByCategory map[RiskCategory]int `json:"by_category"`
// Score is a numeric security score (0-100, higher is better).
Score int `json:"score"`
}
SecuritySummary provides aggregate statistics for the analysis.