feat(soc-cortex-xpanse-posture): add Cortex Xpanse vendor pack (posture lifecycle)#956
feat(soc-cortex-xpanse-posture): add Cortex Xpanse vendor pack (posture lifecycle)#956sha-x-ai wants to merge 2 commits into
Conversation
…re lifecycle) First vendor pack consuming data_source: issues directly (no vendor-raw dataset since Xpanse-XSIAM is unified-platform-native). Routes through soc-framework-posture lifecycle via SOCProductCategoryMap_V3 -> Posture category (added ds_panw_asm: Posture entry). Verified locally: - Schema validates against tools/generate_vendor_content.py - Pack scaffold, modeling rule, correlation rule emit cleanly - Bracket-quote JSONPath confirmed for xdm.issue.normalized_fields: "$['xdm.target.host.ipv4_addresses'][0]" - Pack metadata, dependency chain (soc-framework-posture) install cleanly in x5supreme dev tenant - Bare-pack install succeeds in tenant Open item: - Full pack install (with correlation rule) fails 101704 at tenant. Generic error code with no detailed feedback from XSIAM. Bare pack and pack-without-modeling-rule both fail; pack-without- rules succeeds. Rejection is isolated to the correlation rule artifact. Would appreciate Scott's read on the generated Packs/soc-cortex-xpanse-posture/CorrelationRules/*.yml. Parallel cloud-routed variant available at schemas/vendors/cortex-xpanse/cortex-xpanse-cloud.yaml (not on this branch; will push separately if Scott prefers Cloud routing).
Known blocker - architecturalFull pack install fails with error code
Both content rule types fail independently. Common factor: The platform appears to reject content rules that target the unified For unified-platform-native vendors like Cortex Xpanse, where the integration writes directly to Open architectural questionWhat pattern should unified-platform-native vendors (Cortex Xpanse, AI-SPM, CIEM, future Cortex Cloud sources) use, given that:
Possibilities to discuss:
|
…klist Three fixes from the init_pack.py checklist Scott's tooling prints at scaffold: - fromversion 8.0.0 to 6.10.0 on correlation rule and modeling rule. Checklist flags 8.0.0 as causing HTTP 500. Verified across working framework packs (Check Point NDR, Proofpoint TAP, CrowdStrike Falcon) which all use 6.10.0. - mitre_defs populated map. Checklist requires populated, not empty dict. Added TA0043 Reconnaissance with T1595 Active Scanning and T1596 Search Open Technical Databases. Conservative mapping for attack-surface scanning context; Cortex Xpanse does not natively map findings to MITRE. - alert_category User Defined confirmed (was already correct). Additional schema cleanup: - Removed four alert_field references to fields not present in baseline XSIAM 3.x tenants: posture_category, findingstatus, identify_finding_acknowledged, identify_misconfig_summary. The identify_* fields were architectural mistakes. Those are playbook context keys that SOC_Misconfig_Identify sets via Set tasks at execution time, not data that belongs on the alert object. - user_defined_category constant updated from posture_category to issue_type so it references an existing pre_alter column. - Trimmed modeling rule fields to verified-standard issue_field names (originalalertid, severity) since the modeling rule is structurally required but semantically near-no-op for unified-platform-native vendors where the issues dataset arrives XDM-normalized. State after v0.7: - Schema: VALIDATION OK - pack_prep: SDK validation passed - Tenant install: still rejects 101704 Remaining alert_field references (alert_description, alert_name, alertcategory) match the soc-wiz-cloud precedent but did not appear in the dev tenant's incident fields export. These are the most likely remaining cause of the install rejection. Pending framework-owner review next week to ratify the pattern for unified-platform-native sources (Cortex Xpanse, AI-SPM, CIEM, future Cortex Cloud data sources).
Summary
First Cortex Xpanse vendor pack for the SOC Framework. Routes attack-surface issues from the unified
issuesdataset through thesoc-framework-posturelifecycle under the Posture category. First-vendor consumer for the posture lifecycle.Architecture
The Cortex Xpanse-XSIAM native integration writes attack-surface issues directly into the unified
issuesdataset with XDM normalization applied at platform ingestion. There is nocortex_xpanse_*_rawdataset analogous towiz_generic_alert_raw(verified by XQL autocomplete in x5supreme — nocortex_xpanse_*datasets exposed).This pack reads from
data_source: issuesfiltered byxdm.issue.detection.method = "XPANSE". This is the first vendor pack to consumeissuesdirectly; all existing packs use vendor-specific raw datasets. Pattern ratification needed — see open questions below.The platform itself stamps every Cortex Xpanse issue with
xdm.issue.domain = "POSTURE"andoriginal_tags = ["DOM:Posture", "DS:PANW/ASM"]at ingestion. SOCProductCategoryMap_V3 entry added:ds_panw_asm: Posture.Verified in x5supreme dev tenant
tools/generate_vendor_content.py validatetools/new_vendor_pack.pyemits modeling rule + correlation rule + schema.json cleanlyxdm.issue.normalized_fieldsconfirmed via bracket-quote JSONPath:"$['xdm.target.host.ipv4_addresses'][0]"soc-framework-posturev1.0.1 uploaded successfully)ds_panw_asm: Posture) accepted;soc-optimization-unifiedv3.10.13 installedKnown blocker
Full pack install fails with error code
101704at the correlation rule artifact.Isolation tests run in x5supreme:
Rejection is isolated to the correlation rule
.yml. XSIAM returns101704(generic install-failed) with no detailed error message available via the SDK or the tenant install history UI. Would appreciate framework-owner read on the generated correlation rule yml atPacks/soc-cortex-xpanse-posture/CorrelationRules/SOC Cortex Xpanse Posture Finding.yml.Open questions for ratification
data_source: issuesprecedent. First pack to use this. Should unified-platform-native sources (Cortex Xpanse, AI-SPM, CIEM, future Cortex Cloud sources) adopt this pattern, or fit a different one?Posture category routing value in SOCProductCategoryMap_V3. Used
Posture(string). Confirm vsposture_misconfigor other convention.VULNERABILITY-class Cortex Xpanse findings (
xdm.finding.type_id = 140000000, CVE-bearing) currently route toposture_misconfigin v1.0.0. v1.1.0 candidate to split toposture_complianceif that aligns with intent. CVE/CVSS/EPSS data lives in joinedfindingsdataset, not on issue row.SOC_Misconfig_{Plan,Execute,Verify} phases are lifecycle-internal seeded stubs (soc-framework-posture). Production phase logic out of scope for this pack.
Parallel variant (not in this PR)
Cloud-routed variant exists at
schemas/vendors/cortex-xpanse/cortex-xpanse-cloud.yaml(separate branch, not included in this PR). Mirrors soc-wiz-cloud convention; routes via Cloud category through NIST IR lifecycle. Available if framework-owner prefers Cloud routing over Posture.Limitations (v1.0.0)
cloud_provider/cloud_account/cloud_regionare null on the issue row. Cortex Xpanse does not expose CSP attribution directly on issues. Future enhancement: enrich viaasset_inventoryjoin onxdm.issue.asset_ids[0].DS:Cortex Xpansetag (only platform-suppliedDS:PANW/ASMis used for routing). v1.0.1 candidate.