CVE-2026-114623
Beschrijving NL
baserCMS is een framework voor websiteontwikkeling. In versies 5.0.0 vóór 5.3.2 en 5.4.0 vóór 5.4.2 kan een geauthenticeerde gebruiker met alleen toegang tot themabestanden de themamap verlaten via het beheerdersscherm van de optionele BcThemeFile-plugin. ThemeFilesController::parseArgs() construeert een pad dat letterlijke ../ segmenten bevat, en de weergave- en bewerkingsacties geven dit door aan ThemeFilesService::get() zonder validatie op aanwezigheid van het pad. De autorisatie controleert het onopgeloste verzoekpad, waarna ThemeFile::_getContents() het opgeloste bestand leest en de inhoud ervan in het tekstveld van het formulier weergeeft. Een client moet de puntsegmenten behouden en deze niet normaliseren. Leesbare bestanden zijn beperkt tot .php, .css, .js en .ctp; dit kan de broncode van de applicatie en de databasegegevens van config/install.php in MySQL- of PostgreSQL-implementaties onthullen, terwijl SQLite-configuraties een leeg databasewachtwoord hebben. Het lezen van config/app_local.php kan de Security.salt-fallback blootleggen, die alleen effectief is als deze niet wordt overschreven door omgevingsconfiguratie. Het beveiligingslek onthult geen .env-, .pem- of SQLite .db-bestanden, staat zelf geen bestandsbewerkingen of code-uitvoering toe en heeft geen invloed op de aparte API-route getFullpath(). De plugin is standaard uitgeschakeld en niet-geauthenticeerde verzoeken zijn niet voldoende. Dit probleem is verholpen in versie 5.3.2 en 5.4.2.
Origineel (Engels) tonen
baserCMS is a website development framework. In versions 5.0.0 before 5.3.2 and 5.4.0 before 5.4.2, an authenticated user with only theme-file view permission can traverse outside the theme directory through the optional BcThemeFile plugin's Admin web screen. ThemeFilesController::parseArgs() constructs a path containing literal ../ segments, and the view and edit actions pass it to ThemeFilesService::get() without containment validation. Authorization checks the unresolved request path, after which ThemeFile::_getContents() reads the resolved file and exposes its contents in the form textarea. A client must preserve the dot segments rather than normalize them away. Readable files are limited to .php, .css, .js, and .ctp; this can disclose application source and config/install.php database credentials in MySQL or PostgreSQL deployments, while SQLite configurations have an empty database password. Reading config/app_local.php may expose the Security.salt fallback, which is effective only when not overridden by environment configuration. The flaw does not disclose .env, .pem, or SQLite .db files, does not itself permit file writes or code execution, and does not affect the separate API getFullpath() route. The plugin is disabled by default and unauthenticated requests are not sufficient. This issue has been patched in versions 5.3.2 and 5.4.2.