| name | processing-stix-taxii-feeds |
| description | Processes STIX 2.1 threat intelligence bundles delivered via TAXII 2.1 servers, normalizing objects into platform-native schemas and routing them to appropriate consuming systems. Use when onboarding new TAXII collection endpoints, automating bi-directional intelligence sharing with ISACs, or building pipeline validation for malformed STIX bundles. Activates for requests involving OASIS STIX, TAXII server configuration, MISP TAXII, or Cortex XSOAR feed integrations.
|
| domain | cybersecurity |
| subdomain | threat-intelligence |
| tags | ["STIX-2.1","TAXII-2.1","OASIS","MISP","CTI","IOC","threat-intelligence","NIST-SP-800-150"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
| nist_csf | ["ID.RA-01","ID.RA-05","DE.CM-01","DE.AE-02"] |
Processing STIX/TAXII Feeds
When to Use
Use this skill when:
- Onboarding a new TAXII 2.1 collection from a government feed (CISA AIS, FS-ISAC) or commercial provider
- Validating that ingested STIX bundles conform to the OASIS STIX 2.1 specification before import
- Building automated pipelines that parse STIX relationship objects to reconstruct campaign context
Do not use this skill for proprietary vendor feed formats (Recorded Future JSON, CrowdStrike IOC lists) that require vendor-specific parsers rather than STIX processing.
Detection Gaps & Validation
- Confidence is optional and unscaled: STIX 2.1
confidence (0-100) is frequently absent, and producers map it differently (some use Admiralty/None-Low-Med-High bands, some omit it). Do not treat missing/low confidence as "ignore" or a high value as "block" - normalize each feed's scale on ingest and default missing values conservatively rather than to 100.
- Dedup and correlation gaps: the same indicator arrives from CISA AIS, an ISAC, and a commercial feed with different IDs and markings; without dedup by pattern value you inflate counts and may block on a single low-quality source. Key on the observable, not the STIX
id.
- Silent data loss: missing pagination (
next/as_pages) and clock skew on added_after drop objects at interval boundaries - use UTC with a 5-minute overlap and reconcile object counts per poll to detect gaps.
- Expired/revoked indicators: honor
valid_until and revoked: true - pipelines that ingest the pattern but ignore these fields keep blocking on retired infrastructure. Filter both before routing to SIEM/firewall.
- How to confirm a bundle is usable: check
spec_version (2.0 vs 2.1 schemas differ), confirm required indicator fields and pattern syntax parse, and resolve relationship refs (source_ref/target_ref) actually exist in the bundle before reconstructing campaign context.
Prerequisites
- Python 3.9+ with
stix2 library (pip install stix2) and taxii2-client library
- Network access to TAXII 2.1 server endpoint with valid credentials
- Target TIP or SIEM with import API (MISP, OpenCTI, or Splunk ES)
Workflow
Step 1: Discover TAXII Server Collections
taxii2client.v21 Server, as_pages
server = Server(,
user=, password=)
api_root = server.api_roots[]
collection api_root.collections:
(collection., collection.title, collection.can_read)