Releases: coupergateway/couper
Release list
edge
current master build to be referred by https://github.com/coupergateway/features/pkgs/container/features%2Fcouper
v1.14.2
Security patch release
Addresses three high-severity OpenTelemetry advisories.
Security
go.opentelemetry.io/otel1.43.0 — fix multi-valuebaggageheader DoS amplification (GHSA-mh2q-q3fh-2475)go.opentelemetry.io/otel/sdk1.43.0 — fix PATH hijacking via BSDkenvnot using absolute path (GHSA-hfvc-g4fc-pqhx) and arbitrary code execution via PATH hijacking (GHSA-9h8m-3fm2-qjrq)
Dependencies
go.opentelemetry.io/otelandotel/sdk,otel/metric,otel/trace,otel/exporters/otlp/otlptrace*,otel/exporters/otlp/otlpmetric/otlpmetricgrpc1.39.0/1.38.0 → 1.43.0go.opentelemetry.io/otel/exporters/prometheus0.60.0 → 0.64.0google.golang.org/grpc1.79.3 → 1.80.0golang.org/x/net0.48.0 → 0.52.0,golang.org/x/crypto0.46.0 → 0.49.0 (transitive)
Built with Go 1.26.2.
Full changelog: v1.14.1...v1.14.2
v1.14.1
v1.14.0
1.14.0
-
Added
argon2iandargon2idpassword hash support forbasic_authhtpasswd_file(#866)beta_rate_limiteraccess control for fixed/sliding window rate limiting (#881)beta_introspectionblock injwtblock to facilitate token introspection in order to detect revoked tokens (#649)startup_delayattribute forjobblock to delay the first job execution after startup (#836)- OpenTelemetry tracing documentation with configuration reference for
beta_traces, trace propagation settings, and CLI flags (#672) - Access control metrics:
couper_access_control_total,couper_access_control_duration_seconds,couper_access_control_rate_limited_total, andcouper_access_control_rate_limiter_active_keys; Grafana dashboard updated with Access Control row (#924) - Documentation website dark theme support and improved styling for readability (#931)
- Devcontainer feature to install Couper in development containers (
ghcr.io/coupergateway/features/couper) (#931) - Couper documentation available as Context7 MCP library for LLM-assisted development (#931)
- SAML IdP metadata auto-update:
idp_metadata_urlattribute to fetch IdP metadata from a URL with automatic refresh viametadata_ttlandmetadata_max_staleattributes (#912)
-
Changed
beta_rate_limitblock inbackendblock has left beta and is renamed tothrottle; the old name is deprecated and will be removed in version 1.15 (#914)beta_backend_rate_limit_exceedederror type is renamed tobackend_throttle_exceeded; the old name is deprecated and will be removed in version 1.15 (#914)beta_jobblock has left beta and is renamed tojob; the old name is deprecated and will be removed in version 1.15 (#898)
-
Fixed
- Fix
traceparentheader not being propagated to backends when usingbeta_tracesdue to trace context injection into the wrong (request) headers; now correctly injected into response headers byTraceHandlerand into outgoing request headers byInstrumentedRoundTripper(#923) - Fix redundant span creation in producers and
innerRoundTripwhen usingbeta_traces; consolidate all backend tracing into a singleInstrumentedRoundTripperwith correctSpanKindClient(#923) - Fix
TraceContextpropagator missingBaggagesupport when usingbeta_traces; use composite propagator with bothTraceContextandBaggage(#923) - Fix
backend_responsenot being available incustom_log_fieldsfor OIDC/OAuth2 token and userinfo backend requests; also fixes requestnameshowing as<nil>in upstream logs for these requests (#797)
- Fix
-
Security
- Return explicit error when backend
originevaluates to empty string instead of falling back to the client request URL (#920) - Sanitize
\r,\n, and\0characters from header values set via HCL expressions to prevent header injection (#920) - Reject path traversal sequences (
..,%2e%2e) inpathandpath_prefixattributes (#920) - Remove rate limiter key value from error messages to prevent information leakage (#920)
- Use constant-time comparison for username in
basic_auth(#920)
- Return explicit error when backend
-
Dependencies
v1.13.2
v1.13.1
v1.13.0
1.13.0
-
Added
can()function (#699)url_decode()function (#781)bearer = trueattribute forjwtblock to indicate retrieving token fromAuthorization: Bearer .... This is the new default token source indicator.header = "Authorization"is now deprecated in favour of this new attribute. (#724)- IPv6 support via
-bind-addressoption. (#752) - also watch files which has been referenced within the configuration file when using [
-watch] (https://docs.couper.io/configuration/command-line#basic-options) (#747) - automatic
MAXPROCSsetting for Couper runtime to respect the number of available CPU resources in cloud environments (#840)
-
Changed
- More specific error log messages for
oauth2andbeta_token_requesttoken request errors (#755) - In addition to having an appropriate JSON media type in the
Content-Typeheader field, (backend) requests or backend responses for an endpoint are only JSON-parsed if indicated by a.json_bodyreference in the endpoint configuration (#749) beta_rate_limitstatus code429responses are no longer wrapped as a Couper error (#827)
- More specific error log messages for
-
Fixed
WWW-Authenticateheaderrealmparam value forbasic_auth(#715)Server-Timingheader only reporting last requests/proxies of endpoint sequences (#751)- Selecting of appropriate error handler in two cases (#753)
- Storing of digit-starting string object keys in request context and of digit-starting string header field names in request variable (#799)
- Use of boolean values for the
headersattribute or modifiers (#805) - Duplicate CORS response headers (with backend sending CORS response headers, too) (#804)
- Erroneously sending 404 when serving from
filesdue to wrong registration ofbase_paths, and when serving from multiplefilesorspain combination withapidue to wrong selecting of the API error template (#803) - Possible deadlock for
beta_rate_limit(#827)
-
Dependencies
v1.12.2
Note: The Couper project has been moved to a new home: https://github.com/coupergateway/couper !
The maintainer is still the same (@malud) and supported with ❤️ by Milecrew.
This affects the following locations which you have to update accordingly:
Dockerhub:
coupergateway/couperandcoupergateway/couper-oidc-gateway
VSCode-Extension: Couper Configuration (Marketplace / Open VSX)
Homebrew:brew tap coupergateway/couperand thenbrew install couper(formula)
Examples: https://github.com/coupergateway/couper-examples
- Fixed
- Reading the origin response-body even if there is no origin
bodyorjson_bodyvariable reference; piping the response-body again to the client (#766)
- Reading the origin response-body even if there is no origin
v1.12.1
1.12.1
- Fixed
- Erroneously sending an empty
Server-Timingheader (#700) - URL scheme while using the
tlsblock (#703) - For OIDC, trying to request userinfo from a non-existing (not required, though recommended) userinfo endpoint (#709)
- Use of
backend_responses'bodyorjson_bodyproperties in api-level error handlers (#710) - Some
..._fileattributes missing for path absolutizing (#713) WWW-Authenticateheaderrealmparam value forbasic_auth(#715)- JWT access control now creating
401error status code, adding aWWW-Authenticate: Bearer[...]response header if appropriate (#719) - Erroneous multiplying of health probes, jobs and requests to JWKS and OpenID configuration resources after a reload with
-watch(#730, #736) - Reading PEM-encoded CA certificates (
ca_filesetting or-ca-fileoption) containing bytes trailing the PEM message (#739)
- Erroneously sending an empty
v1.12.0
1.12.0
-
Added
beta_jobblock to describe one or more jobdefinitionsfor simple recurring http tasks (#610)server_timing_headersetting, that allows Couper to include an additionalServer-TimingHTTP response header field detailing connection and transport relevant metrics for each backend request. (#657)
-
Changed
- Use nested
jwt_signing_profileblock inoauth2block forgrant_type"urn:ietf:params:oauth:grant-type:jwt-bearer"in absence ofassertionattribute (#619) - Improved the way an SPA
bootstrap_filegets cached and served in combination withbootstrap_data(#656) - Harmonized and improved logged error information for references to undefined blocks (#651)
- Unbeta permission features: (#673)
beta_required_permissionattribute forapiandendpointblocks,beta_granted_permissionsandbeta_required_permissionrequest context variables,beta_insufficient_permissionserror type,beta_permissions_claim,beta_permissions_map,beta_permissions_map_file,beta_roles_claim,beta_roles_mapandbeta_roles_map_fileattributes forjwtblock.
- Use nested
-
Fixed
- Use of backend-related variables in
custom_log_fieldswithin abackendblock (#658) - Loop with evaluation error in
custom_log_fieldsif log level is"debug"(#659) - Removed error message with
couper helpcommand (#678)
- Use of backend-related variables in
VSCode-Extension
The vscode extension has been moved to our own publisher couper. The new extension can be found here:
- Marketplace: https://marketplace.visualstudio.com/items?itemName=couper.couperconf
- Open-VSX: https://open-vsx.org/extension/couper/couperconf (claiming the namespace is still pending)