Skip to content

v2.3.1

Choose a tag to compare

@lazyants lazyants released this 22 Jun 08:01
· 14 commits to main since this release
5f54c40

Security

  • Redact the bearer token (HETZNER_API_TOKEN / HETZNER_STORAGE_API_TOKEN) from rethrown axios error cause chains (defense-in-depth, #44). API errors are wrapped as new Error(msg, { cause: err }); the chained AxiosError previously retained the token in config.headers.Authorization and Node's raw request._header block, so a logger walking the cause via util.inspect(err, { depth: null }) or AxiosError.toJSON() could surface it. A central wrapHetznerError now sanitizes the error in place — scrubbing Authorization/proxy-authorization/cookie headers (case-insensitively) on both config refs, and dropping config.auth/proxy.auth, the request/response.request objects, and any object cause. The single request() chokepoint routes both the Cloud (api.hetzner.cloud) and Storage Box (api.hetzner.com) call paths through it, so both token families are covered. Thrown messages are unchanged. Locked with a regression test asserting no token survives util.inspect(depth:null) or toJSON(), through both hetznerRequest and storageBoxRequest.

Fleet lockstep with lexware v3.2.1.

Full Changelog: v2.3.0...v2.3.1