Documentation
¶
Overview ¶
File: host.go
File: scan_source.go
File: vulnerability.go
Index ¶
- type Agent
- type BaseMetricV2
- type BaseMetricV3
- type CPE
- type CVEData
- type CVEDataMeta
- type CVEItem
- type CVSSV2
- type CVSSV3
- type Configurations
- type CpeMatch
- type Description
- type Host
- type HostPort
- type HostVulnerability
- type HostWithSources
- type Impact
- type JSONB
- type Node
- type Note
- type Port
- type PortWithSource
- type ProblemType
- type ProblemTypeData
- type Reference
- type RiskScore
- type ScanHistoryEntry
- type ScanSource
- type Service
- type SourceAttribution
- type SourceCoverageStats
- type User
- type Vulnerability
- type VulnerabilitySourceInfo
- type VulnerabilityWithSource
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BaseMetricV2 ¶
type BaseMetricV2 struct {
ID uint `gorm:"primaryKey"`
CVSSV2 sirius.CVSSV2 `json:"cvssV2" gorm:"embedded"`
Severity string `json:"severity"`
ExploitabilityScore float64 `json:"exploitabilityScore"`
ImpactScore float64 `json:"impactScore"`
AcInsufInfo bool `json:"acInsufInfo"`
ObtainAllPrivilege bool `json:"obtainAllPrivilege"`
ObtainUserPrivilege bool `json:"obtainUserPrivilege"`
ObtainOtherPrivilege bool `json:"obtainOtherPrivilege"`
UserInteractionRequired bool `json:"userInteractionRequired"`
}
type BaseMetricV3 ¶
type CVEDataMeta ¶
type CVEItem ¶
type CVEItem struct {
gorm.Model
CVEDataType string
CVEDataFormat string
DataVersion string
DataMeta CVEDataMeta
ProblemType ProblemType
References []*Reference `gorm:"foreignKey:CVEItemID"`
Descriptions []*Description `gorm:"foreignKey:CVEItemID"`
Configurations Configurations
Impact Impact
PublishedDate string
LastModifiedDate string
CVEDataID uint
}
type CVSSV2 ¶
type CVSSV2 struct {
Version string `json:"version"`
VectorString string `json:"vectorString"`
AccessVector string `json:"accessVector"`
AccessComplexity string `json:"accessComplexity"`
Authentication string `json:"authentication"`
ConfidentialityImpact string `json:"confidentialityImpact"`
IntegrityImpact string `json:"integrityImpact"`
AvailabilityImpact string `json:"availabilityImpact"`
BaseScore float64 `json:"baseScore"`
Exploitability string `json:"exploitability"`
RemediationLevel string `json:"remediationLevel"`
ReportConfidence string `json:"reportConfidence"`
TemporalScore float64 `json:"temporalScore"`
CollateralDamagePotential string `json:"collateralDamagePotential"`
TargetDistribution string `json:"targetDistribution"`
ConfidentialityRequirement string `json:"confidentialityRequirement"`
IntegrityRequirement string `json:"integrityRequirement"`
AvailabilityRequirement string `json:"availabilityRequirement"`
EnvironmentalScore float64 `json:"environmentalScore"`
}
type CVSSV3 ¶
type CVSSV3 struct {
Version string `json:"version"`
VectorString string `json:"vectorString"`
AttackVector string `json:"attackVector"`
AttackComplexity string `json:"attackComplexity"`
PrivilegesRequired string `json:"privilegesRequired"`
UserInteraction string `json:"userInteraction"`
Scope string `json:"scope"`
ConfidentialityImpact string `json:"confidentialityImpact"`
IntegrityImpact string `json:"integrityImpact"`
AvailabilityImpact string `json:"availabilityImpact"`
BaseScore float64 `json:"baseScore"`
BaseSeverity string `json:"baseSeverity"`
ExploitCodeMaturity string `json:"exploitCodeMaturity"`
RemediationLevel string `json:"remediationLevel"`
ReportConfidence string `json:"reportConfidence"`
TemporalScore float64 `json:"temporalScore"`
TemporalSeverity string `json:"temporalSeverity"`
ConfidentialityRequirement string `json:"confidentialityRequirement"`
IntegrityRequirement string `json:"integrityRequirement"`
AvailabilityRequirement string `json:"availabilityRequirement"`
ModifiedAttackVector string `json:"modifiedAttackVector"`
ModifiedAttackComplexity string `json:"modifiedAttackComplexity"`
ModifiedPrivilegesRequired string `json:"modifiedPrivilegesRequired"`
ModifiedUserInteraction string `json:"modifiedUserInteraction"`
ModifiedScope string `json:"modifiedScope"`
ModifiedConfidentialityImpact string `json:"modifiedConfidentialityImpact"`
ModifiedIntegrityImpact string `json:"modifiedIntegrityImpact"`
ModifiedAvailabilityImpact string `json:"modifiedAvailabilityImpact"`
EnvironmentalScore float64 `json:"environmentalScore"`
EnvironmentalSeverity string `json:"environmentalSeverity"`
}
type Configurations ¶
type Description ¶
type Host ¶
type Host struct {
gorm.Model
HID string
OS string
OSVersion string
IP string `gorm:"uniqueIndex"`
Hostname string
Ports []Port `gorm:"many2many:host_ports"`
Services []Service
Vulnerabilities []Vulnerability `gorm:"many2many:host_vulnerabilities"`
HostVulnerabilities []HostVulnerability `gorm:"foreignKey:HostID"`
HostPorts []HostPort `gorm:"foreignKey:HostID"`
CPEs []CPE
Users []User
Notes []Note
AgentID uint
// SBOM and Fingerprinting JSONB fields (Migration 004) - Fixed with custom JSONB type
SoftwareInventory JSONB `gorm:"type:jsonb;column:software_inventory;default:'{}'" json:"software_inventory,omitempty"`
SystemFingerprint JSONB `gorm:"type:jsonb;column:system_fingerprint;default:'{}'" json:"system_fingerprint,omitempty"`
AgentMetadata JSONB `gorm:"type:jsonb;column:agent_metadata;default:'{}'" json:"agent_metadata,omitempty"`
}
type HostPort ¶ added in v0.0.4
type HostPort struct {
HostID uint `json:"host_id" gorm:"primaryKey"`
PortID uint `json:"port_id" gorm:"primaryKey"`
Source string `json:"source"` // "nmap", "agent", "manual", "rustscan"
SourceVersion string `json:"source_version"` // Scanner version/build
FirstSeen time.Time `json:"first_seen"` // When first detected
LastSeen time.Time `json:"last_seen"` // When last confirmed
Status string `json:"status" gorm:"default:active"` // "active", "resolved", "false_positive"
Notes string `json:"notes,omitempty"` // Additional context
}
Enhanced HostPort junction table with source attribution
type HostVulnerability ¶
type HostVulnerability struct {
HostID uint `json:"host_id" gorm:"primaryKey"`
VulnerabilityID uint `json:"vulnerability_id" gorm:"primaryKey"` // Foreign Key to Vulnerability from models/vulnerability
Source string `json:"source" gorm:"primaryKey"` // "nmap", "agent", "manual", "rustscan"
SourceVersion string `json:"source_version"` // Scanner version/build
FirstSeen time.Time `json:"first_seen"` // When first detected
LastSeen time.Time `json:"last_seen"` // When last confirmed
Status string `json:"status" gorm:"default:active"` // "active", "resolved", "false_positive"
Confidence float64 `json:"confidence" gorm:"default:1.0"` // 0.0-1.0 confidence score
Port *int `json:"port,omitempty"` // Specific port if applicable
ServiceInfo string `json:"service_info,omitempty"` // Service details
Notes string `json:"notes,omitempty"` // Additional context
}
Enhanced HostVulnerability junction table with source attribution
type HostWithSources ¶ added in v0.0.6
type HostWithSources struct {
Host
VulnerabilitySources []VulnerabilityWithSource `json:"vulnerability_sources"`
PortSources []PortWithSource `json:"port_sources"`
Sources []string `json:"sources"` // List of all sources that scanned this host
}
HostWithSources represents a host with source-attributed data
type Impact ¶
type Impact struct {
gorm.Model
BaseMetricV2 BaseMetricV2 `gorm:"embedded"`
CVEItemID uint
}
type JSONB ¶ added in v0.0.6
type JSONB map[string]interface{}
JSONB represents a JSONB field that can properly scan from PostgreSQL
type Port ¶
type PortWithSource ¶ added in v0.0.6
type PortWithSource struct {
Port
SourceAttribution
}
PortWithSource represents a port with its source attribution
type ProblemType ¶
type ProblemType struct {
gorm.Model
ProblemTypeData []*ProblemTypeData `gorm:"foreignKey:ProblemTypeID"`
CVEItemID uint
}
type ProblemTypeData ¶
type ProblemTypeData struct {
gorm.Model
ProblemTypeID uint
Descriptions []*Description `gorm:"foreignKey:ProblemTypeDataID"`
}
type RiskScore ¶
type RiskScore struct {
CVSSV3ID uint
CVSSV3 BaseMetricV3 `gorm:"embedded;embeddedPrefix:cvssv3_"`
CVSSV2ID uint
CVSSV2 BaseMetricV2 `gorm:"embedded;embeddedPrefix:cvssv2_"`
}
type ScanHistoryEntry ¶ added in v0.0.6
type ScanHistoryEntry struct {
gorm.Model // Provides ID, CreatedAt, UpdatedAt, DeletedAt
HostID uint `json:"host_id"`
Source string `json:"source"`
SourceVersion string `json:"source_version"`
ScanTime time.Time `json:"scan_time"`
FindingsCount int `json:"findings_count"`
ScanConfig string `json:"scan_config,omitempty"`
Notes string `json:"notes,omitempty"`
}
ScanHistory represents the timeline of scans for a host
type ScanSource ¶ added in v0.0.6
type ScanSource struct {
Name string `json:"name"` // "nmap", "agent", "rustscan", "manual"
Version string `json:"version"` // Tool version
Config string `json:"config"` // Scan configuration used
}
ScanSource represents the metadata about a scan source
type SourceAttribution ¶ added in v0.0.6
type SourceAttribution struct {
Source string `json:"source"`
SourceVersion string `json:"source_version"`
FirstSeen time.Time `json:"first_seen"`
LastSeen time.Time `json:"last_seen"`
Status string `json:"status"`
Confidence float64 `json:"confidence"`
Notes string `json:"notes,omitempty"`
}
SourceAttribution contains source and temporal information for any finding
type SourceCoverageStats ¶ added in v0.0.6
type SourceCoverageStats struct {
Source string `json:"source"`
HostsScanned int `json:"hosts_scanned"`
VulnsFound int `json:"vulnerabilities_found"`
PortsDiscovered int `json:"ports_discovered"`
LastScanTime time.Time `json:"last_scan_time"`
AverageConfidence float64 `json:"average_confidence"`
}
SourceCoverage represents statistics about source coverage
type Vulnerability ¶
type Vulnerability struct {
gorm.Model
VID string `gorm:"column:v_id"`
// Description []Description `gorm:"foreignKey:VulnerabilityID"`
Description string
Title string
Hosts []Host `gorm:"many2many:host_vulnerabilities"`
HostVulnerabilities []HostVulnerability `gorm:"foreignKey:VulnerabilityID"`
RiskScore float64
}
type VulnerabilitySourceInfo ¶ added in v0.0.6
type VulnerabilitySourceInfo struct {
Source string `json:"source"`
SourceVersion string `json:"source_version"`
AffectedHosts int `json:"affected_hosts"`
FirstDetected time.Time `json:"first_detected"`
LastConfirmed time.Time `json:"last_confirmed"`
AverageConfidence float64 `json:"average_confidence"`
TotalReports int `json:"total_reports"`
}
VulnerabilitySourceInfo represents information about sources that reported a vulnerability
type VulnerabilityWithSource ¶ added in v0.0.6
type VulnerabilityWithSource struct {
Vulnerability
SourceAttribution
Port *int `json:"port,omitempty"`
ServiceInfo string `json:"service_info,omitempty"`
}
VulnerabilityWithSource represents a vulnerability with its source attribution