STIX 2 Patterns Validator

2.1.2 · active · verified Sun Apr 12

The `stix2-patterns` library provides a software tool for checking the syntax of Cyber Threat Intelligence (CTI) STIX Pattern expressions, used within STIX Indicators to describe conditions indicating cyber threat activity. It is currently at version 2.1.2 and actively maintained with regular updates addressing bug fixes and improvements.

Warnings

Install

Imports

Quickstart

The primary way to use the library programmatically is via the `run_validator` function. It takes a STIX pattern string and returns a list of errors encountered during parsing. An empty list indicates a valid pattern.

from stix2patterns.validator import run_validator

# A valid STIX 2.1 pattern
pattern_valid = "[file-object:hashes.md5 = '79054025255fb1a26e4bc422aef54eb4']"
errors_valid = run_validator(pattern_valid)
if not errors_valid:
    print(f"Pattern '{pattern_valid}' is valid.")
else:
    print(f"Pattern '{pattern_valid}' has errors: {errors_valid}")

# An invalid STIX pattern
pattern_invalid = "[file-object:hashes.md5 = 'bad_hash']"
errors_invalid = run_validator(pattern_invalid)
if not errors_invalid:
    print(f"Pattern '{pattern_invalid}' is valid.")
else:
    print(f"Pattern '{pattern_invalid}' has errors: {errors_invalid}")

# Example of STIX 2.0 pattern (might be considered invalid under 2.1 strictness, but syntax for this is okay)
pattern_stix20 = "[file:hashes.'MD5' = 'd41d8cd98f00b204e9800998ecf8427e']"
errors_stix20 = run_validator(pattern_stix20)
if not errors_stix20:
    print(f"Pattern '{pattern_stix20}' is valid.")
else:
    print(f"Pattern '{pattern_stix20}' has errors: {errors_stix20}")

view raw JSON →