Voor het bijhouden van de administratie, voorraadbeheer of marketinganalyses maken vrijwel alle WooCommerce-winkeliers regelmatig gebruik van de ingebouwde exportfuncties om productgegevens, bestellingen en klantenlijsten te exporteren naar een CSV-bestand (Comma-Separated Values). Hoewel dit proces veilig lijkt omdat het puur om tekstbestanden gaat, schuilt er een gevaar in de manier waarop spreadsheetprogramma's zoals Microsoft Excel deze bestanden verwerken: CSV Injection (ook wel Formula Injection genoemd).
Hoe CSV Injection werkt in e-commerce
Spreadsheetprogramma's behandelen cellen die beginnen met symbolen zoals =, +, -, of @ automatisch als uitvoerbare formules.
Een aanvaller kan een account aanmaken op uw webshop en misbruik maken van een invoerveld dat later in een export terechtkomt. Denk aan:
-
De Producttitel in een plug-in voor productaanvragen.
-
De Bedrijfsnaam bij het registreren van een B2B-klantenaccount.
-
De Tekst van een productbeoordeling.
De aanvaller vult als tekst een specifieke Excel-formule in, zoals: =DDE("cmd";"/c calc";"A1")
Wanneer de webshopeigenaar later via het WooCommerce-dashboard een CSV-export genereert van alle nieuwe klanten of beoordelingen, bevat het bestand deze kwaadaardige string. Zodra de winkelier het CSV-bestand opent in Microsoft Excel en (vaak onbewust) de waarschuwingen voor externe gegevenskoppelingen accepteert, voert Excel de formule uit. In dit voorbeeld wordt de Windows-opdrachtprompt geactiveerd en de rekenmachine geopend. Een hacker kan dit misbruiken om op de achtergrond schadelijke software (zoals een keylogger) op de computer van de winkelier te installeren.
De gevaren voor de beheerder
CSV Injection vormt een directe brug tussen de online webshop en de lokale computer van de beheerder. Aangezien administrators dagelijks met deze exports werken, is het een uiterst effectieve vector voor gerichte cyberaanvallen (spear phishing). Als de computer van de beheerder wordt gecompromitteerd, liggen alle inloggegevens van de hosting en payment gateways direct op straat.
Hoe ontwikkelaars CSV-exports beveiligen
Om CSV Injection effectief te bestrijden, moeten alle gegevens die naar een CSV-bestand worden geschreven, worden gecontroleerd op gevaarlijke begintekens. Als een tekstveld begint met =, +, -, of @, moet er een veiligheidsteken (meestal een enkele apostrof ') voor worden geplaatst. Dit dwingt Excel om de cel strikt als platte tekst te behandelen.
function safe_csv_export_filter($field_data) {
$dangerous_chars = array('=', '+', '-', '@');
// Controleer of het veld begint met een gevaarlijk teken
if ( !empty($field_data) && in_array(substr($field_data, 0, 1), $dangerous_chars) ) {
// Voeg een enkele quote toe om formule-uitvoering te blokkeren
$field_data = "'" . $field_data;
}
return $field_data;
}
Advies voor site-beheerders
-
Wees kritisch in Excel: Wanneer u een geëxporteerd CSV-bestand uit uw WooCommerce-winkel opent en Excel vraagt om "Automatische updates van koppelingen" in te schakelen, weiger dit dan altijd direct.
-
Gebruik Google Sheets voor inspectie: Google Sheets is inherent veiliger in de omgang met CSV-formule-injecties dan oudere standalone desktopversies van Excel. Het importeren van het bestand in een cloudomgeving minimaliseert het risico op lokale malware-uitvoering.
