Skip to content

Commit c997efb

Browse files
committed
1 parent 78d181e commit c997efb

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
- Fixed a bug where the control panel requests could trigger an infinite browser redirect loop. ([#18420](https://github.com/craftcms/cms/issues/18420))
66
- Fixed a [moderate-severity](https://github.com/craftcms/cms/security/policy#severity--remediation) RCE vulnerability. (GHSA-4484-8v2f-5748)
7+
- Fixed a [low-severity](https://github.com/craftcms/cms/security/policy#severity--remediation) path traversal vulnerability. (GHSA-472v-j2g4-g9h2)
78

89
## 4.17.4 - 2026-02-11
910

src/controllers/AssetsController.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,14 @@ public function actionReplaceFile(): Response
386386

387387
$sourceAssetId = $this->request->getBodyParam('sourceAssetId');
388388
$targetFilename = $this->request->getBodyParam('targetFilename');
389+
390+
if (
391+
$$targetFilename &&
392+
(str_contains($targetFilename, '/') || str_contains($targetFilename, '\\'))
393+
) {
394+
throw new BadRequestHttpException('Invalid filename: $targetFilename');
395+
}
396+
389397
$uploadedFile = UploadedFile::getInstanceByName('replaceFile');
390398

391399
$assets = Craft::$app->getAssets();

0 commit comments

Comments
 (0)