Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
655 commits
Select commit Hold shift + click to select a range
6f71afb
feat: update placement attribute to support multiple positions in ale…
mjabascal10 Nov 10, 2025
3ad1001
Merge remote-tracking branch 'origin/release/v11' into release/v11
mjabascal10 Nov 10, 2025
0cf7931
feat: condition builder visibility based on fields availability
mjabascal10 Nov 10, 2025
15a790e
feat: add system owner field to alert response rules and update relat…
mjabascal10 Nov 10, 2025
ab3f986
feat: add systemOwner filter to playbooks component
mjabascal10 Nov 10, 2025
bccd1c6
Merge remote-tracking branch 'origin/release/v11' into release/v11
mjabascal10 Nov 10, 2025
d856b09
feat: add system owner field to alert response rules and update relat…
mjabascal10 Nov 10, 2025
9ef75b3
feat: enhance playbook component with improved layout and functionality
mjabascal10 Nov 10, 2025
587f63d
Merge remote-tracking branch 'origin/release/v11' into release/v11
mjabascal10 Nov 10, 2025
00688f2
feat: enhance playbook component with improved layout and functionality
mjabascal10 Nov 10, 2025
f3f2ab5
feat: enhance playbook component with improved layout and functionality
mjabascal10 Nov 11, 2025
077ada5
feat: add system owner field to alert response rules and update relat…
mjabascal10 Nov 11, 2025
5a5b744
feat: enhance playbook component with improved layout and functionality
mjabascal10 Nov 11, 2025
2da208d
Merge remote-tracking branch 'origin/release/v11' into release/v11
mjabascal10 Nov 11, 2025
d538fa3
Merge remote-tracking branch 'origin/release/v11' into backlog/add-tl…
mjabascal10 Nov 11, 2025
c19bc0f
Merge pull request #1404 from utmstack/backlog/add-tls-connection-opt…
mjabascal10 Nov 11, 2025
17b3011
feat: update agent handling strategy description for clarity and context
mjabascal10 Nov 11, 2025
4ecaac3
feat: update agent handling strategy description for clarity and context
mjabascal10 Nov 11, 2025
42e623e
fix: change PostgreSQL logger level from WARN to ERROR
mjabascal10 Nov 11, 2025
3e3b36c
feat: update log handling and display logic for improved clarity and …
mjabascal10 Nov 11, 2025
53c15f7
Merge remote-tracking branch 'origin/release/v11' into release/v11
mjabascal10 Nov 11, 2025
ece927b
feat: update log filter selection to improve user experience
mjabascal10 Nov 11, 2025
f80bfcb
fix: handle potential null value in audits length check
mjabascal10 Nov 12, 2025
6171530
fix: update filterBySelect method to accept a generic field type
mjabascal10 Nov 12, 2025
0e5321d
feat: update workflows and send to new cm in gcp
Kbayero Nov 12, 2025
0e6f153
Merge branch 'release/v11' of https://github.com/utmstack/UTMStack in…
Kbayero Nov 12, 2025
d2ba49e
feat: include script to compile installer
Kbayero Nov 12, 2025
56d45f1
fix: resolve workflow errors and improve cross-platform compatibility
Kbayero Nov 12, 2025
5cc2ab7
fix problem with agent SIGN KEY
Kbayero Nov 12, 2025
08b3615
feat: implement service to automatically assign asset groups to alerts
mjabascal10 Nov 12, 2025
98f3c01
feat: add asset group fields to alert constants and configuration
mjabascal10 Nov 12, 2025
ef7f47d
Merge pull request #1405 from utmstack/backlog/automatically-assign-a…
mjabascal10 Nov 12, 2025
b679ec6
feat(agent/syslog): add RFC 5424 octet counting framing support and i…
JocLRojas Nov 12, 2025
b5d9568
fix: always update pending versions
Kbayero Nov 13, 2025
e5272f0
Merge branch 'release/v11' of https://github.com/utmstack/UTMStack in…
Kbayero Nov 13, 2025
702bde0
improve v11 changelog
Kbayero Nov 13, 2025
e51b75d
feat: enhance playbook UI and loading behavior, add new alert fields
mjabascal10 Nov 13, 2025
e3f6673
Merge remote-tracking branch 'origin/release/v11' into release/v11
mjabascal10 Nov 13, 2025
c31d6c9
Merge branch 'release/v11' into backlog/add-oauth2-oidc-corporate-aut…
mjabascal10 Nov 13, 2025
2f71955
feat(oauth2): implement corporate authentication with OAuth2 support
mjabascal10 Nov 6, 2025
a2cd1b4
feat(identity-provider): add OAuth2/OpenID Connect provider management
mjabascal10 Nov 13, 2025
f1a56c7
feat(identity-provider): add OAuth2/OpenID Connect provider management
mjabascal10 Nov 13, 2025
a418f77
feat: implement service to automatically assign asset groups to alerts
mjabascal10 Nov 13, 2025
ff92207
feat(identity-provider): add OAuth2/OpenID Connect provider management
mjabascal10 Nov 14, 2025
ba38590
Merge remote-tracking branch 'origin/backlog/add-oauth2-oidc-corporat…
mjabascal10 Nov 14, 2025
be1efde
feat(oauth2): enhance corporate authentication with additional fields…
mjabascal10 Nov 16, 2025
d6cd03e
Merge remote-tracking branch 'origin/backlog/add-oauth2-oidc-corporat…
mjabascal10 Nov 16, 2025
4821977
feat: add CrowdStrike plugin core implementation
JocLRojas Nov 17, 2025
df67d52
feat: add gRPC configuration management for CrowdStrike
JocLRojas Nov 17, 2025
7e9cf7c
feat(oauth2): enhance corporate authentication with additional fields…
mjabascal10 Nov 17, 2025
9f33152
feat(oauth2): enhance corporate authentication with additional fields…
mjabascal10 Nov 17, 2025
3fbd456
feat(identity-provider): add OAuth2/OpenID Connect provider management
mjabascal10 Nov 17, 2025
69e27ec
Merge remote-tracking branch 'origin/backlog/add-oauth2-oidc-corporat…
mjabascal10 Nov 17, 2025
8cf74ea
feat(oauth2): enhance corporate authentication with additional fields…
mjabascal10 Nov 17, 2025
a0b5e36
feat(identity-provider): add OAuth2/OpenID Connect provider management
mjabascal10 Nov 17, 2025
c6dec4d
Merge remote-tracking branch 'origin/backlog/add-oauth2-oidc-corporat…
mjabascal10 Nov 17, 2025
ffb080c
refactor: update version info handling and clean up community module …
mjabascal10 Nov 17, 2025
2e02597
Merge remote-tracking branch 'origin/release/v11' into release/v11
mjabascal10 Nov 17, 2025
ba899a5
Update frontend/src/app/shared/components/auth/login/login.component.ts
mjabascal10 Nov 18, 2025
d2a325a
Update frontend/src/app/shared/components/auth/login-providers/login-…
mjabascal10 Nov 18, 2025
0ab0720
Update backend/src/main/java/com/park/utmstack/config/SecurityConfigu…
mjabascal10 Nov 18, 2025
ac996e2
Update backend/src/main/java/com/park/utmstack/service/idp_provider/I…
mjabascal10 Nov 18, 2025
4dde3a0
Update frontend/src/app/app-management/identity-provider/shared/compo…
mjabascal10 Nov 18, 2025
36e9bd3
Merge remote-tracking branch 'origin/release/v11' into backlog/add-oa…
mjabascal10 Nov 18, 2025
6a55410
feat(oauth2): enhance corporate authentication with additional fields…
mjabascal10 Nov 18, 2025
acc827d
refactor: simplify request structure and improve provider toggle logic
mjabascal10 Nov 18, 2025
ecdf6e3
Merge remote-tracking branch 'origin/backlog/add-oauth2-oidc-corporat…
mjabascal10 Nov 18, 2025
d7076b4
feat(oauth2): implement enterprise version handling for identity prov…
mjabascal10 Nov 18, 2025
e78d40f
feat: add adversary view menu and associated authorities to database
mjabascal10 Nov 18, 2025
5b33cdc
feat: add adversary management module with routing and view components
mjabascal10 Nov 19, 2025
4fa4cea
refactor: remove deprecated standalone plugin architecture
JocLRojas Nov 19, 2025
6f6e0c4
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Nov 19, 2025
979802e
feat: add adversary management module with routing and view components
mjabascal10 Nov 19, 2025
52313fb
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Nov 19, 2025
39c7e14
feat: implement adversary alerts management with new DTOs and service
mjabascal10 Nov 19, 2025
a3d26ad
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Nov 19, 2025
dd982cb
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 20, 2025
5182169
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 20, 2025
f11e784
Merge remote-tracking branch 'origin/backlog/add-sql-query-support-to…
elmilan06 Nov 20, 2025
29f879b
feat: implement adversary alerts graph and service for data retrieval
mjabascal10 Nov 20, 2025
30874e0
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Nov 20, 2025
156ef11
feat: enhance timezone handling by dynamically generating timezone list
mjabascal10 Nov 20, 2025
3a82d52
feat: enhance timezone handling by dynamically generating timezone list
mjabascal10 Nov 20, 2025
9db38cb
feat: add adversary management module with routing and view components
mjabascal10 Nov 19, 2025
02c1b8c
feat: add adversary management module with routing and view components
mjabascal10 Nov 19, 2025
bf30760
feat: add adversary view menu and associated authorities to database
mjabascal10 Nov 18, 2025
7d9a281
feat: implement adversary alerts graph and service for data retrieval
mjabascal10 Nov 20, 2025
3145529
feat: implement adversary alerts management with new DTOs and service
mjabascal10 Nov 19, 2025
d4c90d6
feat: enhance adversary alerts graph layout and styling for improved …
mjabascal10 Nov 20, 2025
0bce8b9
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Nov 20, 2025
b2427b9
feat: enhance adversary alerts graph layout and styling for improved …
mjabascal10 Nov 20, 2025
0c0fcac
Merge remote-tracking branch 'origin/v11' into backlog/add-sql-query-…
elmilan06 Nov 21, 2025
56f422e
fix[bitdefender-plugin]: make StartServer blocking and remove retry loop
Kbayero Nov 21, 2025
22b4625
update macos guide
Kbayero Nov 21, 2025
6f7bfe1
feat: enhance adversary alerts graph layout and styling for improved …
mjabascal10 Nov 21, 2025
77f173a
feat: enhance adversary alerts graph layout and styling for improved …
mjabascal10 Nov 21, 2025
08530f0
feat: implement adversary alerts management with new DTOs and service
mjabascal10 Nov 21, 2025
aebcdc5
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Nov 21, 2025
e3ece31
Merge remote-tracking branch 'origin/v11' into backlog/adversary-view…
mjabascal10 Nov 21, 2025
f99558b
fix: adjust TFA expiration time to use configurable constant
mjabascal10 Nov 21, 2025
484b9c1
feat: conditionally render module card based on module name
mjabascal10 Nov 21, 2025
2b4b256
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 21, 2025
038d5a7
feat: add application version info retrieval functionality
mjabascal10 Nov 24, 2025
555a485
feat: add application version info retrieval functionality
mjabascal10 Nov 24, 2025
f1a44e5
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 24, 2025
64bb9e6
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 24, 2025
721df20
feat: compliance report view component
elmilan06 Nov 24, 2025
e322c20
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 24, 2025
3628272
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 24, 2025
41f3323
feat(saml): implement SAML authentication support with identity provi…
mjabascal10 Nov 25, 2025
826bbbe
feat(saml): implement SAML authentication support with identity provi…
mjabascal10 Nov 25, 2025
c8eb9aa
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Nov 25, 2025
152d247
feat: add application version info retrieval functionality
mjabascal10 Nov 25, 2025
556fcf2
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 25, 2025
1008d39
fix: remove conditional rendering for AS_400 module and filter out in…
mjabascal10 Nov 25, 2025
f98cb0b
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 25, 2025
f3f48e0
feat(saml): enhance SAML authentication success handler to include ro…
mjabascal10 Nov 25, 2025
809d701
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Nov 25, 2025
7f04abc
Merge remote-tracking branch 'origin/backlog/add-sql-query-support-to…
elmilan06 Nov 25, 2025
42a19ad
feat(o365-plugin): add multi-cloud environment support for Microsoft …
JocLRojas Nov 25, 2025
745b463
feat: add exception handling for MethodArgumentNotValidException and …
mjabascal10 Nov 25, 2025
8437b65
fix(o365-plugin): Remove invalid field check and add multi-cloud support
JocLRojas Nov 25, 2025
9f85c83
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 25, 2025
04551b7
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 25, 2025
49c7efd
feat(o365-plugin): add Office 365 cloud environment configuration opt…
mjabascal10 Nov 25, 2025
3ab94f5
Update backend/src/main/resources/config/liquibase/changelog/20251125…
mjabascal10 Nov 25, 2025
5a26b52
Update backend/src/main/java/com/park/utmstack/domain/application_mod…
mjabascal10 Nov 25, 2025
c33cd57
Update backend/src/main/java/com/park/utmstack/domain/application_mod…
mjabascal10 Nov 25, 2025
40d39f6
Merge pull request #1432 from utmstack/backlog/office-365-cloud-envir…
mjabascal10 Nov 25, 2025
8ca7481
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 26, 2025
a3bc6d4
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 25, 2025
90af4d5
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 25, 2025
5bcd78c
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 26, 2025
f809c02
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 26, 2025
8ef1d24
fix: update file permissions from 777 to 755 for security improvements
osmontero Nov 26, 2025
320a757
Merge branch 'backlog/update-agent-permissions-to-755' into release/v…
osmontero Nov 26, 2025
8e9d7fa
feat(azure plugin): enhance Azure cloud detection and connection vali…
yllada Nov 26, 2025
782793e
feat(o365_validation-modules-config): add Management API validation a…
JocLRojas Nov 26, 2025
632401f
Merge branch 'release/v11.0.2' of https://github.com/utmstack/UTMStac…
JocLRojas Nov 26, 2025
be82425
feat(header): integrate version info display and update logic
mjabascal10 Nov 26, 2025
26e1ea0
refactor: rename UtmStackConnectionService to ModuleConfigurationVali…
mjabascal10 Nov 26, 2025
f67de3f
feat(exception-handling): add ApiException class and global exception…
mjabascal10 Nov 26, 2025
023aced
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 27, 2025
2038d1d
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Nov 27, 2025
706a1db
Merge remote-tracking branch 'origin/backlog/add-sql-query-support-to…
elmilan06 Nov 27, 2025
3cafdda
Merge remote-tracking branch 'origin/backlog/add-sql-query-support-to…
elmilan06 Nov 27, 2025
ace938a
feat(int-generic-group-config): improve searchable option based on co…
mjabascal10 Nov 27, 2025
8582e3e
feat(int-generic-group-config): improve searchable option based on co…
mjabascal10 Nov 27, 2025
8c4317a
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 27, 2025
17f2638
fix(modules-config): disable CROWDSTRIKE module not implemented in ba…
JocLRojas Nov 27, 2025
483f9a0
refactor(plugins): standardize logging with catcher
JocLRojas Nov 27, 2025
dcbb783
feat(saml): update identity provider configuration to include metadat…
mjabascal10 Nov 28, 2025
e0c5e70
style(dashboard): adjust padding and layout for improved UI consistency
mjabascal10 Nov 28, 2025
0379495
fix: optimize cloud detection logic in connection string parsing
yllada Nov 28, 2025
e70d0ee
feat(elastic-filter-time): enhance time filter functionality and upda…
mjabascal10 Nov 28, 2025
c971157
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Nov 28, 2025
b97f5b3
Merge branch 'release/v11.0.2' into backlog/add-saml-oidc-corporate-a…
mjabascal10 Nov 28, 2025
a7355fc
Merge remote-tracking branch 'origin/release/v11.0.2' into backlog/ad…
mjabascal10 Nov 28, 2025
bbba7fe
feat(azure): extract individual records from Azure Event Hub logs
yllada Nov 28, 2025
cc8eb69
fix(modules-config): remove gin default logger middleware to eliminat…
JocLRojas Nov 28, 2025
16ad2e1
refactor(azure-filter): deleted 'Expand log.records' data to improve …
JocLRojas Nov 28, 2025
5071a01
refactor(gcp-filter): deleted 'Expand jsonPayload.structuredRdata' da…
JocLRojas Nov 28, 2025
92cd347
update the version of the Azure and GCP filters
JocLRojas Nov 28, 2025
8bb9dea
feat(saml): update identity provider configuration to include metadat…
mjabascal10 Nov 28, 2025
caec313
feat(provider): add SAML 2.0 support with metadata URL and service pr…
mjabascal10 Nov 28, 2025
f600fbc
feat(saml): enhance identity provider creation with multipart form da…
mjabascal10 Nov 29, 2025
a71b25f
feat(provider): add SAML 2.0 support with metadata URL and service pr…
mjabascal10 Nov 29, 2025
0a2343d
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Nov 29, 2025
da3bc60
fix(totp): prevent potential error by checking subscription before un…
mjabascal10 Nov 29, 2025
15e31cd
style(totp): comment out unused email resend container for cleaner code
mjabascal10 Dec 1, 2025
2f43013
style(utm-code-view): add word-break class to code element for better…
mjabascal10 Dec 1, 2025
fdae307
feat(filters): add Azure and GCP filters with updated field mappings …
mjabascal10 Dec 1, 2025
3a9ade8
Merge remote-tracking branch 'origin/v11' into release/v11.0.2
mjabascal10 Dec 1, 2025
d2e3197
Merge remote-tracking branch 'origin/release/v11.0.2' into release/v1…
mjabascal10 Dec 1, 2025
968c9c5
refactor(ModuleSocAi): remove unused getName method for cleaner code
mjabascal10 Dec 1, 2025
dfc5ac8
fix(deployment-pipeline): update tag pattern for v10 to support seman…
mjabascal10 Dec 1, 2025
bb2411a
chore(changelog): update release notes for UTMStack v11.0.3 with fixe…
mjabascal10 Dec 1, 2025
cbeb14c
chore(changelog): update release notes for UTMStack v11.0.3 with fixe…
mjabascal10 Dec 1, 2025
c22ae16
Merge remote-tracking branch 'origin/release/v11.0.2' into backlog/ad…
mjabascal10 Dec 1, 2025
5eb26af
Merge remote-tracking branch 'origin/v11' into backlog/add-saml-oidc-…
mjabascal10 Dec 1, 2025
2a55dee
feat(authentication): add SAML and OIDC support with validation for p…
mjabascal10 Dec 1, 2025
0beb10e
chore(master.xml): remove outdated environment integration and filter…
mjabascal10 Dec 1, 2025
6ba5e3c
feat(identity-provider): enhance provider management with file upload…
mjabascal10 Dec 1, 2025
6ce7c34
feat(authentication): enhance SAML and OIDC support with file validat…
mjabascal10 Dec 1, 2025
cc14c3b
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Dec 1, 2025
e98de63
feat(identity-provider): enhance provider management with file upload…
mjabascal10 Dec 1, 2025
f637626
feat(identity-provider): enhance provider management with file upload…
mjabascal10 Dec 1, 2025
08c91b9
Merge remote-tracking branch 'origin/v11' into backlog/adversary-view…
mjabascal10 Dec 1, 2025
2117171
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Dec 1, 2025
b2234b4
Refactor adversary alerts graph component and update no data display
mjabascal10 Dec 1, 2025
b564c62
Remove redundant getName() method override in ModuleSocAi
mjabascal10 Dec 1, 2025
5908bc4
Merge remote-tracking branch 'origin/backlog/adversary-view-with-hier…
mjabascal10 Dec 1, 2025
d6b355f
Update frontend/src/app/data-management/alert-management/shared/compo…
mjabascal10 Dec 1, 2025
b68689e
Merge pull request #1486 from utmstack/backlog/adversary-view-with-hi…
mjabascal10 Dec 1, 2025
fb3deb6
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Dec 1, 2025
f68a622
feat: add SQL query support to LogExplorer via OpenSearch
elmilan06 Dec 1, 2025
29feb45
Merge remote-tracking branch 'origin/backlog/add-sql-query-support-to…
elmilan06 Dec 1, 2025
2f2a547
Merge remote-tracking branch 'origin/release/v11.0.4' into backlog/ad…
elmilan06 Dec 2, 2025
ca57966
feat: enhance LogExplorer with SQL query support and custom keyword s…
elmilan06 Dec 2, 2025
78de7fb
Update backend/src/main/java/com/park/utmstack/service/dto/elastic/Sq…
mjabascal10 Dec 2, 2025
6ee8ddf
Merge pull request #1489 from utmstack/backlog/add-sql-query-support-…
mjabascal10 Dec 2, 2025
9eff950
Merge remote-tracking branch 'origin/release/v11.0.4' into backlog/ad…
mjabascal10 Dec 2, 2025
4e44375
feat: enhance identity provider management with role requirements and…
mjabascal10 Dec 2, 2025
5d08296
feat: update login components for improved styling and provider text
mjabascal10 Dec 2, 2025
402ee6c
feat: add loading screen with spinner and enhance app initialization
mjabascal10 Dec 2, 2025
a92e9ff
feat(agents): update agent guide with Kali Linux tab and enhance inst…
mjabascal10 Dec 2, 2025
684dcc1
feat: add SAML OIDC corporate authentication configuration fields
mjabascal10 Dec 3, 2025
82882c2
feat: add SAML OIDC corporate authentication support with SP entity I…
mjabascal10 Dec 3, 2025
0471c16
feat(api-keys): implement API key management with creation, retrieval…
mjabascal10 Dec 3, 2025
efc5d5e
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Dec 3, 2025
d3f7e8a
feat: integrate app version management and enterprise feature directive
mjabascal10 Dec 4, 2025
7d40163
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Dec 4, 2025
09284df
feat: enhance SAML2 login handlers with role validation and logging
mjabascal10 Dec 4, 2025
944a709
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Dec 4, 2025
6e90beb
feat: enhance SAML2 login handlers with role validation and logging
mjabascal10 Dec 4, 2025
b59706f
feat: enhance SAML2 login handlers with role validation and logging
mjabascal10 Dec 4, 2025
6efe00f
feat: integrate app version management and enterprise feature directive
mjabascal10 Dec 4, 2025
e3428a5
Merge remote-tracking branch 'origin/backlog/add-saml-oidc-corporate-…
mjabascal10 Dec 4, 2025
cb99274
feat: update API route for version checking to check-for-updates
mjabascal10 Dec 4, 2025
0ccffd5
Merge pull request #1495 from utmstack/backlog/add-saml-oidc-corporat…
mjabascal10 Dec 4, 2025
c388e9a
feat: remove client secret display from provider details
mjabascal10 Dec 4, 2025
32aa5cd
fix: update application version file path and improve pagination offs…
mjabascal10 Dec 4, 2025
5c19f95
fix: update application version file path and improve pagination offs…
mjabascal10 Dec 4, 2025
3d94542
fix: update opensearch-connector version to 1.0.4
mjabascal10 Dec 4, 2025
6e71649
feat: enhance enterprise module directive to support dynamic menu nam…
mjabascal10 Dec 5, 2025
9a3b635
Merge remote-tracking branch 'origin/release/v11.1.0' into release/v1…
mjabascal10 Dec 5, 2025
bde0e3b
fix: streamline loading state management in playbook service and clea…
mjabascal10 Dec 5, 2025
33ec951
fix: update UtmModuleRepository and UtmModuleService to use Optional …
mjabascal10 Dec 10, 2025
2c1fe57
feat: add detail view for alerts in echoes component and improve aler…
mjabascal10 Dec 10, 2025
e45cc54
fix: improve error handling in CleanCountedLogs to create default dat…
yllada Dec 10, 2025
0f2d776
feat: enhance adversary alerts graph with dynamic graphic elements an…
mjabascal10 Dec 10, 2025
161f0a5
Update frontend/src/app/data-management/alert-management/shared/compo…
mjabascal10 Dec 11, 2025
2ed23fa
Update frontend/src/app/data-management/alert-management/shared/compo…
mjabascal10 Dec 11, 2025
c988453
feat: enhance detail view for alerts in echoes component and improve …
mjabascal10 Dec 11, 2025
0da8511
Merge remote-tracking branch 'origin/backlog/add-detail-view-for-echo…
mjabascal10 Dec 11, 2025
8315c46
Merge pull request #1507 from utmstack/backlog/add-detail-view-for-ec…
elmilan06 Dec 11, 2025
379768e
feat: enhance adversary alerts graph with dynamic graphic elements an…
mjabascal10 Dec 10, 2025
15c9cdc
feat: enhance adversary alerts graph with dynamic graphic elements an…
mjabascal10 Dec 11, 2025
2523348
refactor: reorganize imports in adversary alerts graph component for …
mjabascal10 Dec 11, 2025
72d77bd
Merge remote-tracking branch 'origin/backlog/enhance-adversary-alerts…
mjabascal10 Dec 11, 2025
a0b618c
refactor: reorganize imports in adversary alerts graph component for …
mjabascal10 Dec 11, 2025
91003e7
Merge remote-tracking branch 'origin/v11' into release/v11.1.1
mjabascal10 Dec 11, 2025
9dc1296
chore: update changelog for UTMStack v11.1.1 release, add fixes and f…
mjabascal10 Dec 11, 2025
e08e1cd
fix: handle version info loading error gracefully
mjabascal10 Dec 11, 2025
4b72826
feat: refactor module update process to use ModuleDTO and enhance dec…
mjabascal10 Dec 11, 2025
8530f95
Merge remote-tracking branch 'origin/release/v11.1.1' into release/v1…
mjabascal10 Dec 11, 2025
318b5c5
feat: enhance adversary alerts graph with improved event handling and…
mjabascal10 Dec 12, 2025
4d178b1
Merge pull request #1512 from utmstack/backlog/enhance-adversary-aler…
elmilan06 Dec 12, 2025
87639ef
feat: add SAML2 login endpoint to front-end configuration
mjabascal10 Dec 12, 2025
456e85b
Merge remote-tracking branch 'origin/release/v11.1.1' into release/v1…
mjabascal10 Dec 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# UTMStack 11.1.0
# UTMStack 11.1.1

