Skip to content

ScanMalware TI Provider, Python 3.14 and dependency updates

Latest

Choose a tag to compare

@ianhelle ianhelle released this 21 Sep 22:52
· 8 commits to main since this release
b490e56

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, and quick
    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 /.default scope instead of delegated User.Read, resolving
    invalid_scope failures. (#923, contributed by N4k0r)
  • Fixed MSTICPy's outbound HTTP user-agent header. mp_ua_header() now
    emits the standards-compliant User-Agent header, 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, and jaraco.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 use MSTICPY_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