Svelte 3.42.0 and 3.41.0 are minor version updates to the Svelte JavaScript framework, focusing on bug fixes, performance improvements, and tooling enhancements rather than introducing major new features. Both versions share the same core description: "Cybernetically enhanced web apps," signifying Svelte's focus on efficient and performant web application development.
A key difference lies in the released date, with version 3.42.0 released on 2021-08-04 and version 3.41.0 released on 2021-07-27. This indicates that 3.42.0 includes the latest bug fixes and refinements since the previous release. While a detailed changelog comparing the two versions remains essential for comprehensive information, the dist object reveals some file changes within the packaged library. Svelte 3.41.0 has a file count of 230 while Svelte 3.42.0 has a file count of 229. Also the packed size is changed from 6911929 to 6921745
For developers, upgrading to 3.42.0 is likely recommended to benefit from the latest stability improvements and any minor performance gains. The developer dependencies, encompassing tools for testing, linting, and bundling are identical across both versions, suggesting consistent workflows and tooling support. As with any update, developers should review the official Svelte changelog for specifics on bug fixes and potential breaking changes.
All the vulnerabilities related to the version 3.42.0 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