MediumGHSA-jgcf-rf45-2f8vCVE-2026-24749

Silverstripe Assets Module has a DBFile::getURL() permission bypass

Published 16 Apr 2026 · Updated 5 May 2026

Affected packages

Affected
<2.4.5
Fixed in
2.4.5
Update to the fixed version for your release line, for example:composer require silverstripe/assets:^2.4.5
Affected
>=3.0.0 <3.1.3
Fixed in
3.1.3
Update to the fixed version for your release line, for example:composer require silverstripe/assets:^3.1.3

Details

Impact

Images rendered in templates or otherwise accessed via DBFile::getURL() or DBFile::getSourceURL() incorrectly add an access grant to the current session, which bypasses file permissions.

This usually happens when creating an image variant, for example using a manipulation method like ScaleWidth() or Convert().

Note that if you use DBFile directly in the $db configuration for a DataObject class that doesn't subclass File, and if you were setting the visibility of those files to "protected", those files will now need an explicit access grant to be accessed. If you do not want to explicitly provide access grants for these files (i.e. you want these files to be accessible by default), you should use the "public" visibility.

Reported by

Restruct web & apps

Is GHSA-jgcf-rf45-2f8v in any of your client repos?

Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected silverstripe/assets, and gives you the command that fixes it.

References

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.