The chart answered three unrelated questions with one switch: whether the
Hub gates its API, whether the dashboard must log in to fetch a licence
key, and which product features exist. So a default install rendered
AUTH_ENABLED=true purely to make the cloud login reachable, and
tap.auth.enabled=true with type=saml rendered AUTH_ENABLED=false,
shipping an unauthenticated Hub to an operator who had asked for SSO.
kubeshark.authEnabled is now tap.auth.enabled verbatim. AUTH_TYPE is the
configured type verbatim, instead of being rewritten to 'default'
whenever cloud licensing or demo mode was on. Settings that cannot work
now fail the render rather than being quietly rewritten into something
that does.
The dashboard's REACT_APP_AUTH_ENABLED was a second, hand-maintained
copy of the old expression with an extra internetConnectivity term, so
air-gapped installs rendered a gated Hub against a dashboard that never
mounted a login. It uses the same helper now.
The worker hub token is projected unconditionally. Gating it on the auth
decision coupled a DaemonSet rollout to that decision, so anything
enabling auth without re-rendering workers left them holding no token
against a Hub that required one.
The CLI no longer writes AUTH_ENABLED, AUTH_TYPE or
AUTH_SAML_IDP_METADATA_URL. Those come from the values the release was
installed with; writing them from the CLI's own config meant a plain
'kubeshark tap' against an SSO release could silently reconfigure or
disable its authentication.
* deps: bump indirect deps to clear critical/high Dependabot alerts
Bumps the vulnerable indirect dependencies flagged as critical or high
severity in Dependabot:
- golang.org/x/crypto v0.39.0 -> v0.54.0 (7 critical + 2 high: SSH agent
constraint/key-constraint bypass, @revoked auth bypass, FIDO/U2F presence
check bypass, VerifiedPublicKeyCallback permission skip, infinite loop on
large channel writes, client-induced server deadlock, RSA/DSA DoS, byte
arithmetic underflow panic)
- google.golang.org/grpc v1.68.1 -> v1.83.0 (critical: authz bypass via
missing leading slash in :path; high: xDS RBAC and HTTP/2 issues)
- github.com/containerd/containerd v1.7.27 -> v1.7.34 (high: LABEL ->
restart-monitor binary:// host-root RCE, runAsNonRoot evasion, local
privesc via wide CRI directory permissions)
- oras.land/oras-go/v2 v2.6.0 -> v2.6.2 (high: CVE-2026-50163 hardlink
extract-dir escape, credential forwarding via unvalidated Location header)
- github.com/moby/spdystream v0.5.0 -> v0.5.1 (high: DoS on CRI)
Transitively pulls up x/net, x/sync, x/sys, x/term, x/text, x/time,
x/oauth2, protobuf, filepath-securejoin, selinux and go-logr via go mod tidy.
The go directive moves 1.24.0 -> 1.25.0 (required by the upgraded modules);
the explicit toolchain pin is dropped. CI resolves Go from go.mod, so no
workflow changes are needed.
go build ./... and go test ./... pass.
* ci: move golangci-lint to v2, fix resulting lint issues
golangci-lint-action@v3 pins `latest` to v1.64.8, which is built with
go1.24 and refuses to run now that go.mod targets 1.25.0:
can't load config: the Go language version (go1.24) used to build
golangci-lint is lower than the targeted Go version (1.25.0)
Move the job to golangci-lint-action@v7 + v2.8.0 and add a .golangci.yml
mirroring the hub repo's v2 config: govet, staticcheck, ineffassign and
unused, plus gofmt/goimports as formatters.
Fixes for the issues that surfaced:
- ST1005: lowercase error strings, drop trailing '!' in connect/hub.go
- SA4011: kubernetes/watch.go had a `break` inside a `select` default
that broke the select rather than the loop, i.e. a no-op; removed
- QF1008: drop the embedded ChartPathOptions selector in helm.go
- QF1003: tagged switch on r.URL.Path in mcp_test.go
- QF1004: strings.Replace(..., -1) -> strings.ReplaceAll
- gofmt -s and goimports with a local prefix across the tree
errcheck is not in the enabled set, matching hub.
* cmd: clarify --time parse error in pcap dump
The error neither named the offending flag/value nor separated the
wrapped error from the message. Reported by Copilot on #1952.
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
Added both the `scripting` and `console` commands to the `proxy` command
Added a `scripting.console`, a boolean value indicating whether the `console`
functionality should be part of the `tap` and `proxy` commands
* Make the `scritps` command directly use the K8s API without requiring a connector to Hub
* Fix linter
* Fix linter
---------
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
* 🔨 Add `tracer` as a separate container to worker `DaemonSet`
* 🔥 Delete some of the unused connector methods
* 🔨 Set `POD_NAME` and `POD_NAMESPACE` environment variables in worker `DeamonSet`
* 🔨 Set `POD_NAME` and `POD_NAMESPACE` environment variables in hub `Deployment`
* Fix the labels
* Fix the self config role
* Restrict it to specific resource names
* Run `make generate-manifests`
* ✨ Use the Helm chart in `tap` command to install Kubeshark
* ⬆️ Set Go version to `1.19` in `go.mod` file
* ✨ Add `Helm` struct`, `NewHelm` and `NewHelmDefault` methods
* ⚡ Better logging and error return
* ⚡ Pass the config as `values.yaml` to Helm install
* 🔥 Remove `helm-chart`, `manifests` and `check` commands
* ➖ Run `go mod tidy`
* 🎨 Move `helm` package into `kubernetes` package
* 🔥 Remove `# THIS FILE IS AUTOMATICALLY GENERATED BY KUBESHARK CLI. DO NOT EDIT!` notice from the manifests and Helm templates
* 🔥 Remove the unused `GenerateApplyConfiguration` and `buildWithDefaultLabels` methods