Skip to main content

OCSF Schema Reference

Huntbase uses the Open Cybersecurity Schema Framework (OCSF) as its canonical data model for normalizing, storing, and querying security events across all connected data sources. This page documents how OCSF is applied in Huntbase, the supported event categories and classes, and how events are decomposed into the Huntbase graph structure.

What is OCSF?

OCSF is an open-source, vendor-agnostic schema framework for cybersecurity event data. It defines a standard set of event categories, classes, and attributes that allow security tools to produce and consume event data in a consistent format, regardless of the originating product.

Key principles of OCSF:

  • Vendor-neutral -- Events from any product (CrowdStrike, AWS CloudTrail, Okta, Microsoft Defender, etc.) are mapped to the same schema
  • Hierarchical -- Events are organized into categories, classes, and activity types
  • Extensible -- Custom attributes and profiles can be added without breaking the base schema
  • Observable-oriented -- First-class support for security observables (IPs, domains, hashes, users)

Huntbase implements OCSF v1.3. For the full upstream specification, see schema.ocsf.io.

How Huntbase uses OCSF

Event normalization

When Huntbase ingests data from a connected product, the raw events are mapped to the corresponding OCSF event class through normalization mappings. Each connection has a set of mappings that translate vendor-specific field names and values into OCSF-compliant attributes.

Raw event (vendor format)  -->  Normalization mapping  -->  OCSF event  -->  Surface

For example, an Okta user.session.start event and an AWS CloudTrail ConsoleLogin event both normalize to the OCSF Authentication class (3002), making them queryable through the same authentication surface with the same field names.

Insights and detection

Huntbase Insights (security findings) use OCSF event classes to:

  • Classify findings by category and severity using OCSF's severity_id and type_uid fields
  • Correlate events across data sources using shared OCSF attributes (e.g., user.name, src_endpoint.ip)
  • Map to MITRE ATT&CK through OCSF's attacks array, which links events to tactics and techniques
  • Extract entities by reading OCSF observable fields (IPs, domains, hashes, users) from normalized events

Surfaces

Surfaces in Huntbase are queryable views built on top of OCSF event classes. Each surface corresponds to one or more OCSF classes and exposes the OCSF attributes as columns. See Query languages for how to query this data, and use the schema tree in the query workspace to browse the datasets and columns available to you.

Supported event categories and classes

Huntbase supports the following OCSF event categories and classes. Each class maps to a Huntbase surface.

Identity and Access Management (Category 3)

Class IDClass NameHuntbase SurfaceDescription
3001Account ChangeauthenticationAccount creation, modification, deletion
3002AuthenticationauthenticationLogin, logout, authentication attempts
3003Authorize SessionauthenticationSession authorization and token grants
3004Entity ManagementauthenticationUser and group management events

System Activity (Category 1)

Class IDClass NameHuntbase SurfaceDescription
1001File System Activityfile_activityFile create, read, update, delete operations
1003Kernel Extension Activityprocess_activityKernel module load and unload
1004Kernel Activityprocess_activityKernel-level operations
1007Process Activityprocess_activityProcess start, stop, injection, and access
1006Module Activityprocess_activityLibrary and module load events

Network Activity (Category 4)

Class IDClass NameHuntbase SurfaceDescription
4001Network Activitynetwork_activityTCP/UDP connection events
4002HTTP Activityhttp_activityHTTP request and response events
4003DNS Activitydns_activityDNS query and response events
4004DHCP Activitynetwork_activityDHCP lease events
4005RDP Activitynetwork_activityRemote desktop protocol events
4008Network File Activityfile_activitySMB/NFS file access over the network
4009Email Activityemail_activityEmail send, receive, and delivery events
4011SSH Activitynetwork_activitySSH connection and authentication events

Application Activity (Category 6)

Class IDClass NameHuntbase SurfaceDescription
6001Web Resource Accesshttp_activityWeb application resource access
6002Application Lifecyclecloud_apiApplication start, stop, install, remove
6003API Activitycloud_apiCloud and SaaS API calls

Security Findings (Category 2)

Class IDClass NameHuntbase SurfaceDescription
2001Security Findingsecurity_findingAlerts, detections, and vulnerability findings
2002Vulnerability Findingsecurity_findingVulnerability scan results

Discovery (Category 5)

Class IDClass NameHuntbase SurfaceDescription
5001Device Inventory Infocloud_apiHost and device inventory
5002Device Config Statecloud_apiConfiguration and compliance state
5019Service Querycloud_apiCloud resource and service queries

OCSF base event attributes

Every OCSF event in Huntbase includes the following base attributes, regardless of class:

AttributeTypeDescription
activity_idintegerActivity type identifier within the class
activity_namestringHuman-readable activity name (e.g., "Logon", "Create")
category_uidintegerOCSF category identifier
class_uidintegerOCSF class identifier
type_uidintegerUnique event type = class_uid * 100 + activity_id
timetimestampEvent timestamp in UTC
severity_idintegerSeverity (0=Unknown, 1=Informational, 2=Low, 3=Medium, 4=High, 5=Critical, 6=Fatal)
status_idintegerOutcome status (0=Unknown, 1=Success, 2=Failure, 99=Other)
messagestringEvent description
metadataobjectSource product, version, and processing metadata
observablesarrayExtracted security observables (IPs, domains, hashes, users)

