Remote Code Execution in scratch-vm
Critical severity
GitHub Reviewed
Published
Jul 27, 2020
to the GitHub Advisory Database
•
Updated Sep 12, 2023
Package
Affected versions
<= 0.2.0-prerelease.20200709173451
Patched versions
0.2.0-prerelease.20200714185213
Description
Reviewed
Jul 27, 2020
Published to the GitHub Advisory Database
Jul 27, 2020
Last updated
Sep 12, 2023
MIT Lifelong Kindergarten Scratch scratch-vm before
0.2.0-prerelease.20200714185213
loads extension URLs from untrusted project.json files with certain_
characters, resulting in remote code execution because the URL's content is treated as a script and is executed as a worker. The responsible code isgetExtensionIdForOpcode
in serialization/sb3.js. The use of_
is incompatible with a protection mechanism in older versions, in which URLs were split and consequently deserialization attacks were prevented.NOTE: the scratch.mit.edu hosted service is not affected because of the lack of worker scripts.
References