CVE-2021-41270: Symfony/serializer CSV Injection Vulnerability
MODERATECVE-2021-41270 is a MODERATE (CVSS 6.5) csv injection vulnerability (CWE-1236: Improper Neutralization of Formula Elements in a CSV File) affecting Symfony/serializer libraries in the Packagist ecosystem. The issue involves csv injection in symfony/serializer. Remediation is available by upgrading affected packages to version 5.3.12, 4.4.35.
CVE-2021-41270 at a Glance
Security Impact
CVSS: 6.5
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:H/I:N/A:N).
How to Fix CVE-2021-41270
To remediate this vulnerability, upgrade all affected Symfony/serializer dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade symfony/serializer to 5.3.12
Upgrade symfony/serializer to 4.4.35
Upgrade symfony/symfony to 4.4.35
Upgrade symfony/symfony to 5.3.12
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for symfony/serializer
How to Check if You Are Affected
To determine whether your application is affected by CVE-2021-41270, inspect your project dependencies for Symfony/serializer:
inspect dependencies for symfony/serializer
Analyze the terminal output to locate any version of Symfony/serializer in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 5.3.12), 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-1236: Improper Neutralization of Formula Elements in a CSV File, where the product saves user-provided information into a comma-separated value (csv) file, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as a command when the file is opened by a spreadsheet product. In Symfony/serializer, 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
CVE-2021-41270 Affected Symfony/serializer Versions
4 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
symfony/serializer
|
Packagist |
≥ 5.0.0
< 5.3.12
|
5.3.12
|
|
symfony/serializer
|
Packagist |
≥ 4.1.0
< 4.4.35
|
4.4.35
|
|
symfony/symfony
|
Packagist |
≥ 4.1.0
< 4.4.35
|
4.4.35
|
|
symfony/symfony
|
Packagist |
≥ 5.0.0
< 5.3.12
|
5.3.12
|
References
Frequently Asked Questions
What is CVE-2021-41270?
Which Symfony/serializer versions are affected?
What version fixes CVE-2021-41270?
Is symfony/serializer affected?
Is symfony/symfony affected?
What is the CVSS score of CVE-2021-41270?
What CWE is associated with CVE-2021-41270?
How can I check Packagist dependencies for CVE-2021-41270?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-2xhg-w2g5-w95x",
"modified" : "2024-02-05T11:14:05Z",
"published" : "2021-11-24T21:01:23Z",
"aliases" : [ "CVE-2021-41270" ],
"summary" : "CSV Injection in symfony/serializer",
"details" : "Description\n-----------\n\nCSV Injection, also known as Formula Injection, occurs when websites embed untrusted input inside CSV files. When a spreadsheet program opens a CSV, any cell starting with `=` is interpreted by the software as a formula and could be abused by an attacker.\n\nIn Symfony 4.1, we've added the opt-in `csv_escape_formulas` option in `CsvEncoder`, to prefix all cells starting by `=`, `+`, `-` or `@` by a tab `\\t`. \n\nSince then, OWASP added 2 chars in that list: \n- Tab (0x09)\n- Carriage return (0x0D)\n\nThis makes our previous prefix char (Tab `\\t`) part of the vulnerable characters, and [OWASP suggests](https://owasp.org/www-community/attacks/CSV_Injection) using the single quote `'` for prefixing the value.\n\nResolution\n----------\n\nSymfony now follows the OWASP recommendations and use the single quote `'` to prefix formulas and adds the prefix to cells starting by `\\t`, `\\r` as well as `=`, `+`, `-` and `@`.\n\nThe patch for this issue is available [here](https://github.com/symfony/symfony/commit/3da6f2d45e7536ccb2a26f52fbaf340917e208a8) for branch 4.4.\n\nCredits\n-------\n\nWe would like to thank Jake Barwell for reporting the issue and Jérémy Derussé for fixing the issue.\n",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Packagist",
"name" : "symfony/serializer"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "5.0.0"
}, {
"fixed" : "5.3.12"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Packagist",
"name" : "symfony/serializer"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "4.1.0"
}, {
"fixed" : "4.4.35"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Packagist",
"name" : "symfony/symfony"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "4.1.0"
}, {
"fixed" : "4.4.35"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Packagist",
"name" : "symfony/symfony"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "5.0.0"
}, {
"fixed" : "5.3.12"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/symfony/symfony/security/advisories/GHSA-2xhg-w2g5-w95x"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2021-41270"
}, {
"type" : "WEB",
"url" : "https://github.com/symfony/symfony/pull/44243"
}, {
"type" : "WEB",
"url" : "https://github.com/symfony/symfony/commit/3da6f2d45e7536ccb2a26f52fbaf340917e208a8"
}, {
"type" : "WEB",
"url" : "https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/serializer/CVE-2021-41270.yaml"
}, {
"type" : "WEB",
"url" : "https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2021-41270.yaml"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/symfony/symfony"
}, {
"type" : "WEB",
"url" : "https://github.com/symfony/symfony/releases/tag/v5.3.12"
}, {
"type" : "WEB",
"url" : "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/3BPT4SF6SIXFMZARDWED5T32J7JEH3EP"
}, {
"type" : "WEB",
"url" : "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/QSREFD2TJT5LWKM6S4MD3W26NQQ5WJUP"
}, {
"type" : "WEB",
"url" : "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/3BPT4SF6SIXFMZARDWED5T32J7JEH3EP"
}, {
"type" : "WEB",
"url" : "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/QSREFD2TJT5LWKM6S4MD3W26NQQ5WJUP"
}, {
"type" : "WEB",
"url" : "https://symfony.com/cve-2021-41270"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-1236" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2021-11-24T20:04:02Z",
"nvd_published_at" : "2021-11-24T19:15:00Z"
}
}