Skip to content

Conversation

@seansica
Copy link
Contributor

@seansica seansica commented Mar 21, 2025

Changes

  • Contains changes that will mark the release of ATT&CK Specification 4.0.0.
  • New ATT&CK object type: Detection Stategy (x-mitre-detection-strategy)
  • New ATT&CK object type: Analytic (x-mitre-analytic)
  • New ATT&CK object type: Log Source (x-mitre-log-source)
  • New Relationship (SRO) type: found-in
  • Data Sources are now deprecated and will be removed in ATT&CK Specification 5.x
  • Includes major refactors, including migration to Zod v4

See #14 for a detailed summary of the specification changes.

Notably, this change is not final. Unit tests still need to be implemented. Further changes to the specification may occur before the official 4.0.0 release.

seansica added 18 commits March 5, 2025 12:54
- Remove x-mitre-data-source type
- Add x-mitre-detection and x-mitre-log-source types
- TODO is for remembering to replace x_mitre_data_source_ref property with new x_mitre_data_log_ref
- Add new schema, MITRE Log Source, that replaces MITRE Data Source
- Update related components to use Log Source instead of Data Source

BREAKING CHANGE: The MITRE Data Source type is being replaced by Log Sources.
Data sources will be deprecated and removed in the next major ATT&CK specification version.
- Rewrite all Zod schemas that implement well-defined open vocabularies to use proper case with OV suffix
- Add type field for indicator
- Add type field for x-mitre-analytic
- Note that x-mitre-detection and x-mitre-analytic are still being evaluated as candidate custom SDO types (subject to change)
- Move MitreCollectionLayersOV to open-vocabularies.ts module
- Implement new PatternTypeOV (to be used in Indicators)
- Implement new IndicatorTypeOV (to be used in Indicators)
- This schema is still a work-in-progress
- This iteration may not be the finalized version
- The attack-data-model.ts module was using the now deprecated DataSource and DataSourceImpl
- Both have been replaced by LogSource and LogSource impl, respectively
- This can be thought of as a simple rename
- Implements the Indicator SDO definition from STIX 2.1
- Deviates from STIX 2.1 spec by specifying valid_from as optional (too strict for ATT&CK uses)
- Was previously set to a singular external reference instance
- Fixed to be an array of external references
- Rename variables, functions, and classes from dataSource to logSource
- Update file names containing 'dataSource' to use 'logSource'
- Replace references in comments and documentation
- Update import statements across the codebase
@seansica seansica requested review from clemiller and jondricek March 21, 2025 19:36
@seansica seansica self-assigned this Mar 21, 2025
@seansica seansica requested a review from elucchesileon March 21, 2025 20:54
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The data component schema will need to be updated to support ATT&CK IDs with a refinement that validates the ID exists and matches the pattern DC####

Copy link
Contributor

@clemiller clemiller Mar 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May want to add export statements for indicators & detections here

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added

Comment on lines 455 to 459

if (x_mitre_data_sources && inMobileDomain) {
if (x_mitre_log_sources && inMobileDomain) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
message: "x_mitre_data_sources is not supported in the 'mobile-attack' domain.",
message: "x_mitre_log_sources is not supported in the 'mobile-attack' domain.",
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if it makes sense to rename this field to log sources. Maybe we should consider removing it altogether? The x_mitre_data_sources field hasn't been supported/updated for a while and was effectively replaced by "detects" relationships with Data Components. Any techniques still using this field likely contain outdated information that hasn't kept up with the current Data Sources, and this would probably become even more apparent as we transition toward Log Sources.

Comment on lines 31 to 37
| Campaign
| Collection
| DataComponent
| DataSource
| LogSource
| Identity
| Matrix
| Tool
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will need to add Indicators and Detections as valid AttackObject types here

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added

Comment on lines 53 to 59
campaignSchema,
collectionSchema,
dataComponentSchema,
dataSourceSchema,
logSourceSchema,
identitySchema,
matrixSchema,
toolSchema,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will need to add Indicator and Detection schemas here as well

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added

seansica added 19 commits June 30, 2025 10:58
…urces

- Data Sources will remain supported until ATT&CK spec 4.0.0
- Log Source tests will be restored after the schema is finalized
- Implement dual support for x_mitre_data_sources and x_mitre_log_sources
- Refactor refinements to Zod v4 syntax
- x_mitre_domains was removed from all identities starting in ATT&CK v17.0
- Not a breaking change because this should have been codified in ATT&CK spec 3.2.0 or earlier
- Add x-mitre-detection-strategy to detects.source array alongside existing x-mitre-data-component
- Enables detection strategies to target attack patterns via detects relationship type
- Maintains backward compatibility with existing data component relationships
- They will not be used in the next spec revision related to detection strategies
- z.SafeParseReturnType appears to no longer be supported in Zod v4
- Removed it from main.ts
- Fixed an import error and rolled log source references back to data sources in refinements.ts
- The tests that check relationships and STIX bundles take particularly long to run
- >=2200ms for relationships and >=3000ms for STIX bundles when run locally
- They frequently exceed the 5000ms timeout threshold when run on GitHub Actions
- Increased to 10_000 (10s)
- Add conditional to publish job to only run on push events
- Restrict deploy-docs job to main branch pushes only
- Prevents external contributors from triggering releases via PRs
@seansica seansica changed the base branch from next to alpha July 1, 2025 14:08
@seansica seansica changed the title draft: update taxonomy for data components and sources ATT&CK Spec 4.0.0 - Detection Strategies, Analytics, and Log Sources Jul 1, 2025
@seansica seansica changed the title ATT&CK Spec 4.0.0 - Detection Strategies, Analytics, and Log Sources ATT&CK Spec 4.0.0 - Detection Strategies, Analytics, and Log Sources (Draft) Jul 1, 2025
@seansica seansica merged commit 25cf2f2 into alpha Jul 1, 2025
4 checks passed
@seansica seansica deleted the 14-update-taxonomy-for-data-components-and-sources branch July 1, 2025 14:18
@github-actions
Copy link

github-actions bot commented Jul 1, 2025

🎉 This PR is included in version 4.0.0-alpha.1 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions
Copy link

🎉 This PR is included in version 4.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions
Copy link

🎉 This PR is included in version 4.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants