image

Webwinkels gehackt via zeroday-lekken in Magento-extensies

woensdag 24 oktober 2018, 10:39 door Redactie, 9 reacties

Cybercriminelen maken gebruik van verschillende zeroday-lekken in Magento-extensies om webwinkels te hacken en zo code te injecteren die creditcardgegevens van klanten steelt. Magento is een populair platform voor webwinkels. De afgelopen maanden zijn tal van webwinkels en bedrijven in het nieuws gekomen nadat er op de betaalpagina's creditcardskimmers waren aangetroffen die creditcardgegevens opslaan en stelen.

Het ging onder andere om Ticketmaster, British Airways en elektronicawebwinkel Newegg. In sommige gevallen hadden de criminelen directe toegang tot de gehackte website, in andere gevallen werd er gebruik gemaakt van code van derde partijen die op deze websites draaiden. Bij de aanvallen die tegen webwinkels met de kwetsbare Magento-extensies zijn gericht is de aanvalsvector steeds hetzelfde, zo stelt de Nederlandse beveiligingsonderzoeker Willem de Groot.

De aanvallers maken gebruik van een specifieke PHP-functie om hun eigen PHP-code in de website te injecteren. Op deze manier kunnen ze de database of JavaScript-bestanden aanpassen en van een creditcardskimmer voorzien. Magento heeft veel van de kwetsbare PHP-functies in de eigen code vervangen, maar dat geldt niet voor veel populaire extensies, zo stelt De Groot. Hij merkt op dat aanvallers tal van PHP Object Injection-kwetsbaarheden in een groot aantal extensies hebben gevonden en nu actief Magento-webwinkels op deze extensies controleren.

De onderzoeker heeft 20 kwetsbare extensies in kaart gebracht en adviseert webwinkels om die meteen uit te schakelen en de logbestanden op ongeautoriseerde activiteiten te controleren.

Reacties (9)
24-10-2018, 10:49 door Anoniem
De aanvallers maken gebruik van een specifieke PHP-functie

Fout. Het heeft niets met PHP zelf te maken maar met de code van de developers van deze extensies.
24-10-2018, 13:09 door Anoniem
Door Anoniem:
De aanvallers maken gebruik van een specifieke PHP-functie

Fout. Het heeft niets met PHP zelf te maken maar met de code van de developers van deze extensies.
Jij weet waarschijnlijk niet dat je in PHP functies kan schrijven waar je meermaals gebruik van kan maken?
24-10-2018, 14:00 door Power2All - Bijgewerkt: 24-10-2018, 14:07
Door Anoniem:
Door Anoniem:
De aanvallers maken gebruik van een specifieke PHP-functie

Fout. Het heeft niets met PHP zelf te maken maar met de code van de developers van deze extensies.
Jij weet waarschijnlijk niet dat je in PHP functies kan schrijven waar je meermaals gebruik van kan maken?

Dat is geen PHP functie zelf dan, maar een custom geschreven stukje PHP code.
In dit geval heeft hij wel gelijk, aangezien de functie unserialize wordt gebruikt (zoals ik later nog post) voor data wat blijkbaar niet sanitized wordt op een correcte manier, en dus een issue veroorzaakt, waardoor er data injected kan worden. Dit wordt ook duidelijk op de PHP functie aangegeven.

Warning
Do not pass untrusted user input to unserialize() regardless of the options value of allowed_classes. Unserialization can result in code being loaded and executed due to object instantiation and autoloading, and a malicious user may be able to exploit this. Use a safe, standard data interchange format such as JSON (via json_decode() and json_encode()) if you need to pass serialized data to the user.

If you need to unserialize externally-stored serialized data, consider using hash_hmac() for data validation. Make sure data is not modified by anyone but you.
24-10-2018, 14:02 door Power2All
De functie betreft:
http://php.net/manual/en/function.unserialize.php

Er wordt sowieso al afgeraden dit te gebruiken voor sommige gevallen.
24-10-2018, 14:09 door Anoniem
Door Anoniem:
De aanvallers maken gebruik van een specifieke PHP-functie

Fout. Het heeft niets met PHP zelf te maken maar met de code van de developers van deze extensies.
Het klopt dat de ontwikkelaars van die extensie een fout hebben gemaakt door een gevaarlijke functie met ongecontroleerde invoer aan te roepen, maar het klopt ook dat de aanvallers daar gebruik van hebben gemaakt. Die zin die je citeert is geen kritiek op PHP, die geeft feitelijk juist weer dat de aanvallers van een specifieke functie gebruik hebben gemaakt.

