Skip to content

ATT&CK Specification 3.3.0 Pre-release#34

Merged
seansica merged 112 commits intonextfrom
alpha
Jul 21, 2025
Merged

ATT&CK Specification 3.3.0 Pre-release#34
seansica merged 112 commits intonextfrom
alpha

Conversation

@seansica
Copy link
Copy Markdown
Contributor

No description provided.

seansica and others added 30 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
- The custom error map included in the errors sub-package was adding little value
- It also sufferred from the side effect import anti-pattern where the module needed to be imported, not for its exports, but for the side effects that happen during its initialization
- This resulted in inconsistent/missing imports
- It could have been solved globally, but again, the value proposition of centralized error massaging is not there. Rather, just set information-rich error messages close to the source
…r messaging

- Add createStixTypeValidator to provide clear type validation errors with object names
- Add createMultiTypeValidator to support objects with multiple valid types (malware and software)
- Rename createStixIdentifierSchema to createStixIdValidator for naming consistency
- Leverage stixTypeToTypeName mapping for more descriptive error messages
- Update schemas to use new validator functions
…ror function

- Resolves the following error:
- Error: src/schemas/common/stix-identifier.ts(24,53): error TS7053: Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Record<file | attack-pattern | bundle | campaign | course-of-action | identity | indicator | intrusion-set | malware | tool | marking-definition | x-mitre-data-component | ... 7 more ... | artifact, string>'.
Comment thread src/classes/sdo/data-source.impl.ts Outdated
Comment thread src/classes/sdo/index.ts
Comment thread src/classes/sdo/technique.impl.ts
@github-actions
Copy link
Copy Markdown

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

The release is available on:

Your semantic-release bot 📦🚀

@clemiller
Copy link
Copy Markdown
Contributor

clemiller commented Jul 14, 2025

The schemas for the new object types look good to me!

Just want to confirm that we're omitting the name field from validation for Analytics? I'm not sure where in the schemas this would be configured, but I don't see anything on the analyticSchema or the attackBaseDomainObjectSchema to call that out

Comment thread src/schemas/common/misc.ts Outdated
Comment thread src/classes/utils.ts Outdated
@github-actions
Copy link
Copy Markdown

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

The release is available on:

Your semantic-release bot 📦🚀

seansica added 6 commits July 21, 2025 08:30
- .description is supplanted by meta({ description: string }) in Zod v4
- Moved the zod2md execution step from the docusaurus project to the root schema project
- This resolves an issue where the description column does not appear in generated md files
- https://github.com/matejchalk/zod2md/issues/14\#issuecomment-3097658396
- Updated dependencies accordingly
- This was redundant and unnecessary
- It was also causing an issue where zod2md serializes keys specified in z.required to type
- Reported here: https://github.com/matejchalk/zod2md/issues/14\#issuecomment-3097658396
…e of a MITRE platform

- Added xMitrePlatformSchema (singular)
- Not to be confused with the existing xMitrePlatformsSchema (plural)
- Use z.iso.datetime instead of a custom Zod type
@github-actions
Copy link
Copy Markdown

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

The release is available on:

Your semantic-release bot 📦🚀

@seansica seansica merged commit 6332442 into next Jul 21, 2025
8 checks passed
@seansica seansica deleted the alpha branch July 21, 2025 17:49
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 4.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@github-actions
Copy link
Copy Markdown

🎉 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.

3 participants