Skip to main content

Magento-Sicherheit erfordert zusätzlichen Patch zur Behebung einer Schwachstelle bei der Bereinigung

Artikel von
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

blog feature security alert purple

24. Februar 2022

0 Min. Lesezeit

In der Tech-Branche stehen wir oft unter großem Druck, bereitgestellten Code zu korrigieren, eine Infrastrukturkomponente zu aktualisieren oder Code zu patchen. Häufig bleibt dafür kaum Vorlaufzeit – eigentlich hätte es schon vor fünf Minuten erledigt sein müssen. Bei jeder „Zero-Turnaround“-Aktion besteht das Risiko, in der Eile sofort einen Fix einzuspielen, statt sich Zeit für Tests und Prüfungen zu nehmen.

Kürzlich wurde ein kritischer Patch für Magento Ecommerce, Magento Open Source und die Adobe-Commerce-Versionen von Magento veröffentlicht, nachdem Sicherheitsforscher ein kritisches Problem in der weitverbreiteten E-Commerce-Plattform entdeckt hatten. CVE-2022-24086 beschreibt eine Schwachstelle, über die nicht authentifizierte Benutzerinnen und Benutzer während des Bezahlvorgangs eine SQL-Injection oder eine PHP-Objekt-Injection ausführen konnten.

Adobe Security veröffentlichte daraufhin zunächst einen Patch und reagierte schnell, um eine Lösung bereitzustellen. Einige Tage später stellten Forschende fest, dass der Patch nicht ausreichte, um den Code abzusichern. In der Folge wurde eine neue CVE-2022-24087 vergeben und ein zweiter Patch bereitgestellt.

Ein Patch für die neu identifizierte Schwachstelle ist im aktuellen Sicherheitsalert von Adobe verfügbar. Der neue Patch muss zusätzlich zum ursprünglichen Patch für CVE-2022-24086 angewendet werden.

Was mir im Bereich AppSec besonders wichtig ist: Deployments, Bibliotheken und alles, was sich auf die Endnutzerinnen und Endnutzer einer Plattform auswirken kann, sorgfältig zu prüfen. Sehen wir uns also den aktuellen Patch genauer an und untersuchen, was sich geändert hat.

Ein Blick auf den Patch für CVE-20220-24087

Bevor wir uns näher mit dem neuen Patch MDVA-43443 befassen, sehen wir uns noch einmal den ursprünglichen Patch MDVA-43395 an und klären, was er bewirkt hat.

Wichtig ist: Beide Schwachstellen betreffen ausschließlich Magento Open Source und Adobe Commerce in den Versionen ab 2.3.4 und vor 2.4.5-p1 bzw. 2.3.7-p2.

Der ursprüngliche Patch (MDVA-43395) ergänzte die Magento-Shop-Anwendungslogik während des Bezahlvorgangs um eine sichere Bereinigung von Benutzereingaben. Für /Email/Model/Template/transDirective und VarDirective.php kamen Muster für preg_replace() und preg_match() hinzu, um unerwünschte Zeichentypen in Benutzereingaben herauszufiltern.

Codeausschnitt mit einer PHP-preg_replace-Schleife, einem regulären Ausdrucksmuster und einer preg_match-Bedingung.

Nach der Bereitstellung des Patches stellten Sicherheitsforscher fest, dass er nicht ausreichte, um den Angriffsvektor zu entschärfen. Tatsächlich eröffnete er sogar die Möglichkeit, dass im Framework noch tiefgreifendere Schwachstellen entstehen.

Der neue Patch (MDVA-43443) führt eine wiederverwendbare Framework-Funktion namens sanitizeValue() ein. Sie erweitert \Magento\Framework\Filter\Template und führt eine Bereinigungsprüfung und einen Abgleich mit preg_replace durch.

Code-Diff mit einer Magento-Filterklasse und einer sanitizeValue-Funktion, die einen booleschen Wert zurückgibt oder geschweifte Klammern aus einer Zeichenfolge entfernt.

Anschließend wird sanitizeValue() verwendet, um den Bereinigungscode mit preg_match() und preg_replace() zu ersetzen, der mit dem ursprünglichen Patch MDVA-43395 hinzugefügt wurde.

Code-Diff: Magento-Templatefilter bereinigt gerenderten Text, bevor Modifikatoren angewendet werden

Die Funktion sanitizeValue() wird anschließend an mehreren Stellen in der Codebasis verwendet, unter anderem beim Laden bereinigter Konfigurations- und benutzerdefinierter Wertetypen.

PHP-Code-Diff mit hinzugefügten Aufrufen von sanitizeValue zur Validierung von Magento-HTTP-Parametern und benutzerdefinierten Variablenwerten

In blockDirective() kommt weitere Bereinigungslogik hinzu: Die Zeichenabgleiche und Bereinigung werden im Kern von \Magento\Framework\FilterTemplate erweitert.

PHP-Codeausschnitt, der blockDirective definiert und doppelte geschweifte Klammern durch HTML-Entitäten ersetzt

resolveBlockDirective wird von einer öffentlichen zu einer privaten Funktion geändert, und layoutDirective wird in resolveLayoutDirective überführt.

Der Wechsel von einer öffentlichen zu einer privaten Funktion ist für die PHP-Anwendungssicherheit wichtig: Eine private Funktion kann nur innerhalb der übergeordneten Klasse verwendet werden. Eine öffentliche Funktion kann dagegen überall in der gesamten Anwendung aufgerufen werden.

Code-Diff mit einer Magento-PHP-Layoutdirektiven-Funktion, die in resolveLayoutDirective umbenannt wurde und die Direktivenparameter prüft.

Beide Patches sind über das Adobe Security Bulletin APSB22-12 verfügbar – entweder zur Installation mit PHP Composer oder zum Einpflegen in eine geforkte Codebasis.

Denken Sie daran, vor der Anwendung beider Patches sichere Backups zu erstellen und den Code vor dem Deployment zu testen.

Melden Sie sich bei Snyk an und erhalten Sie Benachrichtigungen zu neuen Schwachstellen

Bei großen Open-Source-Projekten wie Magento überwache ich immer das öffentliche Repository über mein Snyk Dashboard.

Klicken Sie auf Projekt hinzufügen und überwachen Sie öffentliche GitHub-Repositories.

Projekt-Suchoberfläche mit Ergebnissen für „magento“; magento/magento2 ist ausgewählt. Unter „Projekt hinzufügen“ stehen GitHub, Cloud Foundry, Bitbucket Cloud und CLI zur Auswahl.

Das ist besonders bei Entwicklungszweigen eines Projekts hilfreich, denn so werden Sie bereits während der Entwicklung auf mögliche Probleme aufmerksam. Außerdem können Sie dadurch zum Projekt beitragen und mögliche Probleme beheben, solange es noch in der Entwicklung ist.

Bei Plattformprojekten wie Magento sucht der Überwachungsprozess nach Paketmanifesten, Code, Containern und IaC-Konfigurationen, um sie zu scannen und potenzielle Probleme aufzuzeigen. Besonders hilfreich: Er schlägt auch mögliche Korrekturen vor und führt Sie Schritt für Schritt durch die erkannten Probleme.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.

Weiterlesen

illustration hero ai
Blog

PHP behebt zwei kritische unauthentifizierte RCE-Schwachstellen (CVE-2026-109618, CVE-2026-109619): Jetzt aktualisieren

Zwei kritische Sicherheitslücken im Request-Lebenszyklus von PHP können unauthentifizierte Remote Code Execution ermöglichen. Aktualisieren Sie auf eine korrigierte Version oder installieren Sie für ältere Versionen einen Backport des Anbieters.

blog feature ai lilac
Blog

Mit agentischer Behebung Ihren Schwachstellen-Backlog in Pull Requests verwandeln

Der Evo Remediation Agent ist jetzt in der öffentlichen Vorschau verfügbar und erweitert Evo Agentic AppSec um die automatisierte Auflösung von Abhängigkeiten. AppSec-Teams können jetzt kontinuierliche Behebungskampagnen durchführen

AI Background min crop
Blog

KI ruft alle Risiken auf den Plan, die Sie akzeptiert haben: Sieben Erkenntnisse aus dem AI Security Panel: Unfiltered

KI macht Angriffe günstiger und schneller und legt Risiken offen, die Unternehmen bereits tragen. Vier Sicherheitsverantwortliche erklären, warum Abwehr in Maschinengeschwindigkeit und schnellere Behebung jetzt unverzichtbar sind.