Svelte version 1.49.1 is a patch release following closely on the heels of version 1.49.0, both iterations of the "magical disappearing UI framework," Svelte. Examining the package.json data reveals that the core dependencies and development tools remain consistent between the two versions. This includes crucial build tools like Rollup and Typescript, along with testing frameworks like Mocha and JSDOM. This suggests that the updates likely involve bug fixes or minor improvements rather than significant feature additions or dependency upgrades.
For developers, the practically identical dependency manifests imply a seamless transition between 1.49.0 and 1.49.1. Upgrading should not introduce any breaking changes related to tooling or compatibility. The quick release of 1.49.1 suggests that 1.49.0 may have contained a bug or issue that needed immediate attention. Therefore, developers using 1.49.0 should upgrade to 1.49.1 to benefit from any bug fixes.
The release dates highlight the proximity of the releases: both deployed on December 16, 2017, but 1.49.1 coming out just nearly 17 hours after. This short interval further suggests a quick fix deployment, making 1.49.1 desirable to new svelte users.
All the vulnerabilities related to the version 1.49.1 of the package
Svelte vulnerable to XSS when using objects during server-side rendering
The package svelte before 3.49.0 is vulnerable to Cross-site Scripting (XSS) due to improper input sanitization and to improper escape of attributes when using objects during SSR (Server-Side Rendering). Exploiting this vulnerability is possible via objects with a custom toString() function.
Svelte has a potential mXSS vulnerability due to improper HTML escaping
A potential XSS vulnerability exists in Svelte for versions prior to 4.2.19.
Svelte improperly escapes HTML on server-side rendering. It converts strings according to the following rules:
"
-> "
&
-> &
<
-> <
&
-> &
The assumption is that attributes will always stay as such, but in some situation the final DOM tree rendered on browsers is different from what Svelte expects on server-side rendering. This may be leveraged to perform XSS attacks. More specifically, this can occur when injecting malicious content into an attribute within a <noscript>
tag.
A vulnerable page (+page.svelte
):
<script>
import { page } from "$app/stores"
// user input
let href = $page.url.searchParams.get("href") ?? "https://example.com";
</script>
<noscript>
<a href={href}>test</a>
</noscript>
If a user accesses the following URL,
http://localhost:4173/?href=</noscript><script>alert(123)</script>
then, alert(123)
will be executed.
XSS, when using an attribute within a noscript tag