The metadata object

{
"metadata": {
"product": {
"name": "CrowdStrike Falcon",
"vendor_name": "CrowdStrike",
"version": "6.45"
},
"version": "1.3.0",
"uid": "event-unique-id",
"original_time": "2026-02-19T14:32:00Z",
"processed_time": "2026-02-19T14:32:05Z"
}
}

The observables array

Observables are automatically extracted during normalization and used for entity creation in Huntbase:

{
"observables": [
{
"name": "src_endpoint.ip",
"type": "IP Address",
"type_id": 2,
"value": "198.51.100.23"
},
{
"name": "user.name",
"type": "User Name",
"type_id": 4,
"value": "jdoe"
}
]
}

Event decomposition and graph structure

Huntbase decomposes OCSF events into a graph of interconnected entities and relationships. This graph structure enables pivoting, correlation, and investigation workflows.

Decomposition process

OCSF Event  -->  Entity extraction  -->  Graph nodes + edges
  1. Entity extraction -- Observables from the event (IPs, users, hosts, files, processes) are extracted and deduplicated as graph nodes
  2. Relationship creation -- Edges are created between entities based on the event context (e.g., "user authenticated to host", "process created file")
  3. Temporal linking -- Events are linked in time order per entity, building an activity timeline

Graph node types

The graph holds more than the objects extracted from events. Alongside event-derived entities it carries vulnerability and threat-intelligence context, so a hunt can pivot from a process to the CVE it exploits or the ATT&CK technique it maps to. Common node types include:

Node TypeSourceExample
User / Accountuser, actor.user, user_accountjdoe, SYSTEM
Device / Endpointdevice, src_endpoint, dst_endpointworkstation-01
Processprocess, parent_processpowershell.exe (pid: 4832)
Filefilepayload.exe, SHA-256 hash
Hashfile.hashes, observablesSHA-256 / MD5 values
Domain / FQDN / Hostnamequery.hostname, dst_endpoint.domainexample.com
IP Addresssrc_endpoint.ip, dst_endpoint.ip198.51.100.23
URL / Emailurl, emailhttps://example.com/x, [email protected]
Observableobservables[] (generic)Any extracted observable not typed above
Indicator (IOC)Threat-intelligence feeds, hunt findingsKnown-bad IP, domain or hash
Vulnerability (CVE)Vulnerability findings, CVE catalogCVE-2024-3094
CWE / CAPEC / CPEVulnerability catalogCWE-79, CAPEC-66, cpe:2.3:a:...
ATT&CK technique / group / software / mitigation / campaignattacks[], ATT&CK knowledge baseT1059.001, G0016, S0002
Malware / Threat actor / CampaignThreat-intelligence contextNamed families and actors
Certificate / Windows registry / Scheduled job / ServiceEvent objectsHKLM\...\Run, svchost
Insight / Finding / Query / HuntHuntbase objects linked to the entities they touchedAn insight, the query run that surfaced a row

Example graph decomposition

Given an OCSF Authentication event where user jdoe logs in from 198.51.100.23 to dc01.corp.local:

[User: jdoe] --authenticated_to--> [Endpoint: dc01.corp.local]
[User: jdoe] --sourced_from--> [IP: 198.51.100.23]
[IP: 198.51.100.23] --connected_to--> [Endpoint: dc01.corp.local]

Each edge carries the event timestamp, type_uid, and severity, so a hunt can follow who touched what, and when.

Data source to OCSF mapping

The table below shows how events from common data sources map to OCSF classes in Huntbase.

Data SourceVendor EventOCSF ClassSurface
CrowdStrike FalconProcessRollup2Process Activity (1007)process_activity
CrowdStrike FalconDnsRequestDNS Activity (4003)dns_activity
CrowdStrike FalconNetworkConnectNetwork Activity (4001)network_activity
AWS CloudTrailConsoleLoginAuthentication (3002)authentication
AWS CloudTrailAssumeRoleAuthorize Session (3003)authentication
AWS CloudTrailRunInstancesAPI Activity (6003)cloud_api
Oktauser.session.startAuthentication (3002)authentication
Oktauser.account.update_passwordAccount Change (3001)authentication
Microsoft DefenderDeviceProcessEventsProcess Activity (1007)process_activity
Microsoft DefenderDeviceNetworkEventsNetwork Activity (4001)network_activity
Microsoft DefenderDeviceFileEventsFile System Activity (1001)file_activity
Google WorkspaceloginAuthentication (3002)authentication
Google WorkspaceadminEntity Management (3004)authentication
SentinelOnethreatSecurity Finding (2001)security_finding
Palo Alto NetworkstrafficNetwork Activity (4001)network_activity
Palo Alto NetworksthreatSecurity Finding (2001)security_finding

