FLOW ALGEBRA
Vulnerability Ontology
Kireth Semantic Research Archive
PAGE:
https://kirethresearch.org/booksai-core/ontologies/computing-ontologies/cybersecurity/vulnerability-ontology.html
AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)
FLOW "VulnerabilityOntology" v4.0
# ---------- DOMAIN ----------
DOMAIN := ComputingOntology
SUBDOMAIN := Cybersecurity
ONTOLOGY := VulnerabilityOntology
# ---------- PRIMARY ENTITY ----------
ENTITY Vulnerability {
definition:
"A weakness, flaw, exposure or security deficiency in a system,
component, configuration, process or control that may be exploited
or otherwise contribute to compromise of a protected asset.";
objectives_of_analysis: [
Discovery,
Classification,
Assessment,
Prioritisation,
Mitigation,
Verification
];
}
# ---------- CORE ENTITIES ----------
VulnerabilityType := {
SoftwareVulnerability,
ConfigurationVulnerability,
AuthenticationVulnerability,
AuthorisationVulnerability,
CryptographicVulnerability,
NetworkVulnerability,
DesignVulnerability,
ProcessVulnerability
};
AffectedAsset := {
Application,
OperatingSystem,
Library,
Service,
Device,
Endpoint,
Server,
Network,
CloudResource,
SecurityControl
};
VulnerabilityState := {
Unknown,
Discovered,
Confirmed,
Assessed,
Prioritised,
Mitigated,
Remediated,
Accepted,
Closed
};
# ---------- FUNDAMENTAL RELATIONSHIPS ----------
Vulnerability EXISTS_IN AffectedAsset;
Threat MAY_EXPLOIT Vulnerability;
Exploit TARGETS Vulnerability;
Vulnerability MAY_ENABLE SecurityImpact;
SecurityControl MITIGATES Vulnerability;
Patch MAY_REMEDIATE SoftwareVulnerability;
SecureConfiguration MAY_REMEDIATE ConfigurationVulnerability;
Vulnerability CONTRIBUTES_TO Risk;
Risk APPLIES_TO AffectedAsset;
# ---------- VULNERABILITY LIFECYCLE ----------
VulnerabilityLifecycle :=
Discover
-> Validate
-> Classify
-> Assess
-> Prioritise
-> Treat
-> Verify
-> Monitor
-> Close;
Discover(Vulnerability) ->
VulnerabilityState := Discovered;
Validate(Vulnerability) ->
VulnerabilityState := Confirmed;
# ---------- DISCOVERY ----------
DiscoveryMethod := {
SecurityTesting,
VulnerabilityScanning,
CodeReview,
PenetrationTesting,
ConfigurationReview,
ThreatIntelligence,
VendorAdvisory,
Research
};
DiscoveryMethod MAY_IDENTIFY Vulnerability;
DiscoveryEvidence MAY_INCLUDE {
ScannerFinding,
TestResult,
CodeEvidence,
ConfigurationEvidence,
AdvisoryReference
};
# ---------- VALIDATION ----------
Validation :=
ConfirmAffectedAsset
+ ConfirmWeakness
+ ConfirmConditions
+ RemoveFalsePositive;
IF Finding HAS_INSUFFICIENT_EVIDENCE
THEN VulnerabilityStatus := NeedsReview;
IF Finding VALIDATED
THEN VulnerabilityState := Confirmed;
# ---------- CLASSIFICATION ----------
VulnerabilityClassification :=
f(
WeaknessType,
AffectedComponent,
AttackVector,
RequiredConditions,
SecurityImpact
);
SoftwareVulnerability MAY_INCLUDE {
InputValidationWeakness,
MemorySafetyWeakness,
LogicWeakness,
DependencyWeakness
};
ConfigurationVulnerability MAY_INCLUDE {
InsecureDefault,
ExcessiveExposure,
WeakPermission,
UnnecessaryService,
IncorrectSecuritySetting
};
# ---------- EXPLOITABILITY ----------
Exploitability :=
f(
Reachability,
AttackComplexity,
RequiredPrivilege,
RequiredInteraction,
ExistingExploitConditions
);
IF Vulnerability NOT_REACHABLE
THEN PracticalExploitability := DECREASE;
IF ExploitConditions EASY
THEN PracticalExploitability := INCREASE;
# ---------- SECURITY IMPACT ----------
SecurityImpact := {
ConfidentialityImpact,
IntegrityImpact,
AvailabilityImpact,
AuthenticityImpact,
PrivilegeImpact
};
SuccessfulExploitation MAY_CAUSE SecurityImpact;
IF Vulnerability ENABLES UnauthorisedDisclosure
THEN ConfidentialityImpact := true;
IF Vulnerability ENABLES UnauthorisedModification
THEN IntegrityImpact := true;
IF Vulnerability ENABLES ServiceDisruption
THEN AvailabilityImpact := true;
# ---------- RISK ----------
VulnerabilityRisk :=
f(
AssetCriticality,
Exploitability,
ThreatLikelihood,
SecurityImpact,
ExistingControls
);
InherentVulnerabilityRisk :=
VulnerabilityRisk BEFORE Mitigation;
ResidualVulnerabilityRisk :=
VulnerabilityRisk AFTER Mitigation;
IF EffectiveMitigation APPLIED
THEN ResidualVulnerabilityRisk := DECREASE;
# ---------- PRIORITISATION ----------
Priority :=
f(
Severity,
Exploitability,
AssetCriticality,
Exposure,
ThreatEvidence,
BusinessImpact
);
IF Vulnerability AFFECTS CriticalAsset
THEN Priority := INCREASE;
IF ActiveExploitationEvidence EXISTS
THEN Priority := INCREASE;
IF Vulnerability InternetReachable
THEN ExposurePriority := INCREASE;
# ---------- TREATMENT ----------
VulnerabilityTreatment := {
Remediate,
Mitigate,
Avoid,
Accept,
Transfer
};
Remediation MAY_INCLUDE {
Patch,
Upgrade,
CodeChange,
ConfigurationChange,
ComponentReplacement
};
Mitigation MAY_INCLUDE {
AccessRestriction,
NetworkSegmentation,
CompensatingControl,
FeatureDisablement,
Monitoring
};
# ---------- PATCHING ----------
Patch ADDRESSES Vulnerability;
PatchLifecycle :=
IdentifyPatch
-> ValidateApplicability
-> TestPatch
-> DeployPatch
-> VerifyPatch
-> Monitor;
IF PatchSuccessfullyRemovesWeakness
THEN VulnerabilityState := Remediated;
# ---------- COMPENSATING CONTROL ----------
CompensatingControl REDUCES ExploitabilityOrImpact;
CompensatingControl DOES_NOT_NECESSARILY RemoveVulnerability;
IF Vulnerability REMAINS
AND CompensatingControl EFFECTIVE
THEN VulnerabilityState := Mitigated;
# ---------- VERIFICATION ----------
VerificationMethod := {
Rescan,
Retest,
CodeReview,
ConfigurationReview,
FunctionalValidation
};
VerificationMethod CONFIRMS TreatmentOutcome;
IF Verification PASSES
AND WeaknessNoLongerPresent
THEN VulnerabilityState := Closed;
IF Verification FAILS
THEN VulnerabilityState := Confirmed;
# ---------- VULNERABILITY IDENTIFIERS ----------
VulnerabilityIdentifier IDENTIFIES VulnerabilityRecord;
VulnerabilityRecord MAY_CONTAIN {
Identifier,
Description,
AffectedProduct,
AffectedVersion,
Severity,
References,
Remediation
};
Identifier DOES_NOT_BY_ITSELF DetermineRisk;
# ---------- DEPENDENCY VULNERABILITY ----------
SoftwareComponent DEPENDS_ON Dependency;
IF Dependency HAS Vulnerability
AND VulnerableDependencyVersion USED
THEN ParentSoftware MAY_BE Affected;
DependencyUpdate MAY_REMEDIATE DependencyVulnerability;
# ---------- ZERO-DAY CONCEPT ----------
ZeroDayVulnerability :=
Vulnerability WITH LimitedOrNoAvailableVendorRemediation
AT RelevantTime;
ZeroDayStatus IS_TIME_DEPENDENT true;
# ---------- SEMANTIC REASONING ----------
IF Weakness EXISTS_IN Asset
AND Threat CAN_EXPLOIT Weakness
THEN VulnerabilityRisk EXISTS;
IF Vulnerability CONFIRMED
AND ExploitAvailable
THEN Exploitability := INCREASE;
IF Vulnerability AFFECTS InternetFacingAsset
THEN Exposure := INCREASE;
IF Vulnerability AFFECTS Authentication
THEN IdentityRisk := INCREASE;
IF Vulnerability AFFECTS Authorisation
THEN AccessControlRisk := INCREASE;
IF Vulnerability MITIGATED_BY EffectiveControl
THEN ResidualRisk := DECREASE;
IF Vulnerability PATCHED
AND Verification PASSES
THEN VulnerabilityState := Closed;
# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
"vulnerability" ~= "security weakness";
"security flaw" ~= "vulnerability" WHEN context == cybersecurity;
"software flaw" ~= "software vulnerability";
"misconfiguration" ~= "configuration vulnerability" WHEN security_relevant;
"vulnerability remediation" ~= "vulnerability correction";
"compensating control" ~= "alternative mitigating control";
"vulnerability scan" ~= "security vulnerability scan";
"vulnerability assessment" ~= "security weakness assessment";
}
# ---------- QUERY FLOW ----------
QUERY(q) ->
NORMALISE(q) ->
IDENTIFY_VULNERABILITY(q) ->
IDENTIFY_AFFECTED_ASSET(q) ->
IDENTIFY_EXPLOITABILITY(q) ->
IDENTIFY_SECURITY_IMPACT(q) ->
IDENTIFY_TREATMENT(q) ->
MAP_TO_ONTOLOGY(q) ->
APPLY_REASONING(q) ->
SCORE_CONFIDENCE(q) ->
RETURN_RELEVANT_KNOWLEDGE;
# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
weighted_mean(
source_reliability,
validation_evidence,
technical_consistency,
semantic_consistency,
contextual_relevance
);
CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;
# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
primary_entity: Vulnerability;
ontology: VulnerabilityOntology;
parse_entities: true;
parse_relationships: true;
preserve_relationship_direction: true;
resolve_semantic_equivalence: true;
execute_reasoning_rules: true;
apply_confidence_weighting: true;
preserve_provenance: true;
}
# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
new_vulnerability:
validate
-> classify
-> identify_affected_assets
-> assess_exploitability
-> assess_impact
-> prioritise
-> integrate;
new_mitigation:
identify_vulnerability
-> classify_control
-> evaluate_effectiveness
-> update_residual_risk
-> integrate;
new_evidence:
associate_vulnerability
-> update_exploitability
-> update_priority
-> recompute_confidence
-> integrate;
remediation_revision:
update_treatment_state
-> verify_outcome
-> recompute_risk
-> regenerate_flow_hash;
conflict:
preserve_provenance
-> compare_evidence
-> adjust_confidence
-> flag_review;
}
# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
DOMAIN
+ SUBDOMAIN
+ ONTOLOGY
+ VulnerabilityType
+ AffectedAsset
+ VulnerabilityState
+ VulnerabilityLifecycle
+ SecurityImpact
+ VulnerabilityTreatment
+ RELATIONSHIPS
+ SEMANTIC_REASONING
+ SEMANTIC_EQUIVALENCE
+ UPDATE_MODEL;
FLOW_HASH :=
HASH(FLOW_HASH_INPUT);
# ---------- TERMINAL ----------
VulnerabilityOntology
-> DiscoverWeakness
-> ValidateVulnerability
-> IdentifyAffectedAssets
-> ClassifyWeakness
-> AssessExploitability
-> AssessSecurityImpact
-> DetermineRisk
-> PrioritiseTreatment
-> ApplyRemediationOrMitigation
-> VerifyTreatment
-> MonitorResidualRisk
-> CloseValidatedRemediation;
END FLOW
Download Code
Copy to Clipboard