CSV 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.
In 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
.
Since then, OWASP added 2 chars in that list:
This makes our previous prefix char (Tab \t
) part of the vulnerable characters, and OWASP suggests using the single quote '
for prefixing the value.
Symfony 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 @
.
The patch for this issue is available here for branch 4.4.
We would like to thank Jake Barwell for reporting the issue and Jérémy Derussé for fixing the issue.
github.com/FriendsOfPHP/security-advisories/blob/master/symfony/serializer/CVE-2021-41270.yaml
github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2021-41270.yaml
github.com/symfony/symfony
github.com/symfony/symfony/commit/3da6f2d45e7536ccb2a26f52fbaf340917e208a8
github.com/symfony/symfony/pull/44243
github.com/symfony/symfony/releases/tag/v5.3.12
github.com/symfony/symfony/security/advisories/GHSA-2xhg-w2g5-w95x
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/3BPT4SF6SIXFMZARDWED5T32J7JEH3EP
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/QSREFD2TJT5LWKM6S4MD3W26NQQ5WJUP
lists.fedoraproject.org/archives/list/[email protected]/message/3BPT4SF6SIXFMZARDWED5T32J7JEH3EP
lists.fedoraproject.org/archives/list/[email protected]/message/QSREFD2TJT5LWKM6S4MD3W26NQQ5WJUP
nvd.nist.gov/vuln/detail/CVE-2021-41270
symfony.com/cve-2021-41270