CSV Injection
Many web applications allow the user to download content such as templates for invoices or user settings to a CSV file. Many users choose to open the CSV file in either Excel, Libre Office or Open Office. When a web application does not properly validate the contents of the CSV file, it could lead to contents of a cell or many cells being executed.
Summary
Methodology
CSV Injection, also known as Formula Injection, is a security vulnerability that occurs when untrusted input is included in a CSV file. Any formula can be started with:
Basic exploits with Dynamic Data Exchange.
-
Spawn a calc
-
PowerShell download and execute
-
Prefix obfuscation and command chaining
-
Using rundll32 instead of cmd
-
Using null characters to bypass dictionary filters. Since they are not spaces, they are ignored when executed.
Technical details of the above payloads:
cmd
is the name the server can respond to whenever a client is trying to access the server/C
calc is the file name which in our case is the calc(i.e the calc.exe)!A0
is the item name that specifies unit of data that a server can respond when the client is requesting the data
References
- CSV Excel Macro Injection - Timo Goosen, Albinowax - Jun 21, 2022
- CSV Excel formula injection - Google Bug Hunter University - May 22, 2022
- CSV Injection – A Guide To Protecting CSV Files - Akansha Kesharwani - 30/11/2017
- From CSV to Meterpreter - Adam Chester - November 05, 2015
- The Absurdly Underestimated Dangers of CSV Injection - George Mauer - 7 October, 2017
- Three New DDE Obfuscation Methods - ReversingLabs - September 24, 2018
- Your Excel Sheets Are Not Safe! Here's How to Beat CSV Injection - we45 - October 5, 2020