chore(deps): update dependency hono to v4.12.14 [security]#657
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
chore(deps): update dependency hono to v4.12.14 [security]#657renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
Deployment results
Logs #24502797421 |
6590616 to
6a2b9d6
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.7→4.12.14GitHub Vulnerability Alerts
CVE-2026-39408
Summary
A path traversal issue in
toSSG()allows files to be written outside the configured output directory during static site generation. When using dynamic route parameters viassgParams, specially crafted values can cause generated file paths to escape the intended output directory.Details
The static site generation process creates output files based on route paths derived from application routes and parameters. When
ssgParamsis used to provide values for dynamic routes, those values are used to construct output file paths. If these values contain traversal sequences (e.g...), the resulting output path may resolve outside the configured output directory. As a result, files may be written to unintended locations instead of being confined within the specified output directory.For example:
In this case, the generated output path may resolve outside
./static, resulting in a file being written outside the intended output directory.Impact
An attacker who can influence values passed to
ssgParamsduring the build process may be able to write files outside the intended output directory.Depending on the build and deployment environment, this may:
This issue is limited to build-time static site generation and does not affect request-time routing.
Severity
CVSS:4.0/AV:L/AC:H/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:NCVE-2026-39407
Summary
A path handling inconsistency in
serveStaticallows protected static files to be accessed by using repeated slashes (//) in the request path.When route-based middleware (e.g.,
/admin/*) is used for authorization, the router may not match paths containing repeated slashes, while serveStatic resolves them as normalized paths. This can lead to a middleware bypass.Details
The routing layer and
serveStatichandle repeated slashes differently.For example:
However,
serveStaticmay interpret both paths as the same file location (e.g.,admin/secret.txt) and return the file.This inconsistency allows a request such as:
to bypass middleware registered on
/admin/*and access protected files.The issue has been fixed by rejecting paths that contain repeated slashes, ensuring consistent behavior between route matching and static file resolution.
Impact
An attacker can access static files that are intended to be protected by route-based middleware by using repeated slashes in the request path.
This can lead to unauthorized access to sensitive files under the static root.
This issue affects applications that rely on serveStatic together with route-based middleware for access control.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:NCVE-2026-39409
Summary
ipRestriction()does not canonicalize IPv4-mapped IPv6 client addresses (e.g.::ffff:127.0.0.1) before applying IPv4 allow or deny rules. In environments such as Node.js dual-stack, this can cause IPv4 rules to fail to match, leading to unintended authorization behavior.Details
The middleware classifies client addresses based on their textual form. Addresses containing "
:" are treated as IPv6, including IPv4-mapped IPv6 addresses such as::ffff:127.0.0.1. These addresses are not normalized to IPv4 before matching.As a result:
127.0.0.1) do not match because the raw string differs127.0.0.0/8,10.0.0.0/8) are skipped because the address is treated as IPv6For example, with:
denyList: ['127.0.0.1']a request from
127.0.0.1may be represented as::ffff:127.0.0.1and bypass the deny rule.This behavior commonly occurs in Node.js environments where IPv4 clients are exposed as IPv4-mapped IPv6 addresses.
Impact
Applications that rely on IPv4-based
ipRestriction()rules may incorrectly allow or deny requests.In affected deployments, a denied IPv4 client may bypass access restrictions. Conversely, legitimate clients may be rejected when using IPv4 allow lists.
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NGHSA-26pp-8wgv-hjvm
Summary
Cookie names are not validated on the write path when using
setCookie(),serialize(), orserializeSigned()to generate Set-Cookie headers.While certain cookie attributes such as domain and path are validated, the cookie name itself may contain invalid characters.
This results in inconsistent handling of cookie names between parsing (read path) and serialization (write path).
Details
When applications use
setCookie(),serialize(), orserializeSigned()with a user-controlled cookie name, invalid values (e.g., containing control characters such as\ror\n) can be used to construct malformedSet-Cookieheader values.For example:
However, in modern runtimes such as Node.js and Cloudflare Workers, such invalid header values are rejected and result in a runtime error before the response is sent.
As a result, the reported header injection / response splitting behavior could not be reproduced in these environments.
Impact
Applications that pass untrusted input as the cookie name to
setCookie(),serialize(), orserializeSigned()may encounter runtime errors due to invalid header values.In tested environments, malformed
Set-Cookieheaders are rejected before being sent, and the reported header injection behavior could not be reproduced.This issue primarily affects correctness and robustness rather than introducing a confirmed exploitable vulnerability.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:LCVE-2026-39410
Summary
A discrepancy between browser cookie parsing and
parse()handling allows cookie prefix protections to be bypassed.Cookie names that are treated as distinct by the browser may be normalized to the same key by
parse(), allowing attacker-controlled cookies to override legitimate ones.Details
Browsers follow RFC 6265bis and only trim SP (
0x20) and HTAB (0x09) from cookie names. Other characters, such as the non-breaking space (U+00A0), are preserved as part of the cookie name.For example, the browser treats the following cookies as distinct:
However,
parse()previously used JavaScript'strim(), which removes a broader set of characters includingU+00A0. As a result, both names are normalized to:This mismatch allows attacker-controlled cookies with a
U+00A0prefix to shadow or override legitimate cookies when accessed viagetCookie().Impact
An attacker who can set cookies (e.g., via a man-in-the-middle on a non-secure page or other injection vector) can bypass cookie prefix protections and override sensitive cookies.
This may lead to:
__Secure-and__Host-prefix protectionsThis issue affects applications that rely on
getCookie()for security-sensitive cookie handling.Severity
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:NGHSA-458j-xx4x-4375
Summary
Improper handling of JSX attribute names in hono/jsx allows malformed attribute keys to corrupt the generated HTML output.
When untrusted input is used as attribute keys during server-side rendering, specially crafted keys can break out of attribute or tag boundaries and inject unintended HTML.
Details
When rendering JSX elements to HTML strings, attribute values are escaped, but attribute names (keys) were previously inserted into the output without validation.
If an attribute name contains characters such as
",>, or whitespace, it can alter the structure of the generated HTML.For example, malformed attribute names can:
This issue arises when untrusted input (such as query parameters or form data) is used as JSX attribute keys during server-side rendering.
Impact
An attacker who can control attribute keys used in JSX rendering may inject unintended attributes or HTML elements into the generated output.
This may lead to:
This issue affects applications that pass untrusted input as JSX attribute keys during server-side rendering.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:NRelease Notes
honojs/hono (hono)
v4.12.14Compare Source
Security fixes
This release includes fixes for the following security issues:
Improper handling of JSX attribute names in hono/jsx SSR
Affects: hono/jsx. Fixes missing validation of JSX attribute names during server-side rendering, which could allow malformed attribute keys to corrupt the generated HTML output and inject unintended attributes or elements. GHSA-458j-xx4x-4375
Other changes
fa2c74fv4.12.13Compare Source
v4.12.12Compare Source
Security fixes
This release includes fixes for the following security issues:
Middleware bypass via repeated slashes in serveStatic
Affects: Serve Static middleware. Fixes a path normalization inconsistency where repeated slashes (
//) could bypass route-based middleware protections and allow access to protected static files. GHSA-wmmm-f939-6g9cPath traversal in toSSG() allows writing files outside the output directory
Affects:
toSSG()for Static Site Generation. Fixes a path traversal issue where craftedssgParamsvalues could write files outside the configured output directory. GHSA-xf4j-xp2r-rqqxIncorrect IP matching in ipRestriction() for IPv4-mapped IPv6 addresses
Affects: IP Restriction Middleware. Fixes improper handling of IPv4-mapped IPv6 addresses (e.g.
::ffff:127.0.0.1) that could cause allow/deny rules to be bypassed. GHSA-xpcf-pg52-r92gMissing validation of cookie name on write path in setCookie()
Affects:
setCookie(),serialize(), andserializeSigned()fromhono/cookie. Fixes missing validation of cookie names on the write path, preventing inconsistent handling between parsing and serialization. GHSA-26pp-8wgv-hjvmNon-breaking space prefix bypass in cookie name handling in getCookie()
Affects:
getCookie()fromhono/cookie. Fixes a discrepancy in cookie name handling that could allow attacker-controlled cookies to override legitimate ones and bypass prefix protections. GHSA-r5rp-j6wh-rvv4Users who use Serve Static, Static Site Generation, Cookie utilities, or IP restriction middleware are strongly encouraged to upgrade to this version.
v4.12.11Compare Source
What's Changed
New Contributors
Full Changelog: honojs/hono@v4.12.10...v4.12.11
v4.12.10Compare Source
What's Changed
Simple capturing grouptest by @yusukebe in #4838New Contributors
Full Changelog: honojs/hono@v4.12.9...v4.12.10
v4.12.9Compare Source
What's Changed
parseBodyfrom bodyCache to prevent TypeError by @yusukebe in #4807PickResponseByStatusCodetype by @yusukebe in #4791fire()fallback behavior consistent withhandle()by @yusukebe in #4821New Contributors
Full Changelog: honojs/hono@v4.12.8...v4.12.9
v4.12.8Compare Source
What's Changed
New Contributors
Full Changelog: honojs/hono@v4.12.7...v4.12.8
Configuration
📅 Schedule: (UTC)
🚦 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.