Heim Backend-Entwicklung PHP-Tutorial Warum besteht diese Sicherheitslücke? CVE-WPForms)

Warum besteht diese Sicherheitslücke? CVE-WPForms)

Dec 24, 2024 pm 10:24 PM

In den letzten Tagen ist mir aufgefallen, dass die Schwachstelle CVE-2024-11205 (CVSS 8.5) im Wordpress WPForms-Plugin viel Aufmerksamkeit erregt hat. Hauptsächlich aus 3 Gründen:

  • WPForms ist ein weit verbreitetes Plugin mit über 6 Millionen aktiven Installationen (Sites, die es verwenden)
  • Es handelt sich um eine Sicherheitslücke mit hoher Kritikalität
  • Es ist bizarr einfach zu verstehen

Der ursprüngliche Wordfence-Beitrag hat die Sicherheitslücke und ihre Folgen bereits hervorragend erläutert. Daher ist mein Ziel hier ein anderes: zu theoretisieren, wie eine so bizarr einfache Sicherheitslücke in einem der am häufigsten verwendeten WordPress-Plugins mehr als ein Jahr lang offen blieb.

Verletzlichkeit

Ich erinnere mich an die Informationen aus dem ursprünglichen Beitrag. Das Plugin verwendet die Funktionen ajax_single_ payment_refund() und ajax_single_ payment_cancel(), um Stripe-Zahlungsaktionen abzuwickeln. Es erfolgt jedoch keine Überprüfung, ob der angemeldete Benutzer die Berechtigung zur Durchführung solcher Aktionen hat ⚰️. Um das Ganze abzurunden, wurden die Funktionen durch die Methode wpforms_is_admin_ajax „geschützt“, die einfach nicht prüft, ob der Benutzer ein Administrator ist, wie manche vielleicht denken.

Por que essa vulnerabilidade existe? CVE-WPForms)

Fix

Beginnend mit der Schwachstellenminderung besteht die offizielle Lösung darin, auf Version 1.9.2.2 zu aktualisieren. In dieser Version des Codes wurde den beiden Funktionalitäten ajax_single_ payment_refund und ajax_single_ payment_cancel eine Autorisierungsvalidierung hinzugefügt. Allerdings wurde wpforms_is_admin_ajax unverändert beibehalten?.

Por que essa vulnerabilidade existe? CVE-WPForms)

Wann ist die Sicherheitslücke aufgetreten?

Die erste anfällige Version ist WPForms 1.8.4, die am 28. November 2023 veröffentlicht wurde. Die Version führte „Neue Stripe-Zahlungstools“ ein, darunter unter anderem „Synchronized Stripe Dashboard“ und „Logic for Recurring Payments“.

Por que essa vulnerabilidade existe? CVE-WPForms)

Als Änderungen brachte das Update das Hinzufügen von 15 neuen Dateien, das Löschen von 64 Dateien und die Bearbeitung von 425 Dateien. Klingt nach einer großartigen Veröffentlichung, die jemand manuell überprüfen kann ☠️.

Por que essa vulnerabilidade existe? CVE-WPForms)

Warum besteht die Sicherheitslücke?

Können automatisierte Sicherheitstools erkennen?

Um diese Frage zu beantworten, habe ich SAST Semgrep (das ich sehr gerne verwende) und Gepeto (auch bekannt als ChatGPT) getestet.

Semgrep

Ich habe ein Semgrep ausgeführt. im gesamten Projekt und er konnte die Schwachstelle nicht erkennen?.

Por que essa vulnerabilidade existe? CVE-WPForms)

Por que essa vulnerabilidade existe? CVE-WPForms)

Das Ergebnis ist wie erwartet. Offiziell gelten Sicherheitslücken bei Autorisierungsfehlern als Sicherheitslücken in der Geschäftslogik. Das bedeutet, dass sie von automatisierten Tools kaum erkannt werden.

Die Common Weakness Enumeration CWE-862 Missing Authorization scheint zu stimmen.

Por que essa vulnerabilidade existe? CVE-WPForms)

Geppetto

Ich habe ChatGPT gefragt, ob er irgendwelche Probleme im vergangenen Code identifizieren könnte. Ich habe ihm nur die Methoden ajax_single_paid_refund und wpforms_is_admin_ajax geschickt (weil ich mein kostenloses ChatGPT für diesen Tag nicht verbrauchen möchte?).

Por que essa vulnerabilidade existe? CVE-WPForms)

Und unglaublicherweise gelang es ihm, die Schwachstelle zu identifizieren und auf die Lösung hinzuweisen (die der tatsächlichen Behebung sehr ähnlich war?), neben anderen „möglichen Schwachstellen“ in diesem Code, wie z. B. keine Geschwindigkeitsbegrenzung oder Protokollierung.

Por que essa vulnerabilidade existe? CVE-WPForms)

„Ahh, aber Sie haben SAST für das gesamte Projekt ausgeführt und gleichzeitig die KI geleitet“ ist das Leben wirklich so? ?‍♂️

