Overview
A comprehensive TypeScript library for MITRE ATT&CK data
This page provides a high-level overview of the ATT&CK Data Model library architecture, its core concepts, and how all the pieces fit together.
What is the ATT&CK Data Model?β
The ATT&CK Data Model (ADM) is a TypeScript library that provides type-safe, programmatic access to MITRE ATT&CK datasets. It bridges the gap between raw STIX 2.1 data and developer-friendly TypeScript objects.
Core Value Propositionβ
- Type Safety: Full TypeScript support prevents runtime errors
- STIX 2.1 Compliance: Maintains standards compliance while adding usability
- Relationship Navigation: Intuitive methods for exploring ATT&CK connections
- Multi-Domain Support: Works with Enterprise, Mobile, and ICS domains
- Performance Optimized: Designed for both memory efficiency and query speed
Architecture Overviewβ
βββββββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββββββ
β Data Sources β β Validation β β Object Model β
β β β β β β
β β’ GitHub Repository βββββΆβ β’ Zod Schemas βββββΆβ β’ ES6 Classes β
β β’ Local Files β β β’ STIX 2.1 Spec β β β’ Type Definitions β
β β’ Custom URLs β β β’ ATT&CK Rules β β β’ Relationship APIs β
β β’ TAXII Servers β β β β β
βββββββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββββββ
β
ββββββββββββββββββββ
β AttackDataModel β
β β
β β’ Central Hub β
β β’ Collections β
β β’ Relationships β
ββββββββββββββββββββ
Core Componentsβ
1. Data Sources (src/data-sources/)β
Handles loading ATT&CK data from various sources:
- attack: Official MITRE ATT&CK GitHub repository
- file: Local JSON files containing STIX 2.1 bundles
- url: Remote URLs serving STIX 2.1 content
- taxii: TAXII 2.1 servers (planned)
2. Validation Layer (src/schemas/)β
Ensures data integrity through Zod schemas:
- STIX 2.1 Base: Foundation schemas following STIX specification
- ATT&CK Extensions: Custom fields and relationships specific to ATT&CK
- Refinements: Advanced validation rules for ATT&CK-specific constraints
3. Object Model (src/classes/)β
Provides developer-friendly interfaces:
- Implementation Classes: ES6 classes for each ATT&CK object type
- Relationship Methods: Navigate connections between objects intuitively
- Type Safety: Full TypeScript support with compile-time checking
4. AttackDataModel (src/classes/attack-data-model.ts)β
Central hub containing all ATT&CK objects with automatic relationship mapping.
Object Type Hierarchyβ
STIX Domain Objects (SDOs)β
Core ATT&CK concepts represented as STIX objects:
| ATT&CK Concept | STIX Type | Custom? | Description |
|---|---|---|---|
| Technique | attack-pattern | No | Methods adversaries use to achieve goals |
| Tactic | x-mitre-tactic | Yes | Adversary tactical objectives |
| Group | intrusion-set | No | Adversary organizations |
| Software | malware/tool | No | Adversary tools and malware |
| Mitigation | course-of-action | No | Defensive countermeasures |
| Campaign | campaign | No | Sets of adversary activities |
| Data Source | x-mitre-data-source | Yes | Detection data categories |
| Matrix | x-mitre-matrix | Yes | Organizational structure |
STIX Relationship Objects (SROs)β
Connections between ATT&CK objects:
- uses: Groups/campaigns/software using techniques
- mitigates: Mitigations addressing techniques
- subtechnique-of: Sub-technique to parent relationships
- detects: Data components detecting techniques
Data Flowβ
Registration Processβ
// 1. Create data source configuration
const dataSource = new DataSource({
source: 'attack',
domain: 'enterprise-attack',
version: '15.1'
});
// 2. Register and validate data
const uuid = await registerDataSource(dataSource);
// 3. Load typed data model
const attackDataModel = loadDataModel(uuid);
Validation Pipelineβ
- Raw STIX Data: JSON from data source
- Schema Validation: Zod schemas ensure STIX compliance
- Refinement Checks: ATT&CK-specific validation rules
- Object Creation: Conversion to TypeScript classes
- Relationship Mapping: Automatic linking between objects
Relationship Navigationβ
const technique = attackDataModel.techniques[0];
// Navigate relationships using intuitive methods
const tactics = technique.getTactics(); // Associated tactics
const groups = technique.getGroups(); // Groups using this technique
const mitigations = technique.getMitigations(); // Available mitigations
const parent = technique.getParentTechnique(); // Parent (if sub-technique)
Multi-Domain Supportβ
The library supports all three ATT&CK domains:
Enterprise Domain (enterprise-attack)β
- Traditional IT environments
- Most comprehensive technique coverage
- Extensive group and software attribution
Mobile Domain (mobile-attack)β
- Mobile device threats
- Platform-specific techniques
- App store and mobile-specific tactics
ICS Domain (ics-attack)β
- Industrial Control Systems
- Operational Technology focus
- Critical infrastructure contexts
Extensibilityβ
Custom Fieldsβ
Extend ATT&CK objects with custom properties while maintaining compliance:
const customTechniqueSchema = techniqueSchema.extend({
custom_severity: z.number().optional(),
custom_tags: z.array(z.string()).optional()
});
Custom Refinementsβ
Apply additional validation rules:
const refinedSchema = customTechniqueSchema.check((data) => {
// Custom validation logic
return data.custom_severity <= 10;
});
Performance Characteristicsβ
Memory Usageβ
- Efficient Object Storage: Optimized class instances
- Lazy Relationship Loading: Relationships computed on demand
- Configurable Caching: Balance memory vs. performance
Query Performanceβ
- Direct Property Access: No query parsing overhead
- Pre-computed Relationships: Fast navigation between objects
- TypeScript Optimization: Compile-time optimizations
Standards Complianceβ
STIX 2.1 Foundationβ
- Full compliance with STIX 2.1 specification
- Support for all STIX Domain and Relationship Objects
- Extensible through STIX custom properties pattern
ATT&CK Specificationβ
- Implements ATT&CK Specification 3.3.0
- Support for all ATT&CK object types and relationships
- Backwards compatibility with previous versions
Integration Patternsβ
Application Integrationβ
- Import as npm package
- TypeScript-first development experience
- Works with any JavaScript framework
Data Pipeline Integrationβ
- Stream processing support
- Batch analysis capabilities
- Export to various formats
Security Tool Integrationβ
- SIEM integration patterns
- Threat hunting query generation
- Detection rule development