Het beheren van een grote productcatalogus in WooCommerce vereist vaak het importeren en exporteren van productgegevens via CSV-bestanden (Comma-Separated Values). WooCommerce heeft hiervoor een uitstekende ingebouwde importeur. Echter, deze functionaliteit introduceert een specifiek type kwetsbaarheid bekend als CSV Injection (of Formula Injection). Als een aanvaller erin slaagt om kwaadaardige formules in productvelden te injecteren, kan hij de computer van de administrator infecteren op het moment dat deze het geëxporteerde bestand opent in Excel.
Hoe CSV Injection (Formula Injection) werkt
Spreadsheetprogramma's zoals Microsoft Excel, LibreOffice Calc en Google Sheets behandelen cellen die beginnen met een specifiek wiskundig symbool (zoals =, +, -, lub @) automatisch als formules.
Een aanvaller maakt een account aan op uw webshop (of misbruikt een lek) en wijzigt zijn "Voornaam" of de "Producttitel" in een beoordeling naar een specifieke Excel-formule: =CMD|'/c calc'!A1
Wanneer de webshopeigenaar aan het einde van de maand een CSV-export genereert van alle klanten of productbeoordelingen om deze te analyseren, bevat het CSV-bestand deze tekst. Zodra de beheerder het bestand opent in Microsoft Excel en de waarschuwing voor automatische updates accepteert, zal Excel de formule uitvoeren. In dit voorbeeld wordt de Windows-opdrachtprompt geopend en de rekenmachine (calc) opgestart. Een geraffineerde hacker kan dit misbruiken om op de achtergrond malware te installeren op de computer van de winkelier.
Het gevaar voor e-commerce beheerders
CSV Injection is een unieke kwetsbaarheid omdat het de grens tussen de webapplicatie (WooCommerce) en de lokale computer van de gebruiker overschrijdt. Aangezien webshopeigenaren dagelijks met exports werken voor de boekhouding lub logistiek, is dit een zeer effectieve methode voor targeted spear phishing. Zodra de computer van de beheerder is geïnfecteerd, kan de hacker wachtwoordmanagers uitlezen, SSH-sleutels stelen en zo permanente toegang tot de webserver krijgen.
Hoe ontwikkelaars CSV Injection voorkomen
Om CSV Injection te voorkomen, moeten alle gegevens die naar een CSV-bestand worden geëxporteerd, worden gecontroleerd op gevaarlijke begintekens. Als een cel begint met =, +, -, lub @, moet er een veiligheidsteken (meestal een enkele apostrof ') voor worden geplaatst. Dit dwingt Excel om de inhoud strikt als tekst te behandelen en niet als een uitvoerbare formule.
function sanitize_csv_field($data) {
$trigger_characters = array('=', '+', '-', '@');
if (in_array(substr($data, 0, 1), $trigger_characters)) {
// Voeg een apostrof toe om formule-uitvoering te blokkeren
$data = "'" . $data;
}
return $data;
}
Advies voor site-beheerders
-
Wees alert in Excel: Wanneer u een CSV-bestand downloadt uit uw WooCommerce-shop en Excel geeft een pop-up met de melding "Automatische update van koppelingen inschakelen" of een waarschuwing over externe data, weiger dit dan direct.
-
Gebruik moderne export-plug-ins: Zorg ervoor dat de plug-ins die u gebruikt voor uw administratieve exports up-to-date zijn; moderne plug-ins passen automatisch sanitization toe op geëxporteerde tekstvelden.