Warum besteht die Sicherheitslücke?

Wie man sieht, können herkömmliche Sicherheitstools Autorisierungsschwachstellen kaum erkennen.

Laut CWE-862 Missing Authorization kann diese Schwachstelle mithilfe manueller Analysen wie Codeüberprüfung, Pentest und Bedrohungsmodellierung erkannt werden. Und die Wirksamkeit wird nur als „mäßig“ eingestuft?.

Por que essa vulnerabilidade existe? CVE-WPForms)

Andere Materialien, in denen es um Autorisierungsschwachstellen geht, bekräftigen, dass es sich hierbei um eine Klasse von Schwachstellen handelt, deren Handhabung kompliziert und in der realen Welt häufig vorkommt, wie zum Beispiel OWASP Top 10 API Security 2019 und 2023, bei dem es an erster und dritter Stelle um Autorisierungsschwachstellen geht Position.

Ein weiterer Punkt ist, dass die zuvor als Validierung verwendete Methode (wpforms_is_admin_ajax) einen sehr schlechten Namen hat, der Entwickler und Codeprüfer verwirren soll, da diese Funktion nicht prüft, ob der angemeldete Benutzer ein Administrator ist.

Meine Theorie ist also, dass diese Sicherheitslücke besteht, weil 1) sie ohne manuelle Analyse fast unmöglich zu erkennen ist; 2) Die Methode wpforms_is_admin_ajax würde viele Prüfer verwirren, die den Code analysieren.

Ich hoffe, in Zukunft weitere Analysen wie diese anbieten zu können. Wenn es Ihnen gefallen hat, teilen Sie den Beitrag mit Tante und Oma. Zweifel? Ich bin immer auf Bluesky, Threads und Twitter.

Das obige ist der detaillierte Inhalt vonWarum besteht diese Sicherheitslücke? CVE-WPForms). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Was sind Aufzählungen (Enums) in PHP 8.1? Was sind Aufzählungen (Enums) in PHP 8.1? Apr 03, 2025 am 12:05 AM

Die Aufzählungsfunktion in Php8.1 verbessert die Klarheit und Type des Codes, indem benannte Konstanten definiert werden. 1) Aufzählungen können Ganzzahlen, Zeichenfolgen oder Objekte sein, die die Lesbarkeit der Code und die Type der Type verbessern. 2) Die Aufzählung basiert auf der Klasse und unterstützt objektorientierte Merkmale wie Traversal und Reflexion. 3) Die Aufzählung kann zum Vergleich und zur Zuordnung verwendet werden, um die Sicherheit der Typ zu gewährleisten. 4) Aufzählung unterstützt das Hinzufügen von Methoden zur Implementierung einer komplexen Logik. 5) Strenge Typ Überprüfung und Fehlerbehandlung können häufig auftretende Fehler vermeiden. 6) Die Aufzählung verringert den magischen Wert und verbessert die Wartbarkeit, achten Sie jedoch auf die Leistungsoptimierung.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind REST -API -Designprinzipien? Was sind REST -API -Designprinzipien? Apr 04, 2025 am 12:01 AM

Die RESTAPI -Designprinzipien umfassen Ressourcendefinition, URI -Design, HTTP -Methodenverbrauch, Statuscode -Nutzung, Versionskontrolle und Hassoas. 1. Ressourcen sollten durch Substantive dargestellt und in einer Hierarchie aufrechterhalten werden. 2. HTTP -Methoden sollten ihrer Semantik entsprechen, z. B. Get wird verwendet, um Ressourcen zu erhalten. 3. Der Statuscode sollte korrekt verwendet werden, z. B. 404 bedeutet, dass die Ressource nicht vorhanden ist. 4. Die Versionskontrolle kann über URI oder Header implementiert werden. 5. Hateoas startet Client -Operationen durch Links als Antwort.

Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Apr 05, 2025 am 12:03 AM

In PHP wird das Ausnahmebehandlung durch den Versuch, Fang, schließlich und werfen Keywords erreicht. 1) Der Try -Block umgibt den Code, der Ausnahmen auslösen kann. 2) Der Catch -Block behandelt Ausnahmen; 3) Block stellt schließlich sicher, dass der Code immer ausgeführt wird. 4) Wurf wird verwendet, um Ausnahmen manuell zu werfen. Diese Mechanismen verbessern die Robustheit und Wartbarkeit Ihres Codes.

Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Apr 04, 2025 am 12:02 AM

Die Hauptfunktion anonymer Klassen in PHP besteht darin, einmalige Objekte zu erstellen. 1. Anonyme Klassen ermöglichen es, Klassen ohne Namen direkt im Code zu definieren, was für vorübergehende Anforderungen geeignet ist. 2. Sie können Klassen erben oder Schnittstellen implementieren, um die Flexibilität zu erhöhen. 3. Achten Sie bei der Verwendung auf Leistung und Code -Lesbarkeit und vermeiden Sie es, dieselben anonymen Klassen wiederholt zu definieren.

See all articles