models

package
v0.0.6 Latest Latest
Warning

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

Go to latest
Published: Oct 1, 2025 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

File: host.go

File: scan_source.go

File: vulnerability.go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Agent

type Agent struct {
	gorm.Model
	Name string
}

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 BaseMetricV3 struct {
	ID                  uint          `gorm:"primaryKey"`
	CVSSV3              sirius.CVSSV3 `json:"cvssV3" gorm:"embedded"`
	ExploitabilityScore float64       `json:"exploitabilityScore"`
	ImpactScore         float64       `json:"impactScore"`
}

type CPE

type CPE struct {
	gorm.Model
	Name   string
	HostID uint
}

type CVEData

type CVEData struct {
	gorm.Model
	CVEDataType         string
	CVEDataFormat       string
	CVEDataVersion      string
	CVEDataNumberOfCVEs string
	CVEDataTimestamp    string
	CVEItems            []*CVEItem `gorm:"foreignKey:CVEDataID"`
}

type CVEDataMeta

type CVEDataMeta struct {
	gorm.Model
	ID        string `gorm:"uniqueIndex"`
	Assigner  string
	CVEItemID uint // Foreign key to link back to CVEItem
}

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 Configurations struct {
	gorm.Model
	Nodes     []*Node `gorm:"foreignKey:ConfigurationID"`
	CVEItemID uint
}

type CpeMatch

type CpeMatch struct {
	gorm.Model
	Vulnerable bool
	Cpe23Uri   string
	NodeID     uint
}

type Description

type Description struct {
	gorm.Model
	Lang              string
	Value             string
	ProblemTypeDataID uint
	CVEItemID         uint
	VulnerabilityID   uint
}

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

func (*JSONB) Scan added in v0.0.6

func (j *JSONB) Scan(value interface{}) error

Scan implements the sql.Scanner interface for database reads

func (JSONB) Value added in v0.0.6

func (j JSONB) Value() (driver.Value, error)

Value implements the driver.Valuer interface for database writes

type Node

type Node struct {
	gorm.Model
	Operator        string
	CpeMatch        []*CpeMatch `gorm:"foreignKey:NodeID"`
	ConfigurationID uint
}

type Note

type Note struct {
	gorm.Model
	Content string
	HostID  uint
}

type Port

type Port struct {
	gorm.Model
	ID        int
	Protocol  string
	State     string
	Hosts     []Host     `gorm:"many2many:host_ports"`
	HostPorts []HostPort `gorm:"foreignKey:PortID"`
}

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 Reference

type Reference struct {
	gorm.Model
	URL       string
	Name      string
	RefSource string
	CVEItemID uint
}

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 {
	ID            uint      `json:"id" gorm:"primaryKey"`
	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"`
	CreatedAt     time.Time `json:"created_at"`
}

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 Service

type Service struct {
	gorm.Model
	Name   string
	HostID uint
}

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 User

type User struct {
	gorm.Model
	Name   string
	HostID uint
}

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

Jump to

Keyboard shortcuts

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