CVE-2025-47939: Typo3/cms core TYPO3 Allows Unrestricted File Upload Vulnerability

MODERATE
Advisory Identifier: GHSA-9hq9-cr36-4wpj
CVSS 5.4
CWE-351 CWE-434
Published
Advisory Summary

CVE-2025-47939 is a MODERATE (CVSS 5.4) typo3 allows unrestricted file upload vulnerability (CWE-351: Insufficient Type Distinction) affecting Typo3/cms core libraries in the Packagist ecosystem. The issue involves typo3 allows unrestricted file upload in file abstraction layer. Remediation is available by upgrading affected packages to version 9.5.51, 10.4.50, 11.5.44, 12.4.31, 13.4.12.

CVE-2025-47939 at a Glance

CVE Identifier CVE-2025-47939
GHSA Identifier GHSA-9hq9-cr36-4wpj
Severity MODERATE
CVSS v3.1 Base Score 5.4
CWE Classification CWE-351: Insufficient Type Distinction
Affected Product Typo3/cms core
Package Ecosystem Packagist
Published Date
Last Updated

Security Impact

CVSS: 5.4

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required Low (PR:L)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality None (C:N)
Integrity Low (I:L)
Availability Low (A:L)

How to Fix CVE-2025-47939

To remediate this vulnerability, upgrade all affected Typo3/cms core dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

typo3/cms-core fixed: 9.5.51
Upgrade typo3/cms-core to 9.5.51
typo3/cms-core fixed: 10.4.50
Upgrade typo3/cms-core to 10.4.50
typo3/cms-core fixed: 11.5.44
Upgrade typo3/cms-core to 11.5.44
typo3/cms-core fixed: 12.4.31
Upgrade typo3/cms-core to 12.4.31
typo3/cms-core fixed: 13.4.12
Upgrade typo3/cms-core to 13.4.12
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for typo3/cms-core

How to Check if You Are Affected

To determine whether your application is affected by CVE-2025-47939, inspect your project dependencies for Typo3/cms core:

inspect dependencies for typo3/cms-core

Analyze the terminal output to locate any version of Typo3/cms core in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 9.5.51), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-351: Insufficient Type Distinction, where the product does not properly distinguish between different types of elements in a way that leads to insecure behavior. In Typo3/cms core, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Problem By design, the file management module in TYPO3’s backend user interface has historically allowed the upload of any file type, with the exception of those that are directly executable in a web server context. This lack of restriction means it is possible to upload files that may be considered potentially harmful, such as executable binaries (e.g., `.exe` files), or files with inconsistent file extensions and MIME types (for example, a file incorrectly named with a `.png` extension but actually carrying the MIME type `application/zip`). Although such files are not directly executable through the web server, their presence can introduce indirect risks. For example, third-party services such as antivirus scanners or malware detection systems might flag or block access to the website for end users if suspicious files are found. This could negatively affect the availability or reputation of the site. ### Solution Update to TYPO3 versions 9.5.51 ELTS, 10.4.50 ELTS, 11.5.44 ELTS, 12.4.31 LTS, 13.4.12 LTS that fix the problem described. > [!NOTE] > The mitigation strategies outlined below apply broadly to all file uploads handled through TYPO3's File Abstraction Layer (FAL), not just those performed via the backend interface. This means that any extension or custom integration leveraging FAL will also be subject to the new validation rules and configuration options. Developers are advised to review the implications for their code and refer to the [documentation of that change](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.4.x/Important-106240-EnforceFile-extensionsAndMime-typeConsistencyInFileAbstractionLayer.html) for guidance. > [!IMPORTANT] > > **Strong security defaults - Manual actions required** > > These versions introduce new configuration options to better control which files are permitted for upload and to improve consistency checks. > > A new configuration option, `$GLOBALS['TYPO3_CONF_VARS']['SYS']['miscfile_ext']`, has been added. This option allows administrators to explicitly define which file extensions should be permitted that are not already part of the built-in text or media file groups - examples include archive formats such as `zip` or `xz`. > > In addition, two new feature flags have been introduced to enhance security: > * `security.system.enforceAllowedFileExtensions`, enforces the defined list of allowed file extensions. This flag is enabled by default in new TYPO3 installations, but remains disabled in existing installations to prevent breaking changes. > * `security.system.enforceFileExtensionMimeTypeConsistency`, ensures that the uploaded file’s extension matches its actual MIME type, providing further validation of file integrity. This flag is active by default. > > It is recommended to configure the allowed file extensions via `$GLOBALS['TYPO3_CONF_VARS']['SYS']['miscfile_ext']` and to enable the feature flag `security.system.enforceAllowedFileExtensions` to enforce the restriction. ### Credits Thanks to Hamed Kohi for reporting this issue, and to TYPO3 core & security team member Oliver Hader for fixing it.

CVE-2025-47939 Affected Typo3/cms core Versions

5 component(s)
Fixed Versions:
9.5.5110.4.5011.5.4412.4.3113.4.12
Product / Package Ecosystem Affected Versions Fixed Version
typo3/cms-core
Packagist
≥ 9.0.0
< 9.5.51
9.5.51
typo3/cms-core
Packagist
≥ 10.0.0
< 10.4.50
10.4.50
typo3/cms-core
Packagist
≥ 11.0.0
< 11.5.44
11.5.44
typo3/cms-core
Packagist
≥ 12.0.0
< 12.4.31
12.4.31
typo3/cms-core
Packagist
≥ 13.0.0
< 13.4.12
13.4.12

References

Frequently Asked Questions

