We're excited to share a new set of updates to misp-stix, bringing better STIX 2.x compatibility, smarter Galaxy Cluster handling, and improved validation — all wrapped up with stronger test coverage and smoother tooling.
Highlights of recent misp-stix changes (Jan–June 2025)
STIX 2.x compatibility improvements
- Enhanced import/export of custom Galaxy Clusters (Campaign, Threat Actor, Malware, Tool, Attack Pattern, etc.)
- Support for TLP 2.0 and improved parsing of ACS Marking and access privileges
- Better meta field mapping,
labels, and synonym handling for SDOs
Validation & standard compliance
- Initial use of
stix2validatorto validate country codes was replaced bypycountryfor more reliable handling
Bug fixes and stability
- Resolved issues with malformed or missing fields (
name,object_refs,country, custom fields) - Improved fallback logic and inheritance handling in mapping methods
Tests & coverage
- Broadened test suite for custom STIX object conversions
- Added regression tests and more comprehensive sample coverage
Packaging & tooling
- Regular dependency updates (
poetry, lockfiles, submodules) - Cleanup and consistency improvements in CLI options and argument naming
Detailed changelog
2025.6.12 - 2025-06-12
Chg
- [package, poetry] Updated version
Fix
- [stix2 export] Improving the categorisation of MISP as JSON content to call the right conversion to STIX 2.x method
- [stix2 import] Fixed mapping inheritance to avoid unavailability of a mapping method
2025.5.13 - 2025-05-13
Add
- [stix2 import] Mapping TLP 2 definitions
Chg
- [package] New version
- [submodules] Bumped latest
mitre/cti&misp-galaxiesversions
Fix
- [stix2 export] Making sure Identity objects are not raise any exception because of a custom field
- [stix2 import] Fixed access privilege parsing from ACS marking extension definitions
2025.4.30 - 2025-04-30
Add
- [test] Tests for custom Campaign Galaxy Clusters export to STIX 2.x
- [stix2 export] Converting Custom Galaxy Clusters imported from STIX 2.x Campaign objects, back to STIX 2.x
Chg
- [poetry, package] Bumped latest version
- [stix2 export] Validating country values while converting
countrygalaxy clusters and custom location galaxy clusters - [poetry] Bumped latest versions in lock file
- [tests] Updated test samples for Campaign objects import as Custom Galaxy
Fix
- [stix2 import] Using the right method to parse malware sample refs
- [stix2 import] Properly adding Galaxy with Cluster when converting Malware object both as MISP object and Cluster
- [stix2 import] Avoiding issues with missing
namefield in SDOs converted from STIX 2.x to MISP Galaxy Clusters - [stix2 export] Catching exceptions on invalid country value
- [tests] Added tests for custom Vulnerability Galaxy Cluster export to STIX 2.x
- [stix2 import] Removed empty line
- [tests] Covering all fields in tests for custom Tool Galaxy Cluster
- [stix2 export] Avoiding issues with custom stix objects id in
object_refsfield of a Note - [tests] Tests for Custom Threat Actor Galaxy export to STIX 2.x
- [stix2 export] Typo on the Threat Actor meta fields mapping
- [stix2 import] Added missing mapping for STIX 2.1 Threat Actor fields
- [tests] Better tests for custom Attack Pattern Clusters meta fields & added tests for custom Malware Clusters export to STIX 2.x
- [stix2 export] Better
labelsandmalware/threat actor/tool typesfield handling - [stix2 export] Better meta fields mapping handling
- [stix2 export] Added missing country code warning
- [stix2 import] Fixed STIX 2.1 Malware object to cluster meta fields mapping
- [stix2 export] Converting custom location Galaxy Clusters to STIX 2.1 Location objects
- [stix2 export] Updated Galaxy Clusters mapping & generic meta fields list
- [poetry, package] Added
stix2validatordependency and updated lock file accordingly - [tests] Updated tests for location clusters export to STIX 2.1
- [stix2 export] Passing meta values without making them a list when they are single values
- [tests] Better tests for Intrusion Set objects conversion in both directions
- [stix2 export] Better intrusion set clusters conversion
- [tests] Better tests for Campaign objects conversion
- [stix2 import] Parsing all Campaign object fields
- [tests] Better tests for Attack Pattern objects
- [stix2 export] Added missing parsing of attack pattern synonyms converted as
aliasesin STIX 2.1 Attack Pattern objects - [stix2 export] Typo missing stix version to populate custom galaxies mapping
- [stix2 export] Typo in SDO types exported from galaxy clusters
- [stix2 export] Enabling the ability to export to any STIX 2.x version the custom galaxy clusters previously generated during the conversion from STIX 2.x
- [stix2 import] Properly parsing access privileges
2025.4.10 - 2025-04-11
Chg
- [package] Bumped latest version
- [poetry] Bumped lock file with latest versions
- [poetry] Updated lock file with latest versions
Fix
- [stix2 import] Made the Observable objects fetching method available for all standalone Observable objects conversion classes
- [stix2 import] Avoiding KeyError exxception when trying to fetch an observable object based on its id referenced in an observed data
2025.4.4 - 2025-04-04
Chg
- [package, poetry] New library version
- [submodules] Bumped latest versions
- [poetry] Bumped lock file with latest versions
Fix
- [tests] Updated test following the updated galaxy & cluster definition
- [stix2 import] Avoiding issues with Sighting objects
2025.03.04 - 2025-03-13
Chg
- [poetry, package] Library version bump
- [poetry] Bumped latest lock file
Fix
- [stix2 import] Passing the cluster distribution value to galaxy definitions too
- [stix2 import] Making Python 3.9 happy with my return typings being str or None
- [tests] Updated tests following recent change on the location objects conversion
- [stix2 import] Fixed imports
- [stix2 import] Converting STIX 2.1 Location objects with only global region, country or area attributes as custom galaxy
- [stix2 import] Removed unused mapping methods
- [stix2 import] Removed mapping that was move to converters
2025.02.14 - 2025-02-14
Chg
- [package] Bumped version
- [poetry] Bumped lock file
- [poetry] Replaced deprecated section name
Fix
- [stix2 import] Keeping UUID from Custom objects used to describe a Galaxy Cluster which we import back to MISP
- [stix2 import] Replaced undefined methods with actual error message handling
2025.01.10 - 2025-01-10
Chg
- [poetry, package] Bumped versions
- [stix2 import] Aligned the force contextual data argument to its naming on MISP
2025.01.09 - 2025-01-09
Add
- [stix2 import] New argument to force the conversion of a STIX 2.x SDO as Galaxy Cluster
Chg
- [readme] Updated package information, CLI description & updated active period information
- [poetry] Bumped lock file with latest versions
- [poetry, package] Bumped package version