Skip to content

GHSA-49w6-73cw-chjr CVE-2024-56159

Astro's server source code is exposed to the public if sourcemaps are enabled

High npm
Severity
7.8 / 10
High · CVSS 4.0
Exploit chance (EPSS)
1.54%
Chance of exploitation in the next 30 days. Higher than 74.86% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-219 Storage of File with Sensitive Data Under Web Root
Fix
5.0.8
Upgrade astro to this version or later

Description

Summary

A bug in the build process allows any unauthenticated user to read parts of the server source code.

Details

During build, along with client assets such as css and font files, the sourcemap files for the server code are moved to a publicly-accessible folder. https://github.com/withastro/astro/blob/176fe9f113fd912f9b61e848b00bbcfecd6d5c2c/packages/astro/src/core/build/static-build.ts#L139

Any outside party can read them with an unauthorized HTTP GET request to the same server hosting the rest of the website.

While some server files are hashed, making their access obscure, the files corresponding to the file system router (those in src/pages) are predictably named. For example. the sourcemap file for src/pages/index.astro gets named dist/client/pages/index.astro.mjs.map.

PoC

Here is one example of an affected open-source website: https://creatorsgarten.org/pages/index.astro.mjs.map

<image width="500" height="263" src="https://github.com/user-attachments/assets/773c5532-87af-42b8-838e-8f5472bf9f68"/>

The file can be saved and opened using https://evanw.github.io/source-map-visualization/ to reconstruct the source code.

<image width="500" height="271" src="https://github.com/user-attachments/assets/7d35d0ca-3a29-4666-be21-cfefe311ac9d"/>

The above accurately mirrors the source code as seen in the repository: https://github.com/creatorsgarten/creatorsgarten.org/blob/main/src/pages/index.astro

<image width="500" height="298" src="https://github.com/user-attachments/assets/39e77197-8382-4556-a024-c526dacccc1c"/>

The above was found as the 4th result (and the first one on Astro 5.0+) when making the following search query on GitHub.com (search results link):

path:astro.config.mjs @sentry/astro

This vulnerability is the root cause of https://github.com/withastro/astro/issues/12703, which links to a simple stackblitz project demonstrating the vulnerability. Upon build, notice the contents of the dist/client (referred to as config.build.client in astro code) folder. All astro servers make the folder in question accessible to the public internet without any authentication. It contains .map files corresponding to the code that runs on the server.

Impact

All server-output (SSR) projects on Astro 5 versions v5.0.3 through v5.0.6 (inclusive), that have sourcemaps enabled, either directly or through an add-on such as sentry, are affected. The fix for server-output projects was released in astro@5.0.7.

Additionally, all static-output (SSG) projects built using Astro 4 versions 4.16.17 or older, or Astro 5 versions 5.0.7 or older, that have sourcemaps enabled are also affected. The fix for static-output projects was released in astro@5.0.8, and backported to Astro v4 in astro@4.16.18.

The immediate impact is limited to source code. Any secrets or environment variables are not exposed unless they are present verbatim in the source code.

There is no immediate loss of integrity within the the vulnerable server. However, it is possible to subsequently discover another vulnerability via the revealed source code .

There is no immediate impact to availability of the vulnerable server. However, the presence of an unsafe regular expression, for example, can quickly be exploited to subsequently compromise the availability.

  • Network attack vector.
  • Low attack complexity.
  • No privileges required.
  • No interaction required from an authorized user.
  • Scope is limited to first party. Although the source code of closed-source third-party software may also be exposed.

Remediation

The fix for server-output projects was released in astro@5.0.7, and the fix for static-output projects was released in astro@5.0.8 and backported to Astro v4 in astro@4.16.18. Users are advised to update immediately if they are using sourcemaps or an integration that enables sourcemaps.

Affected versions

npm

PackageVulnerableFixed in
astro
<= 4.16.17
No fix yet
astro
>= 5.0.0-alpha.0, < 5.0.8
5.0.8
astro
>= 5.0.0-alpha.0, < 5.0.8
5.0.8
astro
< 4.16.18
4.16.18

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

astro npm → 5.0.8

npm
npm install astro@5.0.8
yarn
yarn add astro@5.0.8
pnpm
pnpm add astro@5.0.8

Severity breakdown

CVSS 4.0 7.8

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:L/SA:L

Attack vector
Network
Attack complexity
Low
Attack requirements
None
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
Low
Integrity (vulnerable system)
None
Availability (vulnerable system)
None
Confidentiality (subsequent systems)
High
Integrity (subsequent systems)
Low
Availability (subsequent systems)
Low

CVSS 3.1 5.3

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Weakness

CWE-219: Storage of File with Sensitive Data Under Web Root

The product stores sensitive data under the web document root with insufficient access control, which might make it accessible to untrusted parties.

How to prevent it
  • Implementation, System Configuration: Avoid storing information under the web root directory.
  • System Configuration: Access control permissions should be set to prevent reading/writing of sensitive files inside/outside of the web directory.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-98hj-9722-w3j8
Astro: Reflected/Stored XSS via unescaped <script>/<style> tag content in JSX/MDX rendering
Medium Also affects astro
GHSA-mpr7-6m5w-76rw
Astro: Arbitrary CSS injection in Astro View Transitions
Low Also affects astro
GHSA-26w7-cxv4-gfx2
Astro: Remote code execution through AVIF image optimization
Critical Also affects astro
GHSA-376h-93r7-7g6f
Astro: Authorization bypass from missing path-segment boundary check when stripping the configured base
Medium Also affects astro
GHSA-8mv7-9c27-98vc
Astro: composable `astro/hono` pipeline bypasses `security.checkOrigin` when `middleware()` is absent or misordered
Medium Also affects astro
GHSA-f48w-9m4c-m7f5
Astro: XSS via unescaped spread attribute names in renderHTMLElement (incomplete fix for CVE-2026-54298)
Medium Also affects astro
GHSA-7pw4-f3q4-r2p2
Astro: Cross-site scripting via unescaped transition:* directive values on hydrated islands
Low Also affects astro
GHSA-4g3v-8h47-v7g6
Astro: Reflected XSS via unescaped View Transition animation properties
Medium Also affects astro

Credits: lilnasy

Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor