MSTICPy 3.1.0
MSTICPy 3.1.0 adds a new ScanMalware threat-intelligence provider,
introduces Python 3.14 support, improves compatibility with current IPython
and NetworkX releases, and includes fixes for SecurityGraph authentication
and outbound HTTP user-agent handling.
Features
- Added the ScanMalware threat-intelligence provider for DNS names,
hostnames, URLs, IPv4, and IPv6 observables. The provider supports verdict
lookups for hosts and URLs, passive-DNS context for addresses, andquick
query modes for lower-overhead bulk lookups. No configured API credentials
are required. (#938, contributed by Jonas Lejon (@jonaslejon))
Enhancements
- Improved ScanMalware result attribution so redirects cannot lend their
verdict or display metadata to an unrelated host or URL. Failed secondary
verdict requests degrade gracefully to the available scan result. (#938) - Added Python 3.14 to the supported package classifiers and CI test matrix
while retaining support for Python 3.10 through 3.13. (#929) - Hardened GitHub Actions workflows by pinning actions to immutable commit
SHAs and adding grouped Dependabot updates with a cooldown period. (#935,
contributed by Dan Fiedler (@danfiedler-msft))
Fixes
- Fixed SecurityGraph client-credential authentication by using the
Microsoft Graph/.defaultscope instead of delegatedUser.Read, resolving
invalid_scopefailures. (#923, contributed by N4k0r) - Fixed MSTICPy's outbound HTTP user-agent header.
mp_ua_header()now
emits the standards-compliantUser-Agentheader, allowing upstream services
to identify MSTICPy requests correctly instead of seeing the default httpx
identity. (#936, contributed by Jonas Lejon (@jonaslejon)) - Updated IPython integration for compatibility with newer releases and safer
operation when no interactive shell is active. (#922, #935) - Resolved stricter Ruff and mypy diagnostics in notebook initialization and
utility code. (#922)
Compatibility and dependencies
- Updated supported environments to Python-specific NumPy 2.x release lines:
- Python 3.10: NumPy 2.2.x
- Python 3.11: NumPy 2.4.x
- Python 3.12 and later: NumPy 2.5.1+
- Updated NetworkX to 3.6.1 on Python 3.11 and later. Python 3.10 uses
NetworkX 3.4.2, the latest compatible release. (#934) - Raised minimum versions for several runtime dependencies, including
IPython, ipywidgets, Panel, Folium, Beautiful Soup, dnspython, aiohttp,
Pillow, andjaraco.context. (#922, #929, #933, #940) - Updated development and test tooling, including coverage and pytest-cov.
(#930, #941)
Documentation and release maintenance
- Added ScanMalware provider configuration and API documentation. (#938)
- Updated the Azure Pipelines publishing workflow and clarified installation
guidance while PyPI publishing was unavailable.
Upgrade notes
- NumPy 1.x is no longer supported by the declared runtime requirements.
Review environment constraints and dependencies for NumPy 2 compatibility
before upgrading. - Code that directly indexes the dictionary returned by
mp_ua_header()must
replace["UserAgent"]with["User-Agent"]. Code that passes the complete
dictionary as HTTP headers does not need to change. Code needing the raw
identifier can useMSTICPY_USER_AGENT. - Review application constraints if they pin older releases of IPython,
ipywidgets, Panel, Folium, Beautiful Soup, or dnspython.
Contributors
Thank you to Jonas Lejon (@jonaslejon), N4k0r, and Dan Fiedler (@danfiedler-msft) for their contributions
to this release.
Full changelog:
v3.0.2...v3.1.0