chore(deps): update dependency hono to v4.12.18 [security]#48
Merged
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
2fbca76 to
15d1bcf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
4.12.14→4.12.18Hono: bodyLimit() can be bypassed for chunked / unknown-length requests
CVE-2026-44456 / GHSA-9vqf-7f2p-gf9v
More information
Details
Summary
bodyLimit()does not reliably enforcemaxSizefor requests without a usableContent-Length(e.g.Transfer-Encoding: chunked). Oversized requests can reach handlers and return200instead of413.Details
For chunked / unknown-length requests,
bodyLimit()wraps the body in a stream that counts bytes asynchronously, then runs the handler before the size decision is final. The413is only applied afterwards by checkingc.error.This lets the limit be bypassed when:
try/catch.In all three cases the handler returns
200before the limit check completes (or its result is observed).The fix is to enforce the size decision before
next()runs, instead of retrofitting the response viac.errorafterwards.Impact
Applications relying on
bodyLimit()as a hard boundary can be bypassed: oversized chunked requests can reach handler logic and return successful responses. Per-request data exposure is bounded bymaxSize, but the documented guarantee — "oversized requests are rejected before business logic runs" — does not hold.Credits
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
hono/jsx has Unvalidated JSX Tag Names that May Allow HTML Injection
CVE-2026-44455 / GHSA-69xw-7hcm-h432
More information
Details
Summary
Improper handling of JSX element tag names in hono/jsx allowed unvalidated tag names to be directly inserted into the generated HTML output.
When untrusted input is used as a tag name via the programmatic
jsx()orcreateElement()APIs during server-side rendering, specially crafted values may break out of the intended element context and inject unintended HTML.Details
When rendering JSX elements to HTML strings, attribute values are escaped and attribute names are validated. However, element tag names were previously inserted into the output without validation.
If a tag name contains characters such as
<,>, quotes, or whitespace, it may alter the structure of the generated HTML.For example, malformed tag names can:
This issue arises when untrusted input (such as query parameters or database content) is used as JSX tag names via
jsx()orcreateElement()during server-side rendering.Impact
An attacker who can control tag names used in JSX rendering may inject unintended HTML into the generated output.
This may lead to:
This issue only affects applications that construct JSX tag names from untrusted input. Applications using static or allowlisted tag names are not affected.
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Hono's Cache Middleware ignores Vary: Authorization / Vary: Cookie leading to cross-user cache leakage
CVE-2026-44457 / GHSA-p77w-8qqv-26rm
More information
Details
Summary
Cache Middleware does not skip caching for responses that declare per-user variance via
Vary: AuthorizationorVary: Cookie. As a result, a response cached for one authenticated user may be served to subsequent requests from different users.Details
The Cache Middleware skips caching when a response carries
Vary: *, certainCache-Controldirectives (private,no-store,no-cache), orSet-Cookie. However,Vary: AuthorizationandVary: Cookie— the standard signals defined in RFC 9110 / RFC 9111 to indicate per-user responses — are not treated as cache-skip reasons.This issue arises when applications use the Cache Middleware on endpoints that return user-specific data and rely on
Vary: AuthorizationorVary: Cookieto scope the response per user, without also settingCache-Control: private.Impact
A user may receive a cached response that was originally generated for a different authenticated user. This may lead to:
This issue affects applications that use the Cache Middleware on endpoints whose responses vary by
AuthorizationorCookieand that do not also setCache-Control: private.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Hono has improper validation of NumericDate claims (exp, nbf, iat) in JWT verify()
CVE-2026-44459 / GHSA-hm8q-7f3q-5f36
More information
Details
Summary
Improper validation of the JWT NumericDate claims
exp,nbf, andiatinhono/utils/jwtallows tokens with non-spec-compliant claim values to silently bypass time-based checks. This issue is not exploitable by an anonymous attacker; it only manifests when a malformed claim value reachesverify()— typically when the application itself issues such tokens, or when the signing key is otherwise under attacker control.Details
The validation routine combined option, presence, and threshold checks in a single short-circuiting expression, so several classes of malformed values were silently skipped instead of rejected:
This deviates from RFC 7519 §4.1.4, which defines NumericDate as a finite JSON numeric value.
Impact
An actor able to issue tokens accepted by the application may craft tokens whose
exp,nbf, oriatclaims silently bypass time-based enforcement. This may lead to:expconfigured on the verifier.nbfaccepted as currently valid.iataccepted as legitimately issued.Deployments using a well-formed token issuer and protecting the signing key are not affected.
Severity
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Hono has CSS Declaration Injection via Style Object Values in JSX SSR
CVE-2026-44458 / GHSA-qp7p-654g-cw7p
More information
Details
Summary
The JSX renderer escapes
styleattribute object values for HTML but not for CSS. Untrusted input in astyleobject value or property name can therefore inject additional CSS declarations into the renderedstyleattribute. The impact is limited to CSS and does not allow JavaScript execution or HTML attribute breakout.Details
styleobject values are serialized into a CSS declaration list and escaped for HTML attribute context only. Characters that act as CSS declaration boundaries — such as;, comment markers, quoted strings, and block delimiters — are valid in HTML attribute content and can extend a value beyond its assigned property.This issue arises when untrusted input is interpolated into a JSX
styleobject and rendered server-side.Impact
An attacker who can control the value or property name of a
styleobject may inject arbitrary CSS declarations. This may lead to:url(...)This issue affects applications that render JSX on the server with
styleobject values or property names derived from untrusted input.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
hono/jsx has Unvalidated JSX Tag Names that May Allow HTML Injection
CVE-2026-44455 / GHSA-69xw-7hcm-h432
More information
Details
Summary
Improper handling of JSX element tag names in hono/jsx allowed unvalidated tag names to be directly inserted into the generated HTML output.
When untrusted input is used as a tag name via the programmatic
jsx()orcreateElement()APIs during server-side rendering, specially crafted values may break out of the intended element context and inject unintended HTML.Details
When rendering JSX elements to HTML strings, attribute values are escaped and attribute names are validated. However, element tag names were previously inserted into the output without validation.
If a tag name contains characters such as
<,>, quotes, or whitespace, it may alter the structure of the generated HTML.For example, malformed tag names can:
This issue arises when untrusted input (such as query parameters or database content) is used as JSX tag names via
jsx()orcreateElement()during server-side rendering.Impact
An attacker who can control tag names used in JSX rendering may inject unintended HTML into the generated output.
This may lead to:
This issue only affects applications that construct JSX tag names from untrusted input. Applications using static or allowlisted tag names are not affected.
Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Hono: bodyLimit() can be bypassed for chunked / unknown-length requests
CVE-2026-44456 / GHSA-9vqf-7f2p-gf9v
More information
Details
Summary
bodyLimit()does not reliably enforcemaxSizefor requests without a usableContent-Length(e.g.Transfer-Encoding: chunked). Oversized requests can reach handlers and return200instead of413.Details
For chunked / unknown-length requests,
bodyLimit()wraps the body in a stream that counts bytes asynchronously, then runs the handler before the size decision is final. The413is only applied afterwards by checkingc.error.This lets the limit be bypassed when:
try/catch.In all three cases the handler returns
200before the limit check completes (or its result is observed).The fix is to enforce the size decision before
next()runs, instead of retrofitting the response viac.errorafterwards.Impact
Applications relying on
bodyLimit()as a hard boundary can be bypassed: oversized chunked requests can reach handler logic and return successful responses. Per-request data exposure is bounded bymaxSize, but the documented guarantee — "oversized requests are rejected before business logic runs" — does not hold.Credits
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Release Notes
honojs/hono (hono)
v4.12.18Compare Source
v4.12.17Compare Source
v4.12.16Compare Source
Security fixes
This release includes fixes for the following security issues:
Unvalidated JSX Tag Names in hono/jsx May Allow HTML Injection
Affects: hono/jsx. Fixes missing validation of JSX tag names when using
jsx()orcreateElement(), which could allow HTML injection if untrusted input is used as the tag name. GHSA-69xw-7hcm-h432bodyLimit() can be bypassed for chunked / unknown-length requests
Affects: Body Limit Middleware. Fixes late enforcement for request bodies without a reliable Content-Length (e.g. chunked requests), where oversized requests could reach handlers and return successful responses before being rejected. GHSA-9vqf-7f2p-gf9v
v4.12.15Compare Source
What's Changed
New Contributors
Full Changelog: honojs/hono@v4.12.14...v4.12.15
Configuration
📅 Schedule: (in timezone Europe/Copenhagen)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.