Mappings are managed through the Surfaces API. To view the current mappings for a connection, see the API Reference.

Example OCSF events

Authentication event

An OCSF Authentication event as it appears in Huntbase after normalization from an Okta login:

{
"activity_id": 1,
"activity_name": "Logon",
"category_uid": 3,
"class_uid": 3002,
"type_uid": 300201,
"time": "2026-02-19T09:15:32Z",
"severity_id": 1,
"severity": "Informational",
"status_id": 1,
"status": "Success",
"message": "User jdoe successfully logged in from 198.51.100.23",
"user": {
"name": "jdoe",
"email_addr": "[email protected]",
"type_id": 1,
"uid": "00u1a2b3c4d5e6f7g8"
},
"src_endpoint": {
"ip": "198.51.100.23",
"location": {
"country": "US",
"city": "San Francisco"
}
},
"dst_endpoint": {
"hostname": "login.corp.example.com",
"svc_name": "Okta SSO"
},
"auth_protocol_id": 99,
"auth_protocol": "SAML",
"metadata": {
"product": {
"name": "Okta",
"vendor_name": "Okta",
"version": "2024.06.0"
},
"version": "1.3.0"
},
"observables": [
{ "name": "user.name", "type": "User Name", "type_id": 4, "value": "jdoe" },
{ "name": "src_endpoint.ip", "type": "IP Address", "type_id": 2, "value": "198.51.100.23" },
{ "name": "user.email_addr", "type": "Email Address", "type_id": 5, "value": "[email protected]" }
]
}

Process Activity event

A process creation event normalized from CrowdStrike Falcon:

{
"activity_id": 1,
"activity_name": "Launch",
"category_uid": 1,
"class_uid": 1007,
"type_uid": 100701,
"time": "2026-02-19T11:42:08Z",
"severity_id": 3,
"severity": "Medium",
"status_id": 1,
"status": "Success",
"message": "Process powershell.exe launched by explorer.exe",
"actor": {
"user": {
"name": "jdoe",
"uid": "S-1-5-21-1234567890-1234567890-1234567890-1001"
}
},
"process": {
"name": "powershell.exe",
"pid": 4832,
"cmd_line": "powershell.exe -ExecutionPolicy Bypass -File C:\\Temp\\script.ps1",
"file": {
"name": "powershell.exe",
"path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"hashes": [
{ "algorithm": "SHA-256", "value": "abc123def456..." }
]
},
"parent_process": {
"name": "explorer.exe",
"pid": 2104
}
},
"device": {
"hostname": "workstation-01",
"os": {
"name": "Windows",
"version": "10.0.19045"
}
},
"attacks": [
{
"tactic": {
"uid": "TA0002",
"name": "Execution"
},
"technique": {
"uid": "T1059.001",
"name": "PowerShell"
}
}
],
"metadata": {
"product": {
"name": "CrowdStrike Falcon",
"vendor_name": "CrowdStrike"
},
"version": "1.3.0"
},
"observables": [
{ "name": "actor.user.name", "type": "User Name", "type_id": 4, "value": "jdoe" },
{ "name": "process.name", "type": "Process Name", "type_id": 9, "value": "powershell.exe" },
{ "name": "device.hostname", "type": "Hostname", "type_id": 1, "value": "workstation-01" },
{ "name": "process.file.hashes.value", "type": "Hash", "type_id": 8, "value": "abc123def456..." }
]
}

DNS Activity event

A DNS query event normalized from a network sensor:

{
"activity_id": 1,
"activity_name": "Query",
"category_uid": 4,
"class_uid": 4003,
"type_uid": 400301,
"time": "2026-02-19T14:05:22Z",
"severity_id": 1,
"severity": "Informational",
"status_id": 1,
"status": "Success",
"message": "DNS query for suspicious-domain.tk from 10.0.1.50",
"src_endpoint": {
"ip": "10.0.1.50",
"hostname": "workstation-07"
},
"query": {
"hostname": "suspicious-domain.tk",
"type": "A",
"class": "IN"
},
"answers": [
{
"rdata": "203.0.113.100",
"type": "A",
"class": "IN"
}
],
"metadata": {
"product": {
"name": "Palo Alto Networks",
"vendor_name": "Palo Alto Networks"
},
"version": "1.3.0"
},
"observables": [
{ "name": "src_endpoint.ip", "type": "IP Address", "type_id": 2, "value": "10.0.1.50" },
{ "name": "query.hostname", "type": "Hostname", "type_id": 1, "value": "suspicious-domain.tk" },
{ "name": "answers.rdata", "type": "IP Address", "type_id": 2, "value": "203.0.113.100" }
]
}

Next steps

  • Query languages -- Query OCSF data with SQLite, STIX 2.1 and the other supported languages
  • Key Concepts -- Understand entities, insights, and the data lifecycle
  • API Reference -- Manage surfaces, mappings, and schemas programmatically