De functie heet unserialize() en de documentatie geeft duidelijk weer (in het rode kadertje) dat hij gevaarlijk is:
http://php.net/manual/en/function.unserialize.php
Dat is niet uniek voor PHP, er zijn andere talen die soortgelijke mogelijkheden in hun standaardbibliotheek hebben met soortgelijke waarschuwingen voor de risico's ervan, bijvoorbeeld (met ook een rood kadertje om de waarschuwing):
https://docs.python.org/3/library/pickle.html
24-10-2018, 14:41 door Anoniem
Je kunt de onveilige functie testen online hier:
https://www.functions-online.com/unserialize.html

Vervolgens een oude toepassing van object injection uit 2014 oude wijn in nieuwe zakken
// app/code/core/Mage/Adminhtml/controllers/DashboardController.php
public function tunnelAction()
{
$gaData = $this->getRequest()->getParam('ga');
$gaHash = $this->getRequest()->getParam('h');
if ($gaData && $gaHash) {
$newHash = Mage::helper('adminhtml/dashboard_data')->getChartDataHash($gaData);
if ($newHash == $gaHash) {
if ($params = unserialize(base64_decode(urldecode($ga

Het bovenstaande overgenomen uit analyse op:
https://websec.wordpress.com/2014/12/08/magento-1-9-0-1-poi/

Voortborduren derhalve van Willem de G. dus op bekende thema's dus, niets nieuws onder de zon,
Maar blijft actueel en hij krijgt er wel een patform voor. PHP coders zijn hardleers.

'luntrus
25-10-2018, 20:55 door Anoniem
Bij Word Press CMS is het ook oppassen voor onveilige PHP functies:
https://www.smashingmagazine.com/2018/01/php-wordpress-functions-site-insecure/

In feite ligt hier ook een terrein voor een hoster, die de website admin met onvoldoende kennis om zijn of haar site veilig te houden, kan bijstaan. Te veel en te vaak gaat het fout uiteindelijk ook ten koste van de bezoekers van een dergelijke website.

Dus het probleem met onveilige PHP functies is veel breder dan alleen bij Magent> Het geldt voor alle op PHP gebaseerde CMS. Word Press met name vereist niet het gebruik van de nieuwste PHP versie.

Steeds meer werkt men met PHP-cheatsheets.
26-10-2018, 09:25 door Power2All - Bijgewerkt: 26-10-2018, 09:27
Door Anoniem:
Door Anoniem:
De aanvallers maken gebruik van een specifieke PHP-functie

Fout. Het heeft niets met PHP zelf te maken maar met de code van de developers van deze extensies.
Het klopt dat de ontwikkelaars van die extensie een fout hebben gemaakt door een gevaarlijke functie met ongecontroleerde invoer aan te roepen, maar het klopt ook dat de aanvallers daar gebruik van hebben gemaakt. Die zin die je citeert is geen kritiek op PHP, die geeft feitelijk juist weer dat de aanvallers van een specifieke functie gebruik hebben gemaakt.

De functie heet unserialize() en de documentatie geeft duidelijk weer (in het rode kadertje) dat hij gevaarlijk is:
http://php.net/manual/en/function.unserialize.php
Dat is niet uniek voor PHP, er zijn andere talen die soortgelijke mogelijkheden in hun standaardbibliotheek hebben met soortgelijke waarschuwingen voor de risico's ervan, bijvoorbeeld (met ook een rood kadertje om de waarschuwing):
https://docs.python.org/3/library/pickle.html

Dat had ik al gepost.
Aangezien ik geen Wordpress gebruik (en zoveel mogelijk links laat liggen), houdt ik het liever op Symfony frameworks.
Gewoon de juist functies gebruiken, dan zit je over het algemeen goed.
Het is jammer dat veel developers geen rekening houden met side-effects, of sanitizing correct toepassen.

Unserialize is prima voor data waarvan je altijd 100% kunt uitgaan dat het geen troep kan bevatten.
Als je met data omgaat wat je niet 100% kunt verifieren, nooit functies gebruiken die dit kunnen executen, zoals je bij veel exploit PHP scripts ziet die base64 ook toepassen.
27-10-2018, 11:23 door Krakatau - Bijgewerkt: 27-10-2018, 11:25
Door Power2All:
Door Anoniem: ...

Dat had ik al gepost.
Aangezien ik geen Wordpress gebruik (en zoveel mogelijk links laat liggen), houdt ik het liever op Symfony frameworks.
Gewoon de juist functies gebruiken, dan zit je over het algemeen goed.

Dan kom je bij Drupal uit (als je de content management systems lijn doortrekt vanuit Wordpress). Of Typo3. Of Joomla!. Of October CMS. Of https://symfony.com/projects/category/cms.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.