These are the release notes for **UTMStack v11.1.0**, highlighting new features, bug fixes, and performance improvements.
These are the release notes for **UTMStack v11.1.1**, highlighting new features, bug fixes, and performance improvements.

## Features
## Fixes
- Improved the module activation and deactivation process to handle missing modules more robustly and prevent errors when activating integrations.

- Introduced SQL query support in LogExplorer, enabling users to execute SQL queries on OpenSearch indices directly from the user interface.
- Added an interactive Adversary View to the Threat Management module, providing a graphical, filterable visualization of relationships between Adversaries, their generated Alerts, and associated Echoes.
## Features
- Enabled inline expand/collapse functionality for alert echo rows.
12 changes: 10 additions & 2 deletions agent/logservice/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,16 @@ func (l *LogProcessor) CleanCountedLogs() {
for range ticker.C {
dataRetention, err := GetDataRetention()
if err != nil {
utils.Logger.ErrorF("error getting data retention: %s", err)
continue
utils.Logger.ErrorF("error getting data retention: %s, creating default retention file", err)
if err := SetDataRetention(""); err != nil {
utils.Logger.ErrorF("error creating default data retention: %s", err)
continue
}
dataRetention, err = GetDataRetention()
if err != nil {
utils.Logger.ErrorF("error reading newly created data retention: %s", err)
continue
}
}
l.db.Lock()
_, err = l.db.DeleteOld(&models.Log{}, dataRetention)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.park.utmstack.domain.application_modules.UtmModule;
import com.park.utmstack.domain.application_modules.UtmModuleGroup;
import com.park.utmstack.domain.application_modules.enums.ModuleName;
import com.park.utmstack.service.dto.application_modules.ModuleDTO;
import com.park.utmstack.service.dto.application_modules.UtmModuleMapper;
import com.park.utmstack.service.web_clients.rest_template.RestTemplateService;
import com.park.utmstack.util.CipherUtil;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -34,7 +36,7 @@ public class EventProcessorManagerService {
System.getenv(Constants.ENV_EVENT_PROCESSOR_HOST) + ":" +
System.getenv(Constants.ENV_EVENT_PROCESSOR_PORT);

public void updateModule(UtmModule module) {
public void updateModule(ModuleDTO module) {
final String ctx = CLASSNAME + ".updateModule";

String url = UriComponentsBuilder
Expand All @@ -60,10 +62,19 @@ public void updateModule(UtmModule module) {

public void decryptModuleConfig (UtmModule module){
Set<UtmModuleGroup> groups = module.getModuleGroups();
decryptModuleGroupsConfig(groups, module.getModuleName());
}

public void decryptModuleConfig (ModuleDTO moduleDTO){
Set<UtmModuleGroup> groups = moduleDTO.getModuleGroups();
decryptModuleGroupsConfig(groups, moduleDTO.getModuleName());
}

private void decryptModuleGroupsConfig(Set<UtmModuleGroup> groups, ModuleName moduleName) {
groups.forEach((gp) -> {
gp.getModuleGroupConfigurations().forEach((gpc) -> {
if ((gpc.getConfDataType().equals(Constants.CONF_TYPE_PASSWORD) && StringUtils.hasText(gpc.getConfValue()))
|| (gpc.getConfDataType().equals(Constants.CONF_TYPE_FILE) && StringUtils.hasText(gpc.getConfValue())) && typeFileNeedsDecryptList.contains(module.getModuleName())) {
|| (gpc.getConfDataType().equals(Constants.CONF_TYPE_FILE) && StringUtils.hasText(gpc.getConfValue())) && typeFileNeedsDecryptList.contains(moduleName)) {
gpc.setConfValue(CipherUtil.decrypt(gpc.getConfValue(), System.getenv(Constants.ENV_ENCRYPTION_KEY)));
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;


/**
Expand All @@ -19,8 +20,8 @@
@Repository
public interface UtmModuleRepository extends JpaRepository<UtmModule, Long>, JpaSpecificationExecutor<UtmModule> {

@EntityGraph(attributePaths = {"moduleGroups", "moduleGroups.moduleGroupConfigurations"})
UtmModule findByServerIdAndModuleName(Long serverId, ModuleName shortName);
@EntityGraph(attributePaths = {"server", "filters", "moduleGroups", "moduleGroups.moduleGroupConfigurations"})
Optional<UtmModule> findByServerIdAndModuleName(Long serverId, ModuleName shortName);

Integer countAllByModuleNameAndModuleActiveIsTrue(ModuleName shortName);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
import com.park.utmstack.repository.application_modules.UtmModuleRepository;
import com.park.utmstack.event_processor.EventProcessorManagerService;
import com.park.utmstack.util.CipherUtil;
import com.park.utmstack.util.exceptions.ApiException;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.SerializationUtils;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
Expand Down Expand Up @@ -53,11 +54,11 @@ public void createConfigurationKeys(List<UtmModuleGroupConfiguration> keys) thro
* @param keys List of configuration keys to save
* @throws Exception In case of any error
*/
public void updateConfigurationKeys(Long moduleId, List<UtmModuleGroupConfiguration> keys) throws Exception {
public UtmModule updateConfigurationKeys(Long moduleId, List<UtmModuleGroupConfiguration> keys) throws Exception {
final String ctx = CLASSNAME + ".updateConfigurationKeys";
try {
if (CollectionUtils.isEmpty(keys))
return;
throw new ApiException("No configuration keys were provided to update", HttpStatus.BAD_REQUEST);
for (UtmModuleGroupConfiguration key : keys) {
if (key.getConfRequired() && !StringUtils.hasText(key.getConfValue()))
throw new Exception(String.format("No value was found for required configuration: %1$s (%2$s)", key.getConfName(), key.getConfKey()));
Expand All @@ -67,14 +68,14 @@ public void updateConfigurationKeys(Long moduleId, List<UtmModuleGroupConfigurat
moduleConfigurationRepository.saveAll(keys);

List<ModuleName> needRestartModules = Arrays.asList(ModuleName.AWS_IAM_USER, ModuleName.AZURE,
ModuleName.GCP, ModuleName.SOPHOS);
ModuleName.GCP, ModuleName.SOPHOS);

moduleRepository.findById(moduleId).ifPresent(module -> {
module.setNeedsRestart(needRestartModules.contains(module.getModuleName()));
moduleRepository.save(module);
UtmModule detached = SerializationUtils.clone(module);
eventProcessorManagerService.updateModule(detached);
});
return moduleRepository.findById(moduleId)
.map(module -> {
module.setNeedsRestart(needRestartModules.contains(module.getModuleName()));
return moduleRepository.save(module);
})
.orElseThrow(() -> new ApiException(String.format("Module with ID %1$s not found", moduleId), HttpStatus.NOT_FOUND));
} catch (Exception e) {
throw new Exception(ctx + ": " + e.getMessage());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@
import com.park.utmstack.repository.UtmModuleGroupRepository;
import com.park.utmstack.repository.application_modules.UtmModuleRepository;
import com.park.utmstack.service.UtmMenuService;
import com.park.utmstack.event_processor.EventProcessorManagerService;
import com.park.utmstack.service.dto.application_modules.ModuleActivationDTO;
import com.park.utmstack.service.index_pattern.UtmIndexPatternService;
import com.park.utmstack.service.logstash_filter.UtmLogstashFilterService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.SerializationUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
Expand All @@ -24,7 +22,6 @@

import java.util.List;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Optional;

/**
Expand All @@ -43,7 +40,6 @@ public class UtmModuleService {
private final UtmIndexPatternService indexPatternService;
private final UtmLogstashFilterService logstashFilterService;
private final UtmModuleGroupRepository moduleGroupRepository;
private final EventProcessorManagerService eventProcessorManagerService;


/**
Expand All @@ -56,30 +52,29 @@ public class UtmModuleService {
public UtmModule activateDeactivate(ModuleActivationDTO moduleActivationDTO) {
final String ctx = CLASSNAME + ".activateDeactivate";

long serverId = moduleActivationDTO.getServerId();
ModuleName nameShort = moduleActivationDTO.getModuleName();
boolean activationStatus = moduleActivationDTO.getActivationStatus();
long serverId = moduleActivationDTO.getServerId();
ModuleName nameShort = moduleActivationDTO.getModuleName();
boolean activationStatus = moduleActivationDTO.getActivationStatus();

UtmModule module = moduleRepository.findByServerIdAndModuleName(serverId, nameShort);
return moduleRepository.findByServerIdAndModuleName(serverId, nameShort)
.map(module -> {
module.setModuleActive(activationStatus);
module = moduleRepository.save(module);

if (Objects.isNull(module))
throw new NoSuchElementException(String.format("Definition of the module %1$s not found for the server ID %2$s", nameShort.name(), serverId));
List<ModuleName> nonRemovableConf = List.of(ModuleName.SOC_AI);

module.setModuleActive(activationStatus);
module = moduleRepository.save(module);
if (!activationStatus && !nonRemovableConf.contains(nameShort))
moduleGroupRepository.deleteAllByModuleId(module.getId());

List<ModuleName> nonRemovableConf = List.of(ModuleName.SOC_AI);
enableDisableModuleMenus(nameShort, activationStatus);
enableDisableModuleIndexPatterns(nameShort, activationStatus);
enableDisableModuleFilter(nameShort, activationStatus);

if (!activationStatus && !nonRemovableConf.contains(nameShort))
moduleGroupRepository.deleteAllByModuleId(module.getId());

enableDisableModuleMenus(nameShort, activationStatus);
enableDisableModuleIndexPatterns(nameShort, activationStatus);
enableDisableModuleFilter(nameShort, activationStatus);
UtmModule detached = SerializationUtils.clone(module);
eventProcessorManagerService.updateModule(detached);

return module;
return module;
})
.orElseThrow(() -> new NoSuchElementException(
String.format("Definition of the module %1$s not found for the server ID %2$s", nameShort.name(), serverId)
));
}

private void enableDisableModuleMenus(ModuleName nameShort, Boolean activationStatus) {
Expand Down Expand Up @@ -186,11 +181,12 @@ public Optional<UtmModule> findOne(Long id) {

public UtmModule findByServerIdAndModuleName(Long serverId, ModuleName shortName) {
final String ctx = CLASSNAME + ".findByServerIdAndModuleName";
try {
return moduleRepository.findByServerIdAndModuleName(serverId, shortName);
} catch (Exception e) {
throw new RuntimeException(ctx + ": " + e.getMessage());
}

return moduleRepository.findByServerIdAndModuleName(serverId, shortName)
.orElseThrow(() -> new NoSuchElementException(
String.format("%s: The module %s not found for the server ID %s", ctx, shortName.name(), serverId)
));

}

public boolean isModuleActive(ModuleName shortName) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@

import com.park.utmstack.aop.logging.AuditEvent;
import com.park.utmstack.domain.application_events.enums.ApplicationEventType;
import com.park.utmstack.domain.application_modules.UtmModule;
import com.park.utmstack.domain.application_modules.UtmModuleGroupConfiguration;
import com.park.utmstack.event_processor.EventProcessorManagerService;
import com.park.utmstack.service.application_events.ApplicationEventService;
import com.park.utmstack.service.application_modules.UtmModuleGroupConfigurationService;
import com.park.utmstack.service.dto.application_modules.GroupConfigurationDTO;
import com.park.utmstack.service.dto.application_modules.ModuleDTO;
import com.park.utmstack.service.dto.application_modules.UtmModuleMapper;
import com.park.utmstack.web.rest.util.HeaderUtil;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
Expand All @@ -27,6 +31,8 @@ public class UtmModuleGroupConfigurationResource {
private final Logger log = LoggerFactory.getLogger(UtmModuleGroupConfigurationResource.class);
private final UtmModuleGroupConfigurationService moduleGroupConfigurationService;
private final ApplicationEventService applicationEventService;
private final UtmModuleMapper utmModuleMapper;
private final EventProcessorManagerService eventProcessorManagerService;


@PutMapping("/module-group-configurations/update")
Expand All @@ -39,7 +45,10 @@ public class UtmModuleGroupConfigurationResource {
public ResponseEntity<Void> updateConfiguration(@Valid @RequestBody GroupConfigurationDTO body) {
final String ctx = CLASSNAME + ".updateConfiguration";
try {
moduleGroupConfigurationService.updateConfigurationKeys(body.getModuleId(), body.getKeys());
UtmModule module = moduleGroupConfigurationService.updateConfigurationKeys(body.getModuleId(), body.getKeys());
ModuleDTO moduleDTO = utmModuleMapper.toDto(module, false);
eventProcessorManagerService.updateModule(moduleDTO);

return ResponseEntity.ok().build();
} catch (Exception e) {
String msg = ctx + ": " + e.getMessage();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,10 @@
import com.park.utmstack.service.application_modules.UtmModuleQueryService;
import com.park.utmstack.service.application_modules.UtmModuleService;
import com.park.utmstack.event_processor.EventProcessorManagerService;
import com.park.utmstack.service.dto.application_modules.CheckRequirementsResponse;
import com.park.utmstack.service.dto.application_modules.ModuleActivationDTO;
import com.park.utmstack.service.dto.application_modules.ModuleDTO;
import com.park.utmstack.service.dto.application_modules.UtmModuleCriteria;
import com.park.utmstack.service.dto.application_modules.*;
import com.park.utmstack.util.ResponseUtil;
import com.park.utmstack.web.rest.util.PaginationUtil;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
Expand All @@ -48,8 +43,8 @@ public class UtmModuleResource {
private final UtmModuleQueryService utmModuleQueryService;
private final ApplicationEventService eventService;
private final UtmServerRepository utmServerRepository;
// List of configurations of type 'file' that needs content decryption
private final EventProcessorManagerService eventProcessorManagerService;
private final UtmModuleMapper utmModuleMapper;



Expand All @@ -60,14 +55,19 @@ public class UtmModuleResource {
successMessage = "Module activated/deactivated successfully"
)
@PutMapping("/utm-modules/activateDeactivate")
public ResponseEntity<UtmModule> activateDeactivate(@RequestParam Long serverId,
public ResponseEntity<ModuleDTO> activateDeactivate(@RequestParam Long serverId,
@RequestParam ModuleName nameShort,
@RequestParam Boolean activationStatus) {
return ResponseEntity.ok(moduleService.activateDeactivate(ModuleActivationDTO.builder()
.serverId(serverId)
.moduleName(nameShort)
.activationStatus(activationStatus)
.build()));

UtmModule module = moduleService.activateDeactivate(ModuleActivationDTO.builder()
.serverId(serverId)
.moduleName(nameShort)
.activationStatus(activationStatus)
.build());
ModuleDTO moduleDTO = utmModuleMapper.toDto(module, false);
eventProcessorManagerService.updateModule(moduleDTO);

return ResponseEntity.ok(moduleDTO);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class="d-flex flex-column h-100 m-h-0 overflow-auto">
<div class="d-flex flex-column h-100 m-h-0 overflow-auto chart-container">
<div class="flex-grow-1 h-100">
<div echarts
[options]="option"
Expand All @@ -9,3 +9,26 @@
</div>
</div>

<div *ngIf="viewAlertDetail" class="utm-right-container">
<div (click)="closeDetail()" class="overlay overlay-lg col-md-6"></div>
<div class="card utm-right-action utm-right-action-lg">
<div class="title d-flex justify-content-between align-items-center border-bottom-1
border-bottom-grey-100 p-3 ">
<h6 class="card-title pb-0 mb-0 text-blue-800 font-weight-light">
{{ alertDetail.name }}
</h6>
<div class="d-flex flex-row align-items-center gap-2">
<app-alert-logs-related-action [logs]="alertDetail.events"></app-alert-logs-related-action>
<button (click)="closeDetail()" aria-label="Close"
class="" type="button">
<div class="close-icon"></div>
</button>
</div>
</div>
<app-alert-view-detail [alert]="alertDetail"
[isEcho] = "true"
[hideEmptyField]= "true"
[dataType]="EventDataTypeEnum.ALERT">
</app-alert-view-detail>
</div>
</div>
Loading