Drag and Drop Multiple File Upload for Contact Form 7 Sicherheitshinweis
Wenn Sie von mir eine E-Mail mit einem Verweis auf diese Seite erhalten haben, dann deshalb,
weil Ihre Website offenbar eine Version von Drag and Drop Multiple File Upload for Contact Form 7
einsetzt (das WordPress-Plugin, das unter diesem Namen auf WordPress.org gelistet ist, von
codedropz, das in Ihren Dateien unter
/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/ liegt), die in den
betroffenen Bereich eines bekannten Sicherheitsproblems fällt. Diese Seite erklärt, worum es geht,
wie Sie herausfinden, ob es Ihre Website überhaupt betrifft, wie Sie Ihre Version ablesen, ohne
sich täuschen zu lassen, und wie Sie aktualisieren.
Bitte beachten Sie: Dies ist nicht die WooCommerce-Version. Derselbe Autor veröffentlicht ein
separates Plugin, „Drag and Drop Multiple File Upload for WooCommerce” (Ordner
drag-and-drop-multiple-file-upload-for-woocommerce), das ein eigenständiges Produkt mit einer
eigenen Versionsnummerierung ist. Wenn das Plugin in Ihren Dateien das WooCommerce-Plugin ist und
nicht das für Contact Form 7, geht es auf dieser Seite nicht darum. Alles Folgende betrifft
ausschließlich das Contact Form 7-Add-on.
Vorab die wichtigste Tatsache zu diesem Hinweis: Eine Version im betroffenen Bereich bedeutet für sich genommen nicht, dass Ihre Website exponiert ist. Das unten beschriebene Problem greift nur bei Websites mit einer bestimmten Art von Upload-Feld, und ich kann von außen nicht sehen, wie Ihre Formulare konfiguriert sind:
- Das Problem erreicht nur ein Contact-Form-7-Formular, bei dem eines der Drag-and-Drop-Upload-Felder dieses Plugins auf beliebige Dateitypen eingestellt ist.
- Ein Feld, das die akzeptierten Typen einschränkt (zum Beispiel auf Bilder oder PDFs), ist nicht von diesem Problem betroffen, selbst auf einer betroffenen Version. Das Einschränken der akzeptierten Typen ist außerdem die Voreinstellung, wenn ein Feld keine Typen angibt.
Ich kann Ihre Plugin-Version aus einer öffentlichen Datei ablesen, aber ich kann nicht sehen, wie Ihre Formulare konfiguriert sind. Dieser Hinweis ist daher ein vorsorglicher Hinweis und keine bestätigte Feststellung über Ihre Website.
Das Problem wird als CVE-2026-18781 geführt, eine nicht authentifizierte Datei-Upload-Schwachstelle in der Upload-Verarbeitung des Plugins. Betroffen sind die Versionen 1.3.9.3 bis 1.3.9.8, behoben ist sie in 1.3.9.9. Wenn Sie eine betroffene Version einsetzen, aktualisieren Sie Drag and Drop Multiple File Upload for Contact Form 7 auf 1.3.9.9 oder neuer, und halten Sie auch Contact Form 7 selbst aktuell.
Ein Wort zur Dringlichkeit, denn dies ist ein bedingter Hinweis. Wenn keines Ihrer Upload-Felder beliebige Dateitypen akzeptiert, ist die Aktualisierung gewöhnliche Plugin-Pflege. Wenn eines davon das tut, behandeln Sie das Update bitte als Priorität: In dieser Konfiguration könnte die Schwachstelle einem Besucher ganz ohne Konto erlauben, eine Datei seiner Wahl auf Ihrem Server zu speichern, von einer Art, die der Server dann möglicherweise ausführt, was zur vollständigen Kontrolle über die Website führen kann.
Dies ist ein Fehler im Plugin, kein Fehler im WordPress-Kern, und er ist unabhängig von Contact Form 7 selbst. Ein vollständig aktuelles WordPress und ein aktuelles Contact Form 7 schützen Sie nicht, wenn dieses Add-on auf einer betroffenen Version steht.
Ist diese Nachricht echt?
Ja. Dies ist ein Hinweis nach dem Grundsatz der verantwortungsvollen Offenlegung von einem unabhängigen Sicherheitsforscher. Ich bitte Sie nicht um Geld, Passwörter oder Zugang zu Ihrer Website, und ich habe nicht versucht, in sie einzudringen, eines Ihrer Formulare abzuschicken oder etwas darauf hochzuladen.
Ich habe lediglich öffentlich sichtbare Dateien betrachtet, die Ihre Website jedem Besucher ausliefert (genauso, wie Ihre Startseite öffentlich ist), und die Versionsnummer notiert, die das Plugin veröffentlicht. Ich habe insbesondere kein Formular abgeschickt, keine Datei hochgeladen und bin dem Upload-Handler des Plugins nicht nahegekommen. Nichts an dieser Prüfung berührt Ihre Daten, Ihren Adminbereich oder einen privaten Teil Ihrer Website (mehr dazu unter Was ich getan und nicht getan habe weiter unten).
Wenn Sie überprüfen möchten, wer ich bin, finden Sie die Kontaktdaten am Ende dieser Seite und auf der Seite Über.
Warum das wichtig ist
Dieses Plugin fügt Contact-Form-7-Formularen Drag-and-Drop-Upload-Felder hinzu, sodass Besucher beim Absenden eines Formulars Dateien anhängen können: eine Bewerbung, eine Support-Anfrage, ein Foto. Um das sicher zu halten, soll das Plugin gefährliche Dateitypen zurückweisen.
In betroffenen Versionen ließ sich diese Prüfung umgehen. Das Plugin untersuchte den Namen der hochgeladenen Datei, um zu entscheiden, ob der Typ erlaubt war, passte den Namen anschließend an und speicherte die Datei, ohne den angepassten Namen erneut zu prüfen. Weil der Name nach der Freigabe geändert wurde, ließ sich ein Name so konstruieren, dass die geprüfte Version harmlos aussah, während die tatsächlich gespeicherte Version es nicht war, sodass ein nicht erlaubter Dateityp auf dem Server landen konnte. Behandelt der Server diese Datei dann als etwas, das er ausführen kann, ist das Ergebnis, dass die Datei eines Fremden auf Ihrer Website läuft.
Daraus folgen zwei Dinge, und sie ziehen in entgegengesetzte Richtungen. Das erste ist, dass dies nur dort eine Rolle spielt, wo ein Formular ein Upload-Feld hat, das auf beliebige Dateitypen eingestellt ist. Wo jedes Upload-Feld auf eine bestimmte Menge an Typen beschränkt ist, passt die getarnte Datei zu keinem erlaubten Typ und wird abgewiesen, sodass eine Website in diesem Zustand über dieses Problem nicht erreichbar ist. Das zweite ist, dass dort, wo ein Feld für „beliebige Dateitypen” tatsächlich existiert, kein Konto, kein Passwort und keine Mitwirkung von irgendjemandem erforderlich ist: Das Formular ist per Design öffentlich zugänglich.
Ich beschreibe das auf dem Niveau, das ein Website-Betreiber zum Handeln braucht, und nicht weiter. Ich veröffentliche nicht die Details, mit denen jemand das Problem nachstellen könnte, und ich bitte Sie, es weder auf Ihrer eigenen noch auf einer fremden Website auszuprobieren. Ihre Formularkonfiguration und Ihre Versionsnummer abzulesen, wie unten beschrieben, sagt Ihnen alles, was Sie für Ihre Entscheidung brauchen.
Wenn meine E-Mail dieses Problem genannt hat, bedeutet das, dass die von Ihrer Website gemeldete Version in den betroffenen Bereich fällt. Ich habe nicht geprüft, ob Ihre konkrete Website ausnutzbar ist, und ich kann nicht sehen, wie Ihre Formulare konfiguriert sind. Beobachtet habe ich ausschließlich die Version.
Bin ich betroffen?
Es entscheiden zwei Fragen, in dieser Reihenfolge.
Erstens: Akzeptiert ein Upload-Feld „beliebige Dateitypen”?
Dies ist die entscheidende Frage, und nur Sie können sie beantworten. Die eigenen Formulare zu prüfen ist völlig sicher und genau der Sinn dieser Seite.
- Melden Sie sich in Ihrem WordPress-Dashboard an und öffnen Sie Kontakt (Contact Form 7) in der Seitenleiste.
- Öffnen Sie jedes Formular, das einen Datei-Upload anbietet, und suchen Sie das Drag-and-Drop-Upload-Feld (das Feld dieses Plugins, das zusätzlich zu den Standard-Tags von Contact Form 7 eingefügt wird).
- Prüfen Sie, ob dieses Feld die akzeptierten Dateitypen einschränkt.
- Wenn jedes Upload-Feld auf bestimmte Typen beschränkt ist (zum Beispiel
jpg,png,pdf), erreicht dieses Problem Ihre Website nicht, selbst auf einer betroffenen Version. Eine Aktualisierung lohnt sich trotzdem als gewöhnliche Pflege. - Wenn ein Upload-Feld auf beliebige Dateitypen eingestellt ist, betrifft Sie das Problem, und Sie sollten zeitnah aktualisieren. Dieses Feld auf die Typen zu beschränken, die Sie tatsächlich benötigen, ist für sich genommen ein sinnvoller Schritt, aber das Update ist die eigentliche Behebung.
Bitte versuchen Sie nicht, das Problem gegen Ihre eigene oder eine fremde Website nachzustellen; das ist nicht nötig, um die obige Frage zu beantworten.
Zweitens: Welche Version setzen Sie ein?
Sie müssen mir das nicht einfach glauben. Bei diesem Plugin gibt es eine bestimmte Prüfmethode, die Sie in die Irre führt, deshalb lohnt es sich, diesen Abschnitt genau zu lesen.
Im WordPress-Adminbereich (maßgeblich):
- Gehen Sie in Ihrem WordPress-Dashboard zu Plugins und dann Installierte Plugins.
- Suchen Sie Drag and Drop Multiple File Upload - Contact Form 7, den Eintrag mit dem Ordner
drag-and-drop-multiple-file-upload-contact-form-7, und lesen Sie die Version unter dem Namen ab.
Aus der öffentlichen Manifestdatei (ohne Anmeldung): Öffnen Sie
ihredomain.de/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/readme.txt in
einem Browser. Die Zeile Stable tag: weiter oben ist die Version, die Ihre Installation
meldet, und das ist eine der öffentlichen Quellen, die ich lese.
Aus Ihrem Seitenquelltext (ohne Anmeldung): Betrachten Sie den Quelltext einer Seite auf Ihrer Website und suchen Sie nach einem der Frontend-Assets des Plugins unter genau diesen Pfaden:
/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/css/dnd-upload-cf7.css?ver=...
/wp-content/plugins/drag-and-drop-multiple-file-upload-contact-form-7/assets/js/codedropz-uploader-min.js?ver=...
Die an diese Dateien unter diesem Ordner angehängte ?ver=-Nummer ist die eigene Version des
Plugins. Bei diesem Plugin folgt sie exakt dem Release, weshalb ich sie als verlässliche Prüfung
behandle.
Die Falle, die Sie hier vermeiden sollten. Das separate WooCommerce-Plugin desselben Autors
liefert eine Datei mit dem gleichen Namen, codedropz-uploader-min.js, unter seinem
eigenen Ordner (drag-and-drop-multiple-file-upload-for-woocommerce) mit einer
unabhängigen Versionsnummer aus. Wenn Sie eine Version aus Ihrem Seitenquelltext ablesen,
achten Sie darauf, dass der Ordner im Pfad drag-and-drop-multiple-file-upload-contact-form-7 ist
und nicht der von WooCommerce; andernfalls lesen Sie die Version eines ganz anderen Produkts ab.
Wenden Sie dann diese Regel an, wobei Versionen numerisch, nicht alphabetisch verglichen werden:
- 1.3.9.3 bis 1.3.9.8: möglicherweise betroffen, abhängig von der Upload-Feld-Frage oben. Jetzt aktualisieren.
- 1.3.9.9 oder neuer: in Bezug auf dieses Problem bereits behoben. Die jeweils neueste verfügbare Version zu nehmen ist die beste Wahl.
- Älter als 1.3.9.3: von diesem Problem nicht betroffen. Die oben beschriebene spezifische Schwachstelle wurde erst mit 1.3.9.3 eingeführt. Ein derart altes Release liegt allerdings bei allem anderen weit zurück, sodass eine Aktualisierung auch aus allgemeinen Gründen sinnvoll ist.
Wenn Sie aus den obigen Prüfungen keine lesbare Version erhalten, ist das nicht ungewöhnlich:
Caching- oder Optimierungs-Plugins entfernen routinemäßig den ?ver=-Wert, und die Assets
erscheinen nur dort, wo das Plugin lädt. Die Adminübersicht aus Schritt eins liefert immer die
Antwort.
Wie Sie aktualisieren
Der sicherste Weg ist die Aktualisierung über WordPress selbst, und zwar mit einem Backup vorab:
- Erstellen Sie ein Backup Ihrer Website (Dateien und Datenbank), bevor Sie etwas ändern. Die meisten Hosting-Anbieter bieten Backups mit einem Klick, alternativ nutzen Sie ein WordPress-Backup-Plugin.
- Gehen Sie im WordPress-Adminbereich zu Dashboard und dann Aktualisierungen, oder zu Plugins und dann Installierte Plugins. Wenn dort ein Update für dieses Plugin aufgeführt ist, installieren Sie es von hier aus.
- Wenn Sie die Kommandozeile bevorzugen, tut WP-CLI dasselbe:
wp plugin update drag-and-drop-multiple-file-upload-contact-form-7(der Befehl verwendet den Ordnernamen). - Wenn kein Update erscheint, können Sie das aktuelle Release direkt von der Seite des Plugins im WordPress.org-Verzeichnis beziehen, Drag and Drop Multiple File Upload for Contact Form 7, und über Plugins, dann Plugin installieren, dann Plugin hochladen aktualisieren.
- Prüfen Sie nach dem Update mit den obigen Schritten die neue Versionsnummer (1.3.9.9 oder neuer) und kontrollieren Sie, dass Ihre Formulare und Datei-Uploads weiterhin normal funktionieren.
Wenn Sie schon dabei sind, lohnt es sich zu prüfen, ob der WordPress-Kern, Contact Form 7 und Ihre übrigen Plugins aktuell sind, denn für sie alle gilt dasselbe Prinzip.
Nach dem Update
Die Aktualisierung auf 1.3.9.9 oder neuer schließt das Problem, und für die meisten Websites ist damit die ganze Aufgabe erledigt. Diese Seite ist ein vorsorglicher Hinweis, kein Vorfallbericht: Ich habe keinerlei Einblick darin, ob auf Ihrer Website etwas geschehen ist, und ich habe nicht nachgesehen.
Ein Nachfolgeschritt ist es wert, in Betracht gezogen zu werden, und er ist an dieselbe Upload-Feld-Frage geknüpft. Wenn Ihre Website ein Formular mit einem Upload-Feld für „beliebige Dateitypen” hatte, während sie eine betroffene Version einsetzte, dann war es zumindest theoretisch möglich, dass eine Datei auf Ihrem Server abgelegt wurde. Die Aktualisierung schließt die Lücke, entfernt aber nichts, was möglicherweise bereits gespeichert wurde. In diesem Fall sind daher ein paar routinemäßige Vorsichtsmaßnahmen sinnvoll:
- Durchsuchen Sie Ihr Uploads-Verzeichnis (meist unter
wp-content/uploads/) nach Dateien, die Sie nicht kennen, insbesondere solche, die nicht der Art von Dokumenten oder Bildern entsprechen, die Ihre Formulare eigentlich entgegennehmen sollen. - Überprüfen Sie Ihre Administratorkonten, aktuelle Anmeldungen und alle aktiven Sitzungen auf alles, was Sie sich nicht erklären können.
- Setzen Sie die Passwörter Ihrer Administratorkonten zurück. Das Erneuern der
Sicherheitsschlüssel und Salts von WordPress in
wp-config.phpist ein sinnvoller zusätzlicher Schritt (neue Werte gibt es mit einem Klick beim offiziellen Schlüsselgenerator, und das Austauschen meldet alle Benutzer einmal ab).
Wenn Sie etwas finden, das Sie beunruhigt, ist es die richtige Reaktion, es wie jeden anderen vermuteten unbefugten Zugriff zu behandeln. Wenn keines Ihrer Formulare ein Upload-Feld für „beliebige Dateitypen” hatte, genügt die Aktualisierung allein.
Was ich getan und nicht getan habe
Um vollständig transparent zu machen, worauf meine E-Mail beruht: Ich habe nur Dateien gelesen,
die Ihre Website ohnehin jedem Besucher ausliefert, konkret die öffentliche readme.txt des
Plugins, Ihre Startseite und die Asset-Adressen, die in diese Seite geschrieben sind. Ich habe
nicht auf Ihren WordPress-Adminbereich, Ihre Datenbank oder einen anderen privaten Teil der
Website zugegriffen.
Insbesondere habe ich nie eines Ihrer Formulare abgeschickt, nie eine Datei hochgeladen und nie den Upload-Handler des Plugins berührt. Es wurde nichts abgeschickt, getestet oder ausgenutzt. Das wiegt hier schwerer als auf den meisten dieser Seiten, denn das Hochladen einer Datei ist genau die Handlung, um die es bei diesem Problem geht, „ich habe sie nicht angerührt” ist also der ganze Unterschied zwischen einer Offenlegung und einem Eindringen.
Ich veröffentliche außerdem bewusst nicht die Details, die jemandem helfen würden, dieses Problem auszunutzen. Die obige Beschreibung endet auf dem Niveau, das ein Website-Betreiber braucht, und ich verlinke keinerlei Proof-of-Concept-Code.
Dies ist eine versionsbasierte Beobachtung: Ihre Website meldet eine Version im betroffenen Bereich. Das ist keine Aussage darüber, dass Ihre Website zum Zeitpunkt meiner Prüfung ausnutzbar war. Weil das Problem von einer Formulareinstellung abhängt, die ich nicht sehen kann, ist eine Website in diesem Bereich möglicherweise gar nicht exponiert, und eine Website in diesem Bereich kann unabhängig davon durch andere Mittel geschützt sein, etwa eine Web Application Firewall.
Ich habe keinen Webmaster / ich komme nicht weiter
Wenn Sie die Website nicht selbst betreuen, leiten Sie diese Seite bitte an die zuständige Person weiter (Ihre Webentwicklung, Agentur oder Ihren Hoster). Dort wird man die obigen Schritte schnell wiedererkennen.
Wenn Sie die Website selbst betreuen und nicht weiterkommen, helfe ich Ihnen gern kostenlos weiter. Melden Sie sich einfach über die Kontaktdaten unten.
Kontakt
Evan Harris, Sicherheitsforscher
- E-Mail: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Ich melde mich zu solchen Themen ausschließlich, um Betreibern zu helfen, ihre Websites abzusichern. Wenn Sie nicht erneut kontaktiert werden möchten, sagen Sie einfach Bescheid; ich halte mich daran.
Quellen
Offizielle Meldungen und Nachverfolgung
Hersteller / Plugin