Repository navigation
chore(deps): update dependency @astrojs/vercel to v11 [security] - #388
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
renovate
Bot
force-pushed
the
renovate/npm-astrojs-vercel-vulnerability
branch
from
September 2, 2026 19:16
5a642a5 to
9a5d0ea
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-vercel-vulnerability
branch
from
September 3, 2026 18:53
9a5d0ea to
1561539
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-vercel-vulnerability
branch
from
September 15, 2026 20:28
1561539 to
b581614
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-vercel-vulnerability
branch
from
September 23, 2026 03:10
b581614 to
cc33d72
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-vercel-vulnerability
branch
from
September 25, 2026 03:56
cc33d72 to
0bea82f
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-vercel-vulnerability
branch
from
October 5, 2026 19:03
0bea82f to
0e3aabc
Compare
renovate
Bot
force-pushed
the
renovate/npm-astrojs-vercel-vulnerability
branch
from
October 13, 2026 11:57
0e3aabc to
d4b2cea
Compare
This branch had an error being deployed
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:
^10.0.0→^11.0.0Astro: Unauthenticated path override in the @astrojs/vercel ISR function
CVE-2026-73424 / GHSA-x27w-589x-frm2
More information
Details
Summary
When ISR is enabled, the serverless entrypoint lets an unauthenticated request
decide which route the origin renders. The internal
_isrfunction reads thex_astro_pathquery parameter and rewrites the request path to it without anyauthentication. Edge level access controls only ever see the
/_isrpath, sothey do not apply to the route that actually gets rendered. This is the same
confused deputy problem as CVE-2026-33768, reachable again through the ISR path.
Impact
This affects apps that use
@astrojs/vercelwithisr: trueand protect routesat the edge. Two common setups are affected:
/admin).edgeMiddleware: true) where authorization lives in Astromiddleware, since that middleware runs at the edge and not in the origin.
An attacker reads any GET rendered route by requesting
/_isr?x_astro_path=/the/protected/path. No credentials are required. Theprotected content is produced by a fresh origin render, so the attack does not
depend on the response being cached first.
Details
packages/integrations/vercel/src/serverless/entrypoint.tspicks the real pathlike this:
The header path is gated by the per build secret and is fine. The ISR branch is
not. Two facts make it reachable by anyone:
_isrfunction is publicly addressable.x-vercel-isr: 1on requests to it, including direct externalrequests, so the attacker does not even need to send that header.
So
GET /_isr?x_astro_path=/adminsets the internal path to/adminand rendersit. The edge saw only
/_isr, which is allowed, so any path based rule on/adminnever fires. In split deployments the edge middleware also runs against/_isr, and the origin does not run middleware at all, so middleware based authis skipped as well.
How this regressed
CVE-2026-33768 was fixed in 10.0.2 by commit 335a204161 (PR #15959), which
required the secret for every path override and removed the query parameter
source. Commit aa266364fe (PR #16079, "Fix ISR path rewrite to prevent 404")
brought the query parameter back, guarded only by the
x-vercel-isrheader. Thatheader is not a security boundary, so the fix was effectively undone for ISR
routes starting in 10.0.3.
Worth noting the contrast: the original report treated Edge Middleware as the
mitigation and scoped the issue to deployments without it. Here, for split
deployments, Edge Middleware is bypassed too, since the attacker reaches
/_isrdirectly and the middleware only sees
/_isrwhile the origin runs none.Proof of concept
output: 'server'and adaptervercel({ isr: true })./adminthat returns sensitive content./adminat the edge, for example a Vercel path rule that returns 403, ora middleware auth check in a split (
edgeMiddleware: true) build./admin. It is blocked (403)./_isr?x_astro_path=/admin. It returns 200 with the admin content.The response header
X-Vercel-Cache: MISSconfirms it was rendered fresh, notserved from an existing cache entry.
What is not affected
path, so it still applies to the target route.
403 for POST, PUT and DELETE, so the method preserving variant of CVE-2026-33768
does not reproduce here. Impact is limited to reading (confidentiality).
/_isr.Severity
Unauthenticated read of any GET rendered route that is protected only at the edge.
No integrity or availability impact because the vector is GET only.
Suggested fix
One option would be to require the secret again for path overrides, the way
PR #15959 did, so the ISR branch stops trusting the client supplied
x_astro_path.The 404 that PR #16079 was fixing would then need another approach that does not
rely on client input.
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).
Release Notes
withastro/astro (@astrojs/vercel)
v11.0.3Compare Source
Patch Changes
3a43cf0Thanks @matthewp! - Improves internal ISR route handlingv11.0.2Compare Source
Patch Changes
eb6f97e]:v11.0.1Compare Source
Patch Changes
fcc050cThanks @astro-factory! - Fixes on-demand routes failing with "Cannot find native binding" on Vercel, caused by the serverless function loadingrolldownat runtimev11.0.0Compare Source
Major Changes
cafec4eThanks @delucis! - Upgrade to Vite v8Minor Changes
9a53f77Thanks @ascorbic! - Adds a CDN cache provider for Astro route caching on VercelSetup
Import
cacheVercel()from@astrojs/vercel/cacheand set it as your cache provider:Caching responses
Use
Astro.cache.set()in your pages and API routes to cache responses on Vercel's edge network. The provider setsVercel-CDN-Cache-ControlandVercel-Cache-Tagheaders on responses.You can also set cache rules for groups of routes in your config:
Invalidation
Purge cached responses by tag or path from any API route or server endpoint:
Both tag-based and path-based invalidation are supported. Tag invalidation is a soft invalidation, marking cached responses as stale so they can be revalidated in the background via stale-while-revalidate.
Patch Changes
241250bThanks @ocavue! - Triggers beta prereleases for packages that are still on alphaConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, 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.