Commit Graph

2805 Commits

Author SHA1 Message Date
Jan Eitzinger
d74ae77c8e Merge pull request #553 from ClusterCockpit/release/v1.5
Release/v1.5
2026-06-04 20:33:22 +02:00
6cfa511348 Update release notes
Entire-Checkpoint: 14328c112325
2026-06-04 20:19:09 +02:00
3bef199cbe Regenerate GraphQL 2026-06-04 20:12:27 +02:00
16942f55a0 Fix medium-severity issues from follow-up security audit
Addresses the remaining medium findings from the second-pass audit:

- DoS hardening: bound GraphQL query cost with FixedComplexityLimit, and
  reject non-positive items-per-page / page values so uint64 conversion
  cannot underflow into an unbounded LIMIT/OFFSET. The -1 "load all"
  sentinel stays valid for dashboards; REST now returns 400 for bad input.

- Security headers: add X-Content-Type-Options, X-Frame-Options,
  Referrer-Policy and a conservative CSP (frame-ancestors/object-src/
  base-uri) that hardens against clickjacking and base-tag injection
  without restricting the self-hosted SPA's inline scripts.

- Stored XSS: render job.metaData.message as escaped text instead of
  {@html ...} in Job.root and JobFootprint, preserving line breaks via
  white-space: pre-wrap.

- SQL injection hardening: parameterize the tag-scope IN list and the
  manager project subquery in CountTags instead of interpolating
  user.Username / user.Projects (externally sourced via OIDC/LDAP).

- CSRF defense-in-depth: reject cross-site state-changing requests via
  Sec-Fetch-Site, failing open for non-browser clients, on top of the
  existing SameSite=Lax session cookie.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: de7d47a85c7c
2026-06-04 20:08:41 +02:00
6d86690c76 Fix critical issues from follow-up security audit
A second-pass audit surfaced three severe issues missed by the previous
review, each a sibling code path of a bug class that was only partially
fixed before:

- auth: JWT session login (jwtSession.go) registered its authenticator
  even when CROSS_LOGIN_JWT_HS512_KEY was unset, leaving an empty HMAC
  key. golang-jwt verifies any HS256/HS512 signature against an empty
  key, allowing unauthenticated admin token forgery. Init() now refuses
  to register without a key, with a defense-in-depth empty-key guard in
  the keyfunc.

- repository: metric names from GraphQL ([String!]) were interpolated
  raw into json_extract(footprint, "$.<name>") SQL. SQLite parses
  double-quoted strings as literals, enabling SQL injection by any
  authenticated user. Validate metric names against ^[a-zA-Z0-9_]+$ in
  jobsMetricStatisticsHistogram and buildFloatJSONCondition.

- metricstore: cluster/host line-protocol tags flowed unvalidated into
  path.Join(RootDir, cluster, host) for checkpoint/WAL files, allowing
  arbitrary file write outside the checkpoint root via NATS
  (unauthenticated) or POST /api/write. Reject path-traversal sequences
  in DecodeLine before the tags become path components.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: b57246993ec1
2026-06-04 19:07:20 +02:00
6f7e262f3f Fix issues after security audit
Entire-Checkpoint: bc18358a9343
2026-06-04 18:33:30 +02:00
58ead40112 Merge branch 'main' into release/v1.5 2026-06-04 17:56:41 +02:00
0020f63582 Rebuild Swagger 2026-06-04 17:56:32 +02:00
Jan Eitzinger
cdb4f06fea Merge pull request #552 from ClusterCockpit/fix/add-user-edit-api
Reintroduce user update api path
2026-06-04 08:27:23 +02:00
Christoph Kluge
1ebde74774 Adapt swagger definitions of user update endpoint 2026-06-02 17:58:15 +02:00
Christoph Kluge
40722d72f5 fix name in doc comment 2026-06-02 16:48:23 +02:00
Christoph Kluge
f4384668e5 fix name comment 2026-06-02 16:47:29 +02:00
Christoph Kluge
e06982db00 reintroduce user update api path 2026-06-02 16:34:46 +02:00
Jan Eitzinger
0bc0f29f0a Merge pull request #551 from ClusterCockpit/release/v1.5
Release/v1.5
2026-05-31 07:59:06 +02:00
8bf5f67bb2 Update dependencies 2026-05-29 16:44:05 +02:00
Jan Eitzinger
994b89a378 Merge pull request #550 from ClusterCockpit/fix/metricstore-stype
Metricstore: Fix parsing of metric subtypes (key stype)
2026-05-28 15:24:06 +02:00
Jan Eitzinger
d536d3802d Merge pull request #549 from ClusterCockpit/feature/add_subcluster_filter
feat: add subCluster filter to filter component
2026-05-28 15:21:02 +02:00
77fdcddc26 Prepare Release 1.5.4
Entire-Checkpoint: 535c1737ceb2
2026-05-12 12:00:05 +02:00
Thomas Roehl
c76219651e Fix parsing of metric subtypes (key stype) 2026-05-04 18:10:01 +02:00
6397f1eaae Merge branch 'release/v1.5' into feature/add_subcluster_filter 2026-04-24 11:55:28 +02:00
Christoph Kluge
4c59aee304 feat: add subCluster filter to filter component 2026-04-24 11:43:42 +02:00
2ca3285ccd Upgrade dependencies 2026-04-24 09:09:11 +02:00
86bc14b610 Merge branch 'main' into release/v1.5 2026-04-24 09:01:35 +02:00
Jan Eitzinger
196f659a50 Merge pull request #547 from ClusterCockpit/546_fix_roofline_legends
fix: change to fixed legend coordinates instead of dynamic placement
2026-04-24 09:01:06 +02:00
Christoph Kluge
ac7865d597 fix: change to fixed legend coordinates instead of dynamic placement 2026-04-15 11:12:07 +02:00
e45b5f70e3 fix: Changes in frontend ui 2026-04-03 05:13:07 +02:00
Jan Eitzinger
3001086647 Merge pull request #544 from ClusterCockpit/hotfix
Update ReleaseNotes
v1.5.3
2026-04-01 14:02:14 +02:00
573f7d144b Update ReleaseNotes
Entire-Checkpoint: cd686356ea80
2026-04-01 13:58:26 +02:00
Jan Eitzinger
38cbc33fb0 Merge pull request #543 from ClusterCockpit/hotfix
Hotfix
2026-04-01 13:53:50 +02:00
43807ae12a feat: Also submit projects array via oidc token
Entire-Checkpoint: 2064482d97e1
2026-04-01 13:46:21 +02:00
31a8a11f1b fix: Always request oidc roles from token
Entire-Checkpoint: bfdbffd7aae0
2026-04-01 12:36:37 +02:00
84fe61b3e0 fix: allow all role changes on SyncUser and UpdateUser callback
Entire-Checkpoint: 496bace0120e
2026-04-01 11:09:50 +02:00
1f04e0a1ce fix: oidc role extraction
Entire-Checkpoint: bbe9ad3cf817
2026-04-01 11:03:19 +02:00
Jan Eitzinger
a101f215dc Merge pull request #542 from ClusterCockpit/hotfix
Hotfix
2026-03-31 07:23:14 +02:00
641dc0e3b8 Run gofumpt 2026-03-30 16:49:27 +02:00
b734c1a92a And another update
Entire-Checkpoint: 9bb66d18af6d
2026-03-30 16:48:12 +02:00
c5fe3c5cd9 Update golangci settings
Entire-Checkpoint: b9544ef2c54f
2026-03-30 16:46:30 +02:00
e2910b18b3 Fix golangci config
Entire-Checkpoint: 1a908bd95cfa
2026-03-30 16:29:15 +02:00
ed236ec539 Add Make targets for formatting and linting
Add configuration and document usage in README

Entire-Checkpoint: 53425877e242
2026-03-30 16:23:12 +02:00
82c514b11a Ease samesite cookie settings
Entire-Checkpoint: 2fe286e23a4a
2026-03-30 16:10:15 +02:00
66707bbf15 Update metricstore documentation
Entire-Checkpoint: 99f20c1edd90
2026-03-29 21:38:04 +02:00
fc47b12fed fix: Pause WAL writes during binary checkpoint to prevent message drops
WAL writes during checkpoint are redundant since the binary snapshot
captures all in-memory data. Pausing eliminates channel saturation
(1.4M+ dropped messages) caused by disk I/O contention between
checkpoint writes and WAL staging. Also removes direct WAL file
deletion in checkpoint workers that raced with the staging goroutine.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Entire-Checkpoint: 34d698f40bac
2026-03-29 11:13:39 +02:00
937984d11f fix: WAL rotation skipped for all nodes due to non-blocking send on small channel
RotateWALFiles used a non-blocking send (select/default) on rotation
channels buffered at 64. With thousands of nodes and few shards, the
channel fills instantly and nearly all hosts are skipped, leaving WAL
files unrotated indefinitely.

Replace with a blocking send using a shared 2-minute deadline so the
checkpoint goroutine waits for the staging goroutine to drain the
channel instead of immediately giving up.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Entire-Checkpoint: a1ec897216fa
2026-03-28 06:55:45 +01:00
3d99aec185 fix: Log viewer auto-refresh
Entire-Checkpoint: 0fc6e5388e08
2026-03-28 06:45:03 +01:00
280289185a Add checkpointReader to ReleaseNotes
Entire-Checkpoint: ea34ae75e21a
2026-03-28 06:28:07 +01:00
cc3d03bb5b fix: Unbound growth of wal files in case of checkpointing error
Entire-Checkpoint: 95a89a7127c5
2026-03-28 06:26:21 +01:00
Jan Eitzinger
5398246a61 Merge pull request #540 from ClusterCockpit/hotfix
Hotfix
2026-03-27 10:00:32 +01:00
ac0a4cc39a Increase shutdown timeouts and WAL flush interval
Entire-Checkpoint: 94ee2fb97830
2026-03-27 09:56:34 +01:00
Aditya Ujeniya
71fc9efec7 Add binaryCheckpointReader as utility tool 2026-03-26 17:21:23 +01:00
Aditya Ujeniya
6e97ac8b28 Verbose logs for DataDoesNotAlign error in CCMS 2026-03-26 14:13:12 +01:00