This release includes 3 breaking changes for platform teams planning a safe upgrade.
Published 1mo
Containers & Orchestration
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
appserver
containers
deployment
devops-tools
docker
go
+7 more
htmx
internal-tools
kubernetes
kubernetes-deployment
low-code-platform
self-hosted
starlark
Affected surfaces
auth
rbac
breaking_upgrade
Summary
AI summaryBroad release touches Commits, @akclace, d8e5c33b6a6516ea08601a54c0b0d506af7c9134, and bc9e778a3818dd3b49d880f4277c85ed5ad0d6f0.
Full changelog
Changelog
Added
- Added
security.trusted_proxiesserver config to control which reverse proxies or load balancers are allowed to supply forwarded client IP headers. - Added
system.fallback_unknown_domainsserver config to optionally preserve legacy routing of unknown hostnames to the default domain. - Added
system.builder_auth_tokenserver config for delegated container builds, using a shared bearer token between the main OpenRun install and builder node(s). - Added
security.allowed_mountsserver config to allow administrators to approve host directories that apps may use as container bind-mount sources.
Changed
req.RemoteIPnow ignoresX-Forwarded-ForandX-Real-IPunless the direct peer is listed insecurity.trusted_proxies.- Reverse proxied requests now strip inbound forwarding headers and rebuild a clean
X-Forwarded-*/X-Real-IPset before sending the request upstream. - Requests for unknown
Hostvalues no longer route to the default domain unlesssystem.fallback_unknown_domainsis explicitly enabled. - Delegated builds now require a valid bearer token on
/_openrun/delegate_build. Builder nodes should run withbuilder.mode = "delegate_server"and no longer requiresecurity.admin_over_tcp = truefor delegated-build ingress. Existing delegated-build setups must set the samesystem.builder_auth_tokenvalue on the main install and every builder node before upgrading. - CORS is disabled by default for apps. The default
app_config.cors.allow_originis now empty andapp_config.cors.allow_credentialsis now"false". Apps that need browser cross-origin access must opt in with an app config override such ascors.allow_origin="https://frontend.example.com"orcors.allow_origin="origin". - The default server-level
container.config(...)permission no longer allows access to all secrets. Containerized apps that pass secrets through params, build args or generated secret volumes now need an explicitly approvedcontainer.configpermission with the requiredsecrets=[...]allowlist, unless the server config is intentionally changed to allow those secrets globally. - Container runtime options now only pass raw Docker/Podman flags from app metadata when the flag is explicitly listed in
security.allowed_container_args. Built-incpusandmemoryoptions continue to be parsed by OpenRun and do not require this raw flag allowlist. - Container bind-mount sources are now restricted to the app source directory, the app runtime directory, or directories listed in
security.allowed_mounts. Relative bind sources must stay inside the app source tree.
Commits
- 2ba842f4a188966feca072360df8dddc72baf3b5: Add mounts to .gitignore (@akclace)
- 8106d6d67517324ff8dc15416ce66a1f07620515: Add security.allowed_mounts configuration to restrict bind-mount sources (@akclace)
- 6ac0e7908d80e51b61ccd614a84921c93c414455: Added CSRF for logout call (@akclace)
- d8e5c33b6a6516ea08601a54c0b0d506af7c9134: Added builder token for delegated builds (@akclace)
- 6be0676c08421e85363dd4eb488e59e15b5d7878: Added max size for webhook body (@akclace)
- 67f3de8c3492ece8ae85e7decd53d02a23d353b1: Added validation for table name (@akclace)
- bc9e778a3818dd3b49d880f4277c85ed5ad0d6f0: Bump github.com/go-git/go-git/v5 from 5.17.1 to 5.18.0 (#89) (@dependabot[bot])
- 14d739b89dcb32d49af92db727e9e4a2640d4000: Bump github.com/jackc/pgx/v5 from 5.7.5 to 5.9.0 (#88) (@dependabot[bot])
- 8e8379decdd8769a99779aa40ebc6b3ce4bed7c4: Bump github.com/moby/spdystream from 0.5.0 to 0.5.1 (#87) (@dependabot[bot])
- ab223f4dc0763ae4112d952b65cda68119202d3a: Bump go.opentelemetry.io/otel/sdk from 1.41.0 to 1.43.0 (#86) (@dependabot[bot])
- a842656190e37094307a2b613239fc2d6e46a949: Changed default CORS settings (@akclace)
- 6a30c5eb121d4aebce2b2fa60b694a9f0f96fe33: Changed default for secrets access permission (@akclace)
- 693e182e5661eb01be94c33e8b21b49968def26d: Disallow symlinks in source path (@akclace)
- 1241d5ff5a79acec60af7f786380c668b13382d2: Fix IPv6 host name parsing (@akclace)
- 989872159539f5ef7896090d208d3791eb3c2693: Fix auth header and session validation (@akclace)
- 245832676213304840991cab3efbd0ab12e7d36f: Fix checks for path traversal (@akclace)
- babc00ea32edd444b24f64a9c6c3ac0c1dd7ec92: Fix client IP handling, add config for setting trusted proxies (@akclace)
- 810f30fa8c018d0f5de4f9a597f0f5c277ea204d: Fix file path checks (@akclace)
- 636a72eb0275405bc675583063ffb031dc365055: Fix path traversal during external commands (@akclace)
- ae3d685c76777a5b338e40186e01cb7259fd1229: Fix quick start link in docs (@akclace)
- a793329de30b5c06a8e86042a0618af6fecacebf: Fix test case (@akclace)
- 4c147d87e4695a9c71fdd6378a4125afa5b7a4c3: Harden github actions (@akclace)
- 47756489be0bcbe8cd876dade571b3a181b632fd: Harden referrer path handling (@akclace)
- a73316b533422ec21129029994e31838d4091443: Limit container options which can be specified (@akclace)
- bd4cc7ff258d3ad1810f0024951020902d14f2af: Remove config file read in CLI parser and fix test (@akclace)
- 3a32d6babbba49b8a421ccd8a26c6a485a50b405: Remove test API endpoint (@akclace)
- 4148c01c2a4ac7d77c8d3e389aab866583cd2649: Requests for unknown Host no longer route to the default domain (@akclace)
- 148f1eb2767c4f572ef8d401982566327b845765: Skip fetching tags during checkout (@akclace)
- 01e26bb2673786ef19382339285f25eff11df67b: Update go version to 1.26.2 (@akclace)
- cfa6c3670d63399ef4459c6cfcb13ad2cd608197: Updated delegated build to add max size limit (@akclace)
- 8611215a57a4ee6684d06b1934af0b33847ca6c8: Verify Host header during HTTPS redirect (@akclace)
Breaking Changes
- `req.RemoteIP` now ignores `X-Forwarded-For`/`X-Real-IP` unless the direct peer is listed in `security.trusted_proxies`.
- Requests for unknown `Host` values no longer route to the default domain unless `system.fallback_unknown_domains` is explicitly enabled.
- Delegated builds now require a valid bearer token on `/_openrun/delegate_build`; existing setups must configure matching `system.builder_auth_token` on all nodes before upgrading.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About openrundev/openrun](https:
All releases →Beta — feedback welcome: [email protected]