build(deps): update dependency hono to v4.12.4 [security]#48
Open
renovate[bot] wants to merge 1 commit intomasterfrom
Open
build(deps): update dependency hono to v4.12.4 [security]#48renovate[bot] wants to merge 1 commit intomasterfrom
renovate[bot] wants to merge 1 commit intomasterfrom
Conversation
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.2→4.12.4GitHub Vulnerability Alerts
CVE-2026-29045
Summary
When using
serveStatictogether with route-based middleware protections (e.g.app.use('/admin/*', ...)), inconsistent URL decoding allowed protected static resources to be accessed without authorization.The router used
decodeURI, whileserveStaticuseddecodeURIComponent. This mismatch allowed paths containing encoded slashes (%2F) to bypass middleware protections while still resolving to the intended filesystem path.Details
The routing layer preserved
%2Fas a literal string, whileserveStaticdecoded it into/before resolving the file path.Example:
Request:
/admin%2Fsecret.html/admin%2Fsecret.html→ does not match/admin/*/admin/secret.htmlAs a result, static files under the configured static root could be served without triggering route-based protections.
This only affects applications that both:
serveStatic.This does not allow access outside the static root and is not a path traversal vulnerability.
Impact
An unauthenticated attacker could bypass route-based authorization for protected static resources by supplying paths containing encoded slashes.
Applications relying solely on route-based middleware to protect static subpaths may have exposed those resources.
CVE-2026-29085
Summary
When using
streamSSE()in Streaming Helper, theevent,id, andretryfields were not validated for carriage return (\r) or newline (\n) characters.Because the SSE protocol uses line breaks as field delimiters, this could allow injection of additional SSE fields within the same event frame if untrusted input was passed into these fields.
Details
The SSE helper builds event frames by joining lines with
\n. While multi-linedata:fields are handled according to the SSE specification, theevent,id, andretryfields previously allowed raw values without rejecting embedded CR/LF characters.Including CR/LF in these control fields could allow unintended additional fields (such as
data:,id:, orretry:) to be injected into the event stream.The issue has been fixed by rejecting CR/LF characters in these fields.
Impact
An attacker could manipulate the structure of SSE event frames if an application passed user-controlled input directly into
event,id, orretry.Depending on application behavior, this could result in injected SSE fields or altered event stream handling. Applications that render
e.datain an unsafe manner (for example, usinginnerHTML) could potentially expose themselves to client-side script injection.This issue affects applications that rely on the SSE helper to enforce protocol-level constraints.
CVE-2026-29086
Summary
The
setCookie()utility did not validate semicolons (;), carriage returns (\r), or newline characters (\n) in thedomainandpathoptions when constructing theSet-Cookieheader.Because cookie attributes are delimited by semicolons, this could allow injection of additional cookie attributes if untrusted input was passed into these fields.
Details
setCookie()builds theSet-Cookieheader by concatenating option values. While the cookie value itself is URL-encoded, thedomainandpathoptions were previously interpolated without rejecting unsafe characters.Including
;,\r, or\nin these fields could result in unintended additional attributes (such asSameSite,Secure,Domain, orPath) being appended to the cookie header.Modern runtimes prevent full header injection via CRLF, so this issue is limited to attribute-level manipulation within a single
Set-Cookieheader.The issue has been fixed by rejecting these characters in the
domainandpathoptions.Impact
An attacker may be able to manipulate cookie attributes if an application passes user-controlled input directly into the
domainorpathoptions ofsetCookie().This could affect cookie scoping or security attributes depending on browser behavior. Exploitation requires application-level misuse of cookie options.
Release Notes
honojs/hono (hono)
v4.12.4Compare Source
v4.12.3Compare Source
What's Changed
Math.floorinstead of bitwise OR for safe timestamp by @EdamAme-x in #4754JwtVariablesforContextVariableMapby @yusukebe in #4764New Contributors
Full Changelog: honojs/hono@v4.12.2...v4.12.3
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 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.