Skip to content

Unrestricted File Upload in Form Framework

High severity GitHub Reviewed Published Mar 16, 2021 in TYPO3/typo3 • Updated Feb 2, 2024

Package

composer typo3/cms (Composer)

Affected versions

>= 10.0.0, < 10.4.14
>= 11.0.0, < 11.1.1
>= 9.0.0, < 9.5.25

Patched versions

10.4.14
11.1.1
9.5.25
composer typo3/cms-core (Composer)
>= 10.0.0, < 10.4.14
>= 11.0.0, < 11.1.1
>= 9.0.0, < 9.5.25
10.4.14
11.1.1
9.5.25
composer typo3/cms-form (Composer)
>= 8.0.0, <= 8.7.39
>= 9.0.0, <= 9.5.24
>= 10.0.0, <= 10.4.13
>= 11.0.0, <= 11.1.0
8.7.40
9.5.25
10.4.14
11.1.1

Description

Problem

Due to the lack of ensuring file extensions belong to configured allowed mime-types, attackers can upload arbitrary data with arbitrary file extensions - however, default fileDenyPattern successfully blocked files like .htaccess or malicious.php.

TYPO3 Extbase extensions, which implement a file upload and do not implement a custom TypeConverter to transform uploaded files into FileReference domain model objects are affected by the vulnerability as well, since the UploadedFileReferenceConverter of ext:form handles the file upload and will accept files of any mime-type which are persisted to the default location.

In any way, uploaded files are placed in the default location /fileadmin/user_upload/, in most scenarios keeping the submitted filename - which allows attackers to directly reference files, or even correctly guess filenames used by other individuals, disclosing this information.

No authentication is required to exploit this vulnerability.

Solution

Update to TYPO3 versions 8.7.40, 9.5.25, 10.4.14, 11.1.1 that fix the problem described.

Type converter UploadedFileReferenceConverter is not registered globally anymore and just handles uploaded files within the scope of the Form Framework. Guessable storage location has changed from /fileadmin/user_upload/form_<random-hash>/ to /fileadmin/form_uploads/. Allowed mime-types must match expected file extensions (e.g. application/pdf must be .pdf, and cannot be .html).

Extbase extensions, who rely on the global availability of the UploadedFileReferenceConverter must now implement a custom TypeConverter to handle file uploads or explicitly implement the ext:form UploadedFileReferenceConverter with appropriate setting for accepted mime-types.

Credits

Thanks to Sebastian Michaelsen, Marc Lindemann, Oliver Eglseder, Markus Volkmer, Jakob Kunzmann, Johannes Regner, Richie Lee who reported this issue, and to TYPO3 core & security team members Oliver Hader & Benni Mack, as well as TYPO3 contributor Ralf Zimmermann who fixed the issue.

References

References

@ohader ohader published to TYPO3/typo3 Mar 16, 2021
Reviewed Mar 23, 2021
Published to the GitHub Advisory Database Mar 23, 2021
Published by the National Vulnerability Database Mar 23, 2021
Last updated Feb 2, 2024

Severity

High

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
High
Availability
Low

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L/E:F/RL:O/RC:C

EPSS score

0.102%
(43rd percentile)

CVE ID

CVE-2021-21355

GHSA ID

GHSA-2r6j-862c-m2v2

Source code

No known source code

Credits

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.