What is CVE-2025-47939?
CVE-2025-47939 is a security vulnerability in Typo3/cms core involving TYPO3 Allows Unrestricted File Upload in File Abstraction Layer under CWE-351: Insufficient Type Distinction.
Which Typo3/cms core versions are affected?
Affected versions include releases prior to 9.5.51, 10.4.50, 11.5.44, 12.4.31, 13.4.12 across affected packages: typo3/cms-core.
What version fixes CVE-2025-47939?
Upgrading to 9.5.51, 10.4.50, 11.5.44, 12.4.31, 13.4.12 (or the latest patched release for your respective branch) resolves the vulnerability.
Is typo3/cms-core affected?
Yes, typo3/cms-core is affected in releases prior to 9.5.51, 10.4.50, 11.5.44, 12.4.31, 13.4.12. Upgrade your dependency to 9.5.51, 10.4.50, 11.5.44, 12.4.31, 13.4.12 or later.
What is the CVSS score of CVE-2025-47939?
CVE-2025-47939 has a CVSS v3.1 base score of 5.4 (MODERATE) with vector string CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L.
What CWE is associated with CVE-2025-47939?
CVE-2025-47939 is classified under CWE-351: Insufficient Type Distinction (The product does not properly distinguish between different types of elements in a way that leads to insecure behavior.).
How can I check Packagist dependencies for CVE-2025-47939?
Run the dependency tree command: 'inspect dependencies for typo3/cms-core'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-9hq9-cr36-4wpj",
  "modified" : "2025-05-20T19:35:21Z",
  "published" : "2025-05-20T19:35:21Z",
  "aliases" : [ "CVE-2025-47939" ],
  "summary" : "TYPO3 Allows Unrestricted File Upload in File Abstraction Layer",
  "details" : "### Problem\nBy design, the file management module in TYPO3’s backend user interface has historically allowed the upload of any file type, with the exception of those that are directly executable in a web server context. This lack of restriction means it is possible to upload files that may be considered potentially harmful, such as executable binaries (e.g., `.exe` files), or files with inconsistent file extensions and MIME types (for example, a file incorrectly named with a `.png` extension but actually carrying the MIME type `application/zip`).\n\nAlthough such files are not directly executable through the web server, their presence can introduce indirect risks. For example, third-party services such as antivirus scanners or malware detection systems might flag or block access to the website for end users if suspicious files are found. This could negatively affect the availability or reputation of the site.\n\n### Solution\nUpdate to TYPO3 versions 9.5.51 ELTS, 10.4.50 ELTS, 11.5.44 ELTS, 12.4.31 LTS, 13.4.12 LTS that fix the problem described.\n\n> [!NOTE]\n> The mitigation strategies outlined below apply broadly to all file uploads handled through TYPO3's File Abstraction Layer (FAL), not just those performed via the backend interface. This means that any extension or custom integration leveraging FAL will also be subject to the new validation rules and configuration options. Developers are advised to review the implications for their code and refer to the [documentation of that change](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.4.x/Important-106240-EnforceFile-extensionsAndMime-typeConsistencyInFileAbstractionLayer.html) for guidance.\n\n> [!IMPORTANT]\n>\n> **Strong security defaults - Manual actions required**\n> \n> These versions introduce new configuration options to better control which files are permitted for upload and to improve consistency checks.\n> \n> A new configuration option, `$GLOBALS['TYPO3_CONF_VARS']['SYS']['miscfile_ext']`, has been added. This option allows administrators to explicitly define which file extensions should be permitted that are not already part of the built-in text or media file groups - examples include archive formats such as `zip` or `xz`.\n> \n> In addition, two new feature flags have been introduced to enhance security:\n> * `security.system.enforceAllowedFileExtensions`, enforces the defined list of allowed file extensions. This flag is enabled by default in new TYPO3 installations, but remains disabled in existing installations to prevent breaking changes.\n> * `security.system.enforceFileExtensionMimeTypeConsistency`, ensures that the uploaded file’s extension matches its actual MIME type, providing further validation of file integrity. This flag is active by default.\n> \n> It is recommended to configure the allowed file extensions via `$GLOBALS['TYPO3_CONF_VARS']['SYS']['miscfile_ext']` and to enable the feature flag `security.system.enforceAllowedFileExtensions` to enforce the restriction.\n\n### Credits\nThanks to Hamed Kohi for reporting this issue, and to TYPO3 core & security team member Oliver Hader for fixing it.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "typo3/cms-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "9.0.0"
      }, {
        "fixed" : "9.5.51"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 9.5.50"
    }
  }, {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "typo3/cms-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "10.0.0"
      }, {
        "fixed" : "10.4.50"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 10.4.49"
    }
  }, {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "typo3/cms-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "11.0.0"
      }, {
        "fixed" : "11.5.44"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 11.5.43"
    }
  }, {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "typo3/cms-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "12.0.0"
      }, {
        "fixed" : "12.4.31"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 12.4.30"
    }
  }, {
    "package" : {
      "ecosystem" : "Packagist",
      "name" : "typo3/cms-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "13.0.0"
      }, {
        "fixed" : "13.4.12"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 13.4.11"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/TYPO3/typo3/security/advisories/GHSA-9hq9-cr36-4wpj"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2025-47939"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/TYPO3-CMS/core/commit/c265beed6e2c01817c534a226e80e593400f8255"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/TYPO3-CMS/core"
  }, {
    "type" : "WEB",
    "url" : "https://typo3.org/security/advisory/typo3-core-sa-2025-014"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-351", "CWE-434" ],
    "severity" : "MODERATE",
    "github_reviewed" : true,
    "github_reviewed_at" : "2025-05-20T19:35:21Z",
    "nvd_published_at" : "2025-05-20T14:15:50Z"
  }
}