- Severity: MEDIUM
- Ecosystems: go
- Packages: github.com/tinfoil-factory/netfoil
### Summary
TTL was not decremented, so stale records would continue to be served.
Source: GitHub Security Advisories · 2026-11-03
### Summary
TTL was not decremented, so stale records would continue to be served.
Source: GitHub Security Advisories · 2026-11-03
## Summary
Arc exposes `GET /api/v1/logs` without authentication even when authentication is enabled by default. The route is registered before the global Fiber authentication middleware, and the handler returns recent buffered application logs without performing its own authorization check.
## Details
Arc applies the global auth middleware after calling `server.RegisterRoutes()`:
– `cmd/arc/main.go:1598-1599` registers base routes via `server.RegisterRoutes()`.
– `cmd/arc/main.go:1601-1618` configures and installs `auth.NewMiddleware(…)` later.
`server.RegisterRoutes()` registers `GET /api/v1/logs` as a base route:
– `internal/api/server.go:164-183` registers base health, metrics, and logs routes, including `s.app.Get(“/api/v1/logs”, s.logsHandler)`.
The logs handler returns buffered logs without checking authentication or authorization:
– `internal/api/server.go:537-567` parses `limit`, `level`, and `since_minutes`, reads `logger.GetBuffer().GetRecent(…)`, and returns JSON.
– `internal/logger/buffer.go:9-16` defines log entries returned to callers: timestamp, level, component, message, and caller.
– `internal/logger/buffer.go:33-39` creates a global log buffer holding the last 10,000 entries.
– `internal/api/server.go:540-558` permits up to `limit=1000` and `since_minutes=1440` in one unauthenticated request.
Authentication is enabled by default and `/api/v1/logs` is not listed as a public route:
– `internal/config/config.go:841-843` defaults auth to enabled.…
Source: GitHub Security Advisories · 2026-11-03
## Summary
The Kubeflow Pipelines API server decompresses uploaded pipeline archives without adequately bounding expanded data in affected versions. A small ZIP or gzip-compressed tar archive can consume disproportionately large amounts of memory while the server locates or reads the pipeline file, potentially exhausting API-server resources and interrupting service.
Multipart pipeline and pipeline-version upload processing decompresses the archive before namespace authorization, so a caller who can reach those endpoints does not need a successful pipeline-create authorization decision to trigger the issue. External authentication and network controls can restrict reachability. URL-import handlers authorize before fetching and decompressing a remote archive.
The amount of expansion needed to exhaust memory depends on deployment resource limits and concurrent activity; no particular archive is guaranteed to crash every deployment.
## Remediation
Upgrade the API server to **[Kubeflow Pipelines 2.18.0](https://github.com/kubeflow/pipelines/releases/tag/2.18.0)**. Versions through 2.17.3 are affected; the first affected release has not been established.
[PR #14171](https://github.com/kubeflow/pipelines/pull/14171) bounds compressed input and extracted pipeline data. [PR #14186](https://github.com/kubeflow/pipelines/pull/14186) strengthens the total tar traversal budget, including metadata and skipped entries. The 2.18 release also includes configurable upload and specificat…
Source: GitHub Security Advisories · 2026-10-30
## Summary
The Kubeflow Pipelines API server’s `GET /apis/v1alpha1/runs/{run_id}/nodes/{node_id}/log` handler retrieves logs without authorizing the caller against the selected run. A caller who can reach the backend and knows a victim run ID and a suitable pod or node identifier can read live or archived logs using the API server’s permissions.
For live logs, the vulnerable handler also accepts the supplied node ID as a pod name in the run’s namespace without verifying that the pod belongs to the run. Depending on the API server’s pod-log permissions, a known run ID can therefore permit reading the `main` container logs of an unrelated pod in that namespace. Logs may contain sensitive workload data or credentials.
The affected handler does not authenticate the request itself. An external authentication gate or network policy can restrict reachability; public ingress exposure and unauthenticated enumeration of run IDs are not assumed.
## Remediation
Upgrade the API server to **[Kubeflow Pipelines 2.18.0](https://github.com/kubeflow/pipelines/releases/tag/2.18.0)**. Versions through 2.17.3 are affected; the first affected release has not been established.
[PR #13684](https://github.com/kubeflow/pipelines/pull/13684) authorizes the caller with the `readLog` verb before retrieving live or archived logs. For live logs, it also verifies that the pod’s `pipeline/runid` label matches the requested run. Custom Kubernetes roles must grant `readLog` on `runs` in the `pipelines.ku…
Source: GitHub Security Advisories · 2026-10-30