Documentation
¶
Index ¶
- Constants
- type AnalysisResult
- func (r *AnalysisResult) AddDependency(name, version string) *AnalysisResult
- func (r *AnalysisResult) AddFramework(name, version string) *AnalysisResult
- func (r *AnalysisResult) AddVulnerability(vulnType, severity, description, location string) *AnalysisResult
- func (r *AnalysisResult) SetBundleType(bundleType string) *AnalysisResult
- func (r *AnalysisResult) SetDuration(duration string) *AnalysisResult
- func (r *AnalysisResult) SetFileSize(size int64) *AnalysisResult
- func (r *AnalysisResult) SetIsMinified(isMinified bool) *AnalysisResult
- func (r *AnalysisResult) SetScriptCount(count int) *AnalysisResult
- type Dependency
- type Finding
- func (f *Finding) WithCVSS(cvss float64) *Finding
- func (f *Finding) WithDescription(description string) *Finding
- func (f *Finding) WithEvidence(evidence string) *Finding
- func (f *Finding) WithMetadata(key string, value interface{}) *Finding
- func (f *Finding) WithPath(path string) *Finding
- func (f *Finding) WithReferences(references ...string) *Finding
- func (f *Finding) WithRemediation(remediation string) *Finding
- func (f *Finding) WithTags(tags ...string) *Finding
- func (f *Finding) WithURL(url string) *Finding
- type FindingType
- type Framework
- type FrameworkInfo
- type ScanResult
- type ScanStatus
- type SecurityReport
- type SecurityReportSummary
- type SecurityVulnerability
- type Severity
- type Target
- func (t *Target) AddAPI(api string)
- func (t *Target) AddCookie(name, value string)
- func (t *Target) AddFramework(framework FrameworkInfo)
- func (t *Target) AddHeader(name, value string)
- func (t *Target) AddPath(path string)
- func (t *Target) AddScript(script string)
- func (t *Target) AddStyle(style string)
- func (t *Target) AddTechnology(tech string)
- func (t *Target) AddToQueue(url string)
- func (t *Target) AddURL(url string)
- func (t *Target) GetNextURL() string
- func (t *Target) IsVisited(url string) bool
- func (t *Target) MarkVisited(url string)
- func (t *Target) QueueSize() int
- func (t *Target) ScriptCount() int
- func (t *Target) SetHTML(html string)
- func (t *Target) StyleCount() int
- func (t *Target) UpdateLastSeen()
- type Vulnerability
Constants ¶
const ( VulnTypeXSS = "xss" VulnTypeEval = "eval" VulnTypeDOMManipulation = "dom-manipulation" VulnTypeInjection = "injection" VulnTypeInsecureRandomness = "insecure-randomness" VulnTypePrototypePollution = "prototype-pollution" VulnTypeInsecureCrypto = "insecure-crypto" VulnTypeUnsafeAssignment = "unsafe-assignment" VulnTypeInnerHTML = "innerHTML" VulnTypeDocumentWrite = "document.write" VulnTypeInsecureCookie = "insecure-cookie" VulnTypeDynamicFunctionExec = "dynamic-function-execution" VulnTypeInsecurePostMessage = "insecure-postmessage" VulnTypeInsecureEventHandler = "insecure-event-handler" )
Common vulnerability types
const ( LocationClientSide = "client-side" LocationServerSide = "server-side" LocationThirdParty = "third-party" LocationDependency = "dependency" )
Common vulnerability locations
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnalysisResult ¶
type AnalysisResult struct { Target *Target `json:"target"` Dependencies []*Dependency `json:"dependencies,omitempty"` Vulnerabilities []*Vulnerability `json:"vulnerabilities,omitempty"` Frameworks []*Framework `json:"frameworks,omitempty"` IsMinified bool `json:"is_minified"` BundleType string `json:"bundle_type,omitempty"` FileSize int64 `json:"file_size,omitempty"` ScriptCount int `json:"script_count,omitempty"` Duration string `json:"duration,omitempty"` }
AnalysisResult represents the result of a JavaScript analysis
func NewAnalysisResult ¶
func NewAnalysisResult(target *Target) *AnalysisResult
NewAnalysisResult creates a new analysis result
func (*AnalysisResult) AddDependency ¶
func (r *AnalysisResult) AddDependency(name, version string) *AnalysisResult
AddDependency adds a dependency to the analysis result
func (*AnalysisResult) AddFramework ¶
func (r *AnalysisResult) AddFramework(name, version string) *AnalysisResult
AddFramework adds a framework to the analysis result
func (*AnalysisResult) AddVulnerability ¶
func (r *AnalysisResult) AddVulnerability(vulnType, severity, description, location string) *AnalysisResult
AddVulnerability adds a vulnerability to the analysis result
func (*AnalysisResult) SetBundleType ¶
func (r *AnalysisResult) SetBundleType(bundleType string) *AnalysisResult
SetBundleType sets the bundle type
func (*AnalysisResult) SetDuration ¶
func (r *AnalysisResult) SetDuration(duration string) *AnalysisResult
SetDuration sets the analysis duration
func (*AnalysisResult) SetFileSize ¶
func (r *AnalysisResult) SetFileSize(size int64) *AnalysisResult
SetFileSize sets the file size
func (*AnalysisResult) SetIsMinified ¶
func (r *AnalysisResult) SetIsMinified(isMinified bool) *AnalysisResult
SetIsMinified sets whether the script is minified
func (*AnalysisResult) SetScriptCount ¶
func (r *AnalysisResult) SetScriptCount(count int) *AnalysisResult
SetScriptCount sets the script count
type Dependency ¶
type Dependency struct { Name string `json:"name"` Version string `json:"version,omitempty"` URL string `json:"url,omitempty"` }
Dependency represents a JavaScript dependency
type Finding ¶
type Finding struct { ID string `json:"id"` Type FindingType `json:"type"` Title string `json:"title"` Description string `json:"description"` Severity Severity `json:"severity"` CVSS float64 `json:"cvss,omitempty"` URL string `json:"url,omitempty"` Path string `json:"path,omitempty"` Evidence string `json:"evidence,omitempty"` Remediation string `json:"remediation,omitempty"` References []string `json:"references,omitempty"` Tags []string `json:"tags,omitempty"` Timestamp time.Time `json:"timestamp"` // Additional metadata Metadata map[string]interface{} `json:"metadata,omitempty"` }
Finding represents a security finding or discovery
func NewFinding ¶
func NewFinding(findingType FindingType, title string, severity Severity) *Finding
NewFinding creates a new finding
func (*Finding) WithDescription ¶
WithDescription adds a description to the finding
func (*Finding) WithEvidence ¶
WithEvidence adds evidence to the finding
func (*Finding) WithMetadata ¶
WithMetadata adds metadata to the finding
func (*Finding) WithReferences ¶
WithReferences adds references to the finding
func (*Finding) WithRemediation ¶
WithRemediation adds remediation guidance to the finding
type FindingType ¶
type FindingType string
FindingType represents the type of finding
const ( // FindingTypeVulnerability represents a security vulnerability FindingTypeVulnerability FindingType = "vulnerability" // FindingTypeFramework represents a framework detection FindingTypeFramework FindingType = "framework" // FindingTypeAPI represents an API endpoint FindingTypeAPI FindingType = "api" // FindingTypeRoute represents an application route FindingTypeRoute FindingType = "route" // FindingTypeBundle represents a JavaScript bundle FindingTypeBundle FindingType = "bundle" // FindingTypeConfig represents a configuration issue FindingTypeConfig FindingType = "config" // FindingTypeXSS represents a cross-site scripting vulnerability FindingTypeXSS FindingType = "xss" // FindingTypeInjection represents an injection vulnerability FindingTypeInjection FindingType = "injection" // FindingTypeCSRF represents a cross-site request forgery vulnerability FindingTypeCSRF FindingType = "csrf" // FindingTypeCORS represents a CORS misconfiguration FindingTypeCORS FindingType = "cors" // FindingTypeHeader represents a security header issue FindingTypeHeader FindingType = "header" // FindingTypeCookie represents a cookie security issue FindingTypeCookie FindingType = "cookie" // FindingTypeSupplyChain represents a supply chain security issue FindingTypeSupplyChain FindingType = "supply_chain" // FindingTypePrototype represents a prototype pollution vulnerability FindingTypePrototype FindingType = "prototype" )
type Framework ¶
type Framework struct { Name string `json:"name"` Version string `json:"version,omitempty"` URL string `json:"url,omitempty"` }
Framework represents a detected JavaScript framework
type FrameworkInfo ¶
type FrameworkInfo struct { Type string `json:"type"` Version string `json:"version,omitempty"` Score float64 `json:"score,omitempty"` }
FrameworkInfo represents a detected framework
type ScanResult ¶
type ScanResult struct { URL string `json:"url"` ScannedAt time.Time `json:"scanned_at"` CompletedAt time.Time `json:"completed_at"` ScriptsFound int `json:"scripts_found"` ScriptsAnalyzed int `json:"scripts_analyzed"` BundleTypes map[string]int `json:"bundle_types"` Dependencies []*Dependency `json:"dependencies"` Vulnerabilities []*Vulnerability `json:"vulnerabilities"` Metadata map[string]interface{} `json:"metadata,omitempty"` }
ScanResult represents the result of scanning a website for JavaScript
func NewScanResult ¶
func NewScanResult(url string) *ScanResult
NewScanResult creates a new scan result
func (*ScanResult) AddDependency ¶
func (r *ScanResult) AddDependency(name, version string)
AddDependency adds a dependency to the scan result
func (*ScanResult) AddVulnerability ¶
func (r *ScanResult) AddVulnerability(vuln *Vulnerability)
AddVulnerability adds a vulnerability to the scan result
func (*ScanResult) MarkComplete ¶
func (r *ScanResult) MarkComplete()
MarkComplete marks the scan as complete
type ScanStatus ¶
type ScanStatus string
ScanStatus represents the status of a scan
const ( ScanStatusPending ScanStatus = "pending" ScanStatusRunning ScanStatus = "running" ScanStatusCompleted ScanStatus = "completed" ScanStatusFailed ScanStatus = "failed" ScanStatusCancelled ScanStatus = "cancelled" )
Scan status constants
type SecurityReport ¶
type SecurityReport struct { // ID is the unique identifier of the report ID string `json:"id"` // TargetURL is the URL of the target application TargetURL string `json:"target_url"` // Findings contains security findings Findings []*Finding `json:"findings"` // Vulnerabilities is the list of discovered vulnerabilities Vulnerabilities []*SecurityVulnerability `json:"vulnerabilities"` // Summary is the summary of the report Summary *SecurityReportSummary `json:"summary"` // CreatedAt is the time when the report was created CreatedAt time.Time `json:"created_at"` }
SecurityReport represents a detailed security report for a JavaScript application
type SecurityReportSummary ¶
type SecurityReportSummary struct { // TotalFindings is the total number of findings TotalFindings int `json:"total_findings"` // TotalVulnerabilities is the total number of vulnerabilities TotalVulnerabilities int `json:"total_vulnerabilities"` // CriticalCount is the number of critical severity findings CriticalCount int `json:"critical_count"` // HighCount is the number of high severity findings HighCount int `json:"high_count"` // MediumCount is the number of medium severity findings MediumCount int `json:"medium_count"` // LowCount is the number of low severity findings LowCount int `json:"low_count"` // InfoCount is the number of informational findings InfoCount int `json:"info_count"` // Score is the overall security score (0-100) Score float64 `json:"score"` }
SecurityReportSummary represents a summary of a security report
type SecurityVulnerability ¶
type SecurityVulnerability struct { // ID is the unique identifier of the vulnerability ID string `json:"id"` // Name is the name of the vulnerability Name string `json:"name"` // Description is the description of the vulnerability Description string `json:"description"` // Severity is the severity of the vulnerability Severity Severity `json:"severity"` // CVEID is the CVE ID of the vulnerability if available CVEID string `json:"cve_id,omitempty"` // Package is the name of the package with the vulnerability Package string `json:"package"` // Version is the version of the package with the vulnerability Version string `json:"version"` // AffectedVersions is the range of affected versions AffectedVersions string `json:"affected_versions"` // FixedVersion is the version that fixes the vulnerability FixedVersion string `json:"fixed_version,omitempty"` // References contains URLs to references about the vulnerability References []string `json:"references,omitempty"` // DiscoveredAt is the time when the vulnerability was discovered DiscoveredAt time.Time `json:"discovered_at"` }
SecurityVulnerability represents a security vulnerability in a JavaScript application It's separate from the Finding type but can be linked to findings
func NewSecurityVulnerability ¶
func NewSecurityVulnerability(name string, packageName string, version string, severity Severity) *SecurityVulnerability
NewSecurityVulnerability creates a new security vulnerability
type Severity ¶
type Severity string
Severity represents the severity level of a finding
const ( // SeverityInfo represents an informational finding SeverityInfo Severity = "info" // SeverityLow represents a low severity finding SeverityLow Severity = "low" // SeverityMedium represents a medium severity finding SeverityMedium Severity = "medium" // SeverityHigh represents a high severity finding SeverityHigh Severity = "high" // SeverityCritical represents a critical severity finding SeverityCritical Severity = "critical" )
type Target ¶
type Target struct { // URL is the base URL of the target URL string `json:"url"` ParsedURL *url.URL `json:"-"` // Domain is the domain of the target Domain string `json:"domain"` // HTML contains the main HTML content of the page HTML string `json:"html,omitempty"` // Paths contains all discovered paths Paths []string `json:"paths,omitempty"` // URLs contains all discovered URLs URLs []string `json:"urls,omitempty"` // Scripts contains all discovered JavaScript files Scripts []string `json:"scripts,omitempty"` // Styles contains all discovered CSS files Styles []string `json:"styles,omitempty"` // APIs contains all discovered API endpoints APIs []string `json:"apis,omitempty"` // Technologies contains detected technologies Technologies []string `json:"technologies,omitempty"` // Frameworks contains detected frameworks Frameworks []FrameworkInfo `json:"frameworks,omitempty"` // Headers contains response headers Headers map[string]string `json:"headers,omitempty"` // Cookies contains cookies Cookies map[string]string `json:"cookies,omitempty"` // FirstSeen is when the target was first seen FirstSeen time.Time `json:"first_seen"` // LastSeen is when the target was last seen LastSeen time.Time `json:"last_seen"` Visited map[string]bool `json:"-"` VisitQueue []string `json:"-"` }
Target represents a target application to scan
func (*Target) AddFramework ¶
func (t *Target) AddFramework(framework FrameworkInfo)
AddFramework adds a framework to the target
func (*Target) AddTechnology ¶
AddTechnology adds a technology to the target
func (*Target) AddToQueue ¶
AddToQueue adds a URL to the visit queue
func (*Target) GetNextURL ¶
GetNextURL gets the next URL from the queue
func (*Target) MarkVisited ¶
MarkVisited marks a URL as visited
func (*Target) ScriptCount ¶
ScriptCount returns the number of scripts
func (*Target) StyleCount ¶
StyleCount returns the number of stylesheets
func (*Target) UpdateLastSeen ¶
func (t *Target) UpdateLastSeen()
UpdateLastSeen updates the last seen timestamp
type Vulnerability ¶
type Vulnerability struct { ID string `json:"id,omitempty"` Type string `json:"type"` Severity string `json:"severity"` Description string `json:"description,omitempty"` Location string `json:"location,omitempty"` References []string `json:"references,omitempty"` CVEID string `json:"cve_id,omitempty"` Fix string `json:"fix,omitempty"` }
Vulnerability represents a security vulnerability