{"id":"GHSA-2r6j-862c-m2v2","summary":"Unrestricted File Upload in Form Framework","details":"\n### Problem\nDue 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_.\n\nTYPO3 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.\n\nIn 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.\n\nNo authentication is required to exploit this vulnerability.\n\n### Solution\nUpdate to TYPO3 versions 8.7.40, 9.5.25, 10.4.14, 11.1.1 that fix the problem described.\n\nType 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\\_\\\u003crandom-hash\\\u003e/_ to _/fileadmin/form_uploads/\u003crandom-40-bit\u003e_. Allowed mime-types must match expected file extensions (e.g. _application/pdf_ must be _.pdf_, and cannot be _.html_).\n\nExtbase 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.\n\n### Credits\nThanks 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.\n\n### References\n* [TYPO3-CORE-SA-2021-002](https://typo3.org/security/advisory/typo3-core-sa-2021-002)","aliases":["BIT-typo3-2021-21355","CVE-2021-21355"],"modified":"2026-07-08T06:29:29.299723425Z","published":"2021-03-23T01:53:52Z","database_specific":{"github_reviewed_at":"2021-03-23T01:41:38Z","nvd_published_at":"2021-03-23T02:15:00Z","cwe_ids":["CWE-434","CWE-552"],"severity":"HIGH","github_reviewed":true},"references":[{"type":"WEB","url":"https://github.com/TYPO3/TYPO3.CMS/security/advisories/GHSA-2r6j-862c-m2v2"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2021-21355"},{"type":"WEB","url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/typo3/cms-core/CVE-2021-21355.yaml"},{"type":"WEB","url":"https://github.com/FriendsOfPHP/security-advisories/blob/master/typo3/cms/CVE-2021-21355.yaml"},{"type":"WEB","url":"https://packagist.org/packages/typo3/cms-form"},{"type":"WEB","url":"https://typo3.org/security/advisory/typo3-core-sa-2021-002"}],"affected":[{"package":{"name":"typo3/cms-form","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms-form"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"8.0.0"},{"fixed":"8.7.40"}]}],"versions":["v8.7.10","v8.7.11","v8.7.12","v8.7.13","v8.7.14","v8.7.15","v8.7.16","v8.7.17","v8.7.18","v8.7.19","v8.7.20","v8.7.21","v8.7.22","v8.7.23","v8.7.24","v8.7.25","v8.7.26","v8.7.27","v8.7.28","v8.7.29","v8.7.30","v8.7.31","v8.7.32","v8.7.7","v8.7.8","v8.7.9"],"database_specific":{"last_known_affected_version_range":"\u003c= 8.7.39","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms-form","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms-form"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"9.0.0"},{"fixed":"9.5.25"}]}],"versions":["v9.0.0","v9.1.0","v9.2.0","v9.2.1","v9.3.0","v9.3.1","v9.3.2","v9.3.3","v9.4.0","v9.5.0","v9.5.1","v9.5.10","v9.5.11","v9.5.12","v9.5.13","v9.5.14","v9.5.15","v9.5.16","v9.5.17","v9.5.18","v9.5.19","v9.5.2","v9.5.20","v9.5.21","v9.5.22","v9.5.23","v9.5.24","v9.5.3","v9.5.4","v9.5.5","v9.5.6","v9.5.7","v9.5.8","v9.5.9"],"database_specific":{"last_known_affected_version_range":"\u003c= 9.5.24","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms-form","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms-form"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"10.0.0"},{"fixed":"10.4.14"}]}],"versions":["v10.0.0","v10.1.0","v10.2.0","v10.2.1","v10.2.2","v10.3.0","v10.4.0","v10.4.1","v10.4.10","v10.4.11","v10.4.12","v10.4.13","v10.4.2","v10.4.3","v10.4.4","v10.4.5","v10.4.6","v10.4.7","v10.4.8","v10.4.9"],"database_specific":{"last_known_affected_version_range":"\u003c= 10.4.13","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms-form","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms-form"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"11.0.0"},{"fixed":"11.1.1"}]}],"versions":["v11.0.0","v11.1.0"],"database_specific":{"last_known_affected_version_range":"\u003c= 11.1.0","source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms-core","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms-core"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"10.0.0"},{"fixed":"10.4.14"}]}],"versions":["v10.0.0","v10.1.0","v10.2.0","v10.2.1","v10.2.2","v10.3.0","v10.4.0","v10.4.1","v10.4.10","v10.4.11","v10.4.12","v10.4.13","v10.4.2","v10.4.3","v10.4.4","v10.4.5","v10.4.6","v10.4.7","v10.4.8","v10.4.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms-core","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms-core"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"11.0.0"},{"fixed":"11.1.1"}]}],"versions":["v11.0.0","v11.1.0"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms-core","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms-core"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"9.0.0"},{"fixed":"9.5.25"}]}],"versions":["v9.0.0","v9.1.0","v9.2.0","v9.2.1","v9.3.0","v9.3.1","v9.3.2","v9.3.3","v9.4.0","v9.5.0","v9.5.1","v9.5.10","v9.5.11","v9.5.12","v9.5.13","v9.5.14","v9.5.15","v9.5.16","v9.5.17","v9.5.18","v9.5.19","v9.5.2","v9.5.20","v9.5.21","v9.5.22","v9.5.23","v9.5.24","v9.5.3","v9.5.4","v9.5.5","v9.5.6","v9.5.7","v9.5.8","v9.5.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"10.0.0"},{"fixed":"10.4.14"}]}],"versions":["v10.0.0","v10.1.0","v10.2.0","v10.2.1","v10.2.2","v10.3.0","v10.4.0","v10.4.1","v10.4.10","v10.4.11","v10.4.12","v10.4.13","v10.4.2","v10.4.3","v10.4.4","v10.4.5","v10.4.6","v10.4.7","v10.4.8","v10.4.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"11.0.0"},{"fixed":"11.1.1"}]}],"versions":["v11.0.0","v11.1.0"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}},{"package":{"name":"typo3/cms","ecosystem":"Packagist","purl":"pkg:composer/typo3/cms"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"9.0.0"},{"fixed":"9.5.25"}]}],"versions":["v9.0.0","v9.1.0","v9.2.0","v9.2.1","v9.3.0","v9.3.1","v9.3.2","v9.3.3","v9.4.0","v9.5.0","v9.5.1","v9.5.10","v9.5.11","v9.5.12","v9.5.13","v9.5.14","v9.5.15","v9.5.16","v9.5.17","v9.5.18","v9.5.19","v9.5.2","v9.5.20","v9.5.21","v9.5.22","v9.5.23","v9.5.24","v9.5.3","v9.5.4","v9.5.5","v9.5.6","v9.5.7","v9.5.8","v9.5.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-2r6j-862c-m2v2/GHSA-2r6j-862c-m2v2.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"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"}]}