
Mit Version 3.8.6 des affiliate-toolkit haben wir eine sicherheitsrelevante Änderung am Template-Rendering eingeführt. Da diese Änderung bestehende Installationen betreffen kann und im Changelog nicht prominent genug kommuniziert wurde, fassen wir hier den Hintergrund, die Auswirkungen und die nötigen Schritte zusammen.
Ab Version 3.8.6 wird reiner PHP-Code – also alles innerhalb von <?php … ?>-Blöcken – vor dem Blade-Rendering automatisch aus den Templates entfernt und nicht mehr ausgeführt. Erlaubt ist ausschließlich die Blade-Vorlagensyntax.
Das affiliate-toolkit wurde vom WordPress.org Plugin Review Team wegen einer Sicherheitslücke vorübergehend aus dem Plugin-Directory entfernt. Die Möglichkeit, beliebigen PHP-Code über Templates auszuführen, war Teil des Problems.
Die Sanitization in 3.8.6 ist der Fix, der das Plugin wieder in das Directory zurückgebracht hat. Diese Änderung war nicht optional – ohne sie wäre das Plugin aktuell nicht mehr offiziell verfügbar.
Wer ausschließlich mit den Standard-Templates und Standard-Ausgaben arbeitet, muss in der Regel nichts tun. Betroffen sind Installationen mit eigenen Templates oder Snippets, die PHP-Code enthalten – etwa für individuelle Produktboxen, Offer-Listen oder AJAX-Ausgaben. In diesen Fällen können Ausgaben unvollständig oder leer sein, bis die Templates umgestellt sind.
Typische Symptome:
Die häufigsten Konstrukte lassen sich 1:1 ersetzen:
<?php echo $var; ?> → {{ $var }}
<?php if (...): ?> … <?php endif; ?> → @if(...) … @endif
<?php foreach (...): ?> … endforeach → @foreach(...) … @endforeach
<?php echo esc_html($x); ?> → {{ $x }} (escaping ist Default)
<?php echo $raw; ?> → {!! $raw !!} (unescaped, nur bei vertrauenswürdiger Quelle)
Für Fälle, in denen Blade nicht ausreicht – etwa eigene Helper-Funktionen, komplexere Berechnungen oder externe API-Aufrufe – ist der vorgesehene Weg ein eigener Filter oder Hook in einem Child-Plugin oder im Theme, nicht PHP direkt im Template.
Im Support-Forum kursiert ein Hotfix, der die Sanitization durch Auskommentieren einer einzelnen Zeile (self::sanitize_template_content()) deaktiviert. Davon raten wir ausdrücklich ab.
Wer das macht, öffnet die ursprüngliche Sicherheitslücke auf seiner Installation wieder vollständig. Damit lässt sich über Template-Inhalte – auch indirekt, etwa über importierte oder geteilte Templates – beliebiger PHP-Code ausführen. Das ist kein theoretisches Risiko, sondern genau der Grund, warum das Plugin gesperrt war.
Wer den Hotfix einsetzt, übernimmt die volle Verantwortung für die daraus entstehenden Sicherheitsrisiken auf seiner Seite.
Eine Änderung mit derartigen Auswirkungen auf bestehende Templates hätte prominent im Changelog stehen müssen und nicht nur als Hinweis im Template-Editor. Das war ein Kommunikationsfehler, für den wir uns bei allen betroffenen Nutzern entschuldigen. Für künftige Sicherheits-Releases stellen wir die Release-Kommunikation entsprechend um.
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie müssen den Inhalt von hCaptcha laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von Turnstile laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen