Pull the free Vulnetix Malscan STIX 2.1 feeds into MISP: fetch the per-ecosystem DNS and URL bundles on a schedule and push them through the /events/upload_stix/2 REST endpoint, so indicators land as MISP events ready for correlation and sync.
The feeds
Free STIX 2.1 bundles at https://vulnetix.com/malscan-stix/{ecosystem}/{dns|urls}.stix.json — ecosystems generic, npm, pypi, go, cargo, rubygems, maven, packagist and nuget. DNS carries malicious domains and IPs; URLs carries C2 and exfiltration endpoints. Refreshed every 15 minutes, each bundle ships a .sha256 sidecar, index.json manifests the set, and a DNS TXT record per ecosystem carries the live locator. Licensed AGPL-3.0 — free to use and redistribute.
Wire the feeds into MISP
MISP imports STIX 2.1 bundles through its REST API; each pull becomes a MISP event whose attributes correlate against your existing data and sync to connected instances.
Scheduled pull + REST upload (cron every 15 minutes)
#!/bin/sh # Fetch the npm DNS bundle and import it as a MISP event curl -fsSL https://vulnetix.com/malscan-stix/npm/dns.stix.json -o dns.stix.json curl -X POST "https://misp.example.com/events/upload_stix/2" \ -H "Authorization: $MISP_AUTH_KEY" \ -H "Accept: application/json" \ -F "file=@dns.stix.json"
Verify before you ingest
curl -fsSLO https://vulnetix.com/malscan-stix/generic/dns.stix.json REMOTE=$(curl -fsSL https://vulnetix.com/malscan-stix/generic/dns.stix.json.sha256 | cut -d' ' -f1) LOCAL=$(sha256sum dns.stix.json | cut -d' ' -f1) [ "$REMOTE" = "$LOCAL" ] && echo "verified" || echo "CHECKSUM MISMATCH: do not ingest"
Where the indicators come from
Every feed entry traces to a supply-chain malware campaign Vulnetix tracks. The Malscan engine matches the same indicators against dependencies already installed on disk; the Package Firewall blocks the packages that carry them at install time.
All STIX feed integrations → · The campaigns behind the feeds →