The vulnerability lies in the default behavior of several getURL and getSourceURL methods within the silverstripe/silverstripe-assets module. These methods had a default parameter $grant = true, which caused an access grant to be automatically added to the current user's session whenever a URL for a file was generated. This bypassed the intended permission model, allowing unauthorized access to protected files. The vulnerability is particularly exposed when image variants are created (e.g., using ScaleWidth() or Convert()), as these operations implicitly call the vulnerable getURL method.
The patch addresses this by changing the default parameter to $grant = false across all relevant methods, including the core implementation in SilverStripe\Assets\Storage\DBFile and the corresponding abstract/interface definitions in SilverStripe\Assets\ImageManipulation and SilverStripe\Assets\Storage\AssetContainer. Now, access must be explicitly granted by calling getURL(true), making the default behavior secure. The analysis of the patch commits clearly shows this change as the primary mitigation. An attacker could have exploited this by requesting an image or file, which would trigger a call to getURL() in the backend, granting them access to a protected resource.