| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| installer | 2026-10-28 | 33.4 MB | |
| README.md | 2026-10-28 | 11.0 kB | |
| v11.3.0 source code.tar.gz | 2026-10-28 | 61.1 MB | |
| v11.3.0 source code.zip | 2026-10-28 | 64.9 MB | |
| Totals: 4 Items | 159.5 MB | 0 | |
UTMStack v11.3.0 (pre-release) — 2026-10-28
v11.3.0 is a reliability and data-model release. The headline change is a rename of the raw-event storage field (log → event) with a new utm.* namespace for charting, plus a set of fixes for disk protection, installer memory handling, and the alert/compliance UI. Upgrading does not reindex existing data, but customer-created filters, rules, and dashboards that use the old log.* bag must be updated (see Breaking).
Security
- CVE-2026-82042 (follow-up): the internal API-key filter now also allows the rule-flood-guard's three backend endpoints. Previously those calls 401'd silently, which disabled the flood guard's ability to auto-disable runaway rules. No action required.
Breaking
- Customer-owned content that references the
log.*event bag must be migrated toevent.*(orutm.*for charts). UTMStack v11.3.0 renames the raw per-vendor event bag fromlogtoevent. Every filter, rule, and dashboard shipped by UTMStack was migrated for you, and the Log Explorer / Alerts search UI still accepts legacylog.*filter values. Customer-created content is not migrated, and it stops working against new data: - Custom correlation rules —
where/afterEvents/groupByexpressions referencinglog.*no longer match any new event. - Custom filters — steps that read from (
log.*sources) or write to (log.*targets) the old bag name no longer see the data. - Custom dashboards / charts / visualizations — queries and filters that reference
log.*fields return empty on new indices. - How to migrate: rename raw bag fields
log.<field>→event.<field>. For aggregations and charts,event.*is not aggregatable (it is stored as a flat field), so use theutm.*namespace or the promoted standard fields (action,severity,deviceTime,origin.*,target.*,tenantId), which are unchanged. Old pre-upgrade data keeps thelogbag and is retained per its index lifecycle.
Added
- Geolocation coordinate maps on dashboards (Leaflet), with OpenStreetMap tiles. Six previously-broken compliance map charts are fixed.
- New operational dashboards: GCP, NetFlow, and pfSense.
- Compliance report PDF export is available from every compliance view (evaluation detail, report viewer, and results), not just the legacy screen.
utm.*aggregatable field namespace for charts. Raw per-vendor fields moved toevent.*; promoted, aggregatable fields live underutm.*(e.g.utm.action,utm.severity).
Changed
- Raw event field renamed
log.*→event.*in the schema. New events store underevent; old events keeplogand are read with a dual-read pass, so no reindex and no data loss. Custom dashboards or saved filters that hard-codelog.*paths must be updated toevent.*(see upgrade notes below). - Threat Intelligence page now opens
threatwinds.comin a new tab instead of embeddinggalaxy.threatwinds.comin an iframe. - Installer memory model:
/utmstack/updates/memory-allocation.jsonis now the single authority for per-service memory. Normal updates never re-balance it. Useutmstack_installer --recalculate-memoryto recompute and rewrite it. Fresh installs seed the file once. - Emergency disk auto-delete: when OpenSearch's disk usage reaches 85%, the oldest raw-log indices are now actually deleted (down to 70%). Previously the delete loop only removed indices that had aged 30 days into the ISM
deletestate, so on fresh or high-volume installs it deleted nothing and the disk could still reach 100% and tip OpenSearch into flood-stage. Alerts, statistics, and system indices are never auto-deleted.
Fixed
- SOAR incident-response commands re-running forever — a command that dispatched but whose result callback never landed (backend restart, stream close) was re-sent every 30 seconds. One rule in the wild created ~39,000 duplicate firewall rules in a week. Commands now go to
EXECUTINGthe moment they're dispatched, so the scheduler can't re-select them, and anyEXECUTINGrow left over from a backend restart is reset toPENDINGonce at boot. - Data Sources: applying a note (or editing an alias) removed the source from its group and silently dropped
assetGroupId/assetGroupNamefrom new alerts. Note and alias now use dedicated field-scoped endpoints that touch only that column. - Alerts page opened by bare URL hung on "Loading…" — direct navigation to
/data/alert/viewwithout?alertType=...never triggered the initial search. Now it loads, defaulting to the Alerts view (Status column, status tabs, Datasource Group filter) exactly like the menu link. - Alerts "Row to filters" bricked the list — the default selection turned composite columns (Target, Adversary, Impact) and numeric columns (Echoes) into
IS_ONE_OFfilters with invalid (non-list) values, which the backend rejected with a 500; every later search on the page failed until a reload. Composite columns are now offered unchecked by default and every emitted value is normalized to a valid list; the backend additionally returns a 400 (not 500) for structurally invalid filters. - Data Processing → Pipelines showed other vendors' numbers — the status job queried
v11-statistics-*with a tokenizedmatchondataType, sofirewall-sonicwallmatchedfirewall-pfsenseand similar, and read only a single 10-minute document's count. It now reads exactdataType.keywordfor all of the module's data types, sumscountover the last 24 h, resets to 0 when empty, and stops picking an arbitrary data type for multi-filter modules. - Crypto-mining netflow rule false positives — the rule fired on any TCP flow to a mining-pool port, so one-way SYN+ACK probes (132 bytes) to dead IPs correlated into HIGH alerts. It now requires a completed TCP handshake and more than 10 KB transferred in the flow.
- Installer silently rebalanced memory on update when
memory-allocation.jsonwas missing/corrupt, overwriting the operator's distribution. A normal update now refuses to deploy a non-authoritative distribution instead of guessing; the file is written only on fresh install (one-time seed) or explicit--recalculate-memory. - Installer memory profile (#2918): event-processor-manager capped at 4 GB (was 60 GB), backend raised to 8 GB, and the backend JVM given
MaxRAMPercentage=75so it stops OOMing on Log Explorer with large result sets. Runutmstack_installer --recalculate-memoryon existing installs to apply. - web-pdf floor: raised to 1250 MB so headless Chromium doesn't OOM on
printPageat 16 GB hosts. - 39 correlation rules (Palo Alto, Azure, AWS) were silently inactive because their
techniquefield was blank and the backend rejects blank techniques on sync. Each is populated now; they load on boot. - Compliance evidence columns came back empty after the event-bag rename — the stored-query remap covered compact JSON but not the spaced form the UI writes. Both forms are remapped now.
- Compliance PDF export hung on large reports — the web-pdf renderer was printing every row (up to 10k) and running out of memory, and the backend had no HTTP timeout. Exports are capped at 250 rows ("Showing first 250 of M rows") and the backend now times out at 120 s with a 504 instead of spinning forever.
- Coordinate maps on the overview and dashboards were blank — they bucketed on
origin.ip.keyword, which doesn't exist on new (typedip) indices, and the nginx CSP blocked the tile hosts. Maps now bucket onorigin.ip(with a.keywordmulti-field for old indices) and the CSP allows*.tile.openstreetmap.org/*.tile.thunderforest.com. - User Auditor: reads both event-bag generations after the rename; the monthly back-fill no longer jumps ~29 days on the first run after the 1st; the OpenSearch client is built eagerly so the first scheduled scan doesn't NPE.
- Adversary View returned a 500 for alerts stored before the rename — pre-upgrade bags are read with a null guard now.
- NetFlow v9 byte-array ports were mangled (e.g.
22935instead of the real port) anddataSourcekept the:portsuffix. The filter v3.2.0 + agent 11.1.5 decode correctly. - Geolocation data refreshed to MaxMind GeoLite2 City 2026-10-20 + ASN 2026-10-22 (was 2024-08 builds). Notably, the old data mapped some
2a00:8c40:*(Fastly) IPv6 ranges to the US centroid; new data resolves them to Madrid/Canary, eliminating a class of "impossible travel" false alarms. - Event processor / go-sdk: bumped to go-sdk v1.1.38 across all Go modules; the
celplugin's OpenSearch connection regression (silently killing every CEL-dependent rule) is fixed; text-search operators (contains,startsWith,regexMatch, …) now work on object/array fields by searching the raw JSON text. - Backend boot crash caused by a snakeyaml 2.0 bump (
NoSuchMethodErrorin Spring Boot 3.1.5's YAML loader) is reverted; snakeyaml stays at 1.33. - Rule definition sync is limited to system rules, and the previous stored status is preserved across boots.
- Federation: user removal fixed.
- Nginx panel is force-reloaded after updates and the shared key is persisted, so the frontend no longer 401s after an update.
- Agent: spool cleanup enforces a 500-row batch bound and drops pending records past a hard disk cap (5× retention) so a stalled endpoint can't fill the disk.
- Log Explorer:
event.*sub-fields are selectable as columns and filters; the filter picker lists them; the sort control is hidden for flattened bag fields (sorting them was a 400). - Data Sources asset-group pagination SQL typo fixed (missing space before
ORDER BY).
Upgrade notes
- No reindex, no data migration. Old
v11-log-*indices keep theirlogfield and are read alongsideeventby the backend; only new data usesevent. - Custom
log.*content: see Breaking above. Shipped content is migrated; customer-owned filters, rules, and dashboards using the old bag name are the operator's responsibility. - Memory: if you hand-tuned service memory with
docker service update --memory, that tuning is not persisted and the installer will re-applymemory-allocation.jsonon the next update. To make a custom distribution stick, edit/utmstack/updates/memory-allocation.jsonor runutmstack_installer --recalculate-memory. - Disk auto-delete will now remove old raw-log indices when OpenSearch's data disk reaches 85%. If you rely on logs older than a few days, keep the disk comfortably below that threshold or attach more storage.
- Agent must be updated to 11.1.5+ for the NetFlow v9 port fix; the installer ships it in this release.
Full diff: v11.2.16...v11.3.0