WordPress 5.2 mit Unterstützung für die Überprüfung von Updates durch digitale Signaturen.

Vorstellung Release des Web-Inhaltsverwaltungssystems WordPress 5.2. Die Veröffentlichung ist bemerkenswert für den Abschluss einer sechsjährigen Epoche bei der Umsetzung Möglichkeiten der Überprüfung von Updates und Erweiterungen durch digitale Signaturen.

Bislang war Vertrauen in die Infrastruktur und Server von WordPress der Hauptfaktor für die Sicherheit bei der Installation von Updates (nach dem Download wurde der Hash ohne Quellverifikation überprüft). Im Falle eines Kompromisses der Server des Projekts hatten Angreifer die Möglichkeit, Updates zu manipulieren und schädlichen Code unter den WordPress-basierten Websites, die das System für automatische Installationen von Updates nutzen, zu verbreiten. Nach dem zuvor verwendeten vertrauensbasierten Liefermodell bliebe eine solche Manipulation auf der Benutzerseite unbemerkt.

Angesichts der Tatsache, dass laut Angaben dem w3techs Projekt WordPress auf 33,8 % der Websites im Netz verwendet wird, hätte ein Vorfall katastrophale Ausmaße angenommen. Außerdem war die Gefahr eines Kompromisses der Infrastruktur nicht hypothetisch, sondern durchaus real. Vor einigen Jahren entdeckte ein Sicherheitsexperte demonstrierte eine Schwachstelle, die es einem Angreifer ermöglichte, seinen Code auf dem Server api.wordpress.org auszuführen.

Durch den Einsatz digitaler Signaturen würde die Kontrolle über den Update-Verteilungsserver nicht zur Kompromittierung der Benutzersysteme führen, da für einen Angriff zusätzlich der separat gespeicherte private Schlüssel erforderlich wäre, mit dem die Updates signiert werden.

Die Implementierung der Quellüberprüfung von Updates durch digitale Signaturen wurde dadurch behindert, dass die Unterstützung der erforderlichen kryptografischen Algorithmen erst seit kurzem in den Standardlieferungen von PHP verfügbar ist. Die notwendigen kryptografischen Algorithmen wurden durch die Integration der Bibliothek Libsodium in den Kern. PHP 7.2. Aber die minimal unterstützte PHP-Version in WordPress ist die Version 5.2.4 (ab WordPress 5.2 — 5.6.20). Die Einführung der Unterstützung für digitale Signaturen hätte die Anforderungen an die minimal unterstützte PHP-Version erheblich erhöht oder eine externe Abhängigkeit hinzugefügt, was die Entwickler angesichts der Verbreitung von PHP-Versionen in Hosting-Systemen nicht umsetzen konnten.

Die Lösung war Entwicklung und die Aufnahme einer kompakten Version von Libsodium in WordPress 5.2 — Sodium Compat, in dem eine minimale Menge an Algorithmus zur Überprüfung digitaler Signaturen in PHP implementiert ist. Die Implementierung lässt hinsichtlich der Leistung zu wünschen übrig, löst jedoch das Kompatibilitätsproblem vollständig und ermöglicht es Plugin-Entwicklern, moderne kryptografische Algorithmen zu integrieren.

Zur Erstellung digitaler Signaturen wird der Algorithmus Ed25519, entwickelt mit Unterstützung von Daniel Bernstein (Daniel J. Bernstein). Die digitale Signatur wird für den SHA384-Hashwert erstellt, der aus dem Inhalt des Updates berechnet wird. Ed25519 bietet ein höheres Sicherheitsniveau als ECDSA und DSA und zeigt eine sehr hohe Verifikations- und Signaturerstellungsgeschwindigkeit. Die Widerstandsfähigkeit gegen Angriffe auf Ed25519 beträgt etwa 2^128 (im Durchschnitt sind für einen Angriff auf Ed25519 2^140 Bit-Operationen erforderlich), was der Widerstandsfähigkeit von Algorithmen wie NIST P-256 und RSA mit einer Schlüssellänge von 3000 Bit oder einem 128-Bit-Blockcipher entspricht. Ed25519 ist auch nicht anfällig für Kollisionsprobleme bei Hashes, unempfindlich gegen Angriffe durch Analyse von Cache-Timings und Nebenkanalangriffe.

In der Version WordPress 5.2 umfasst die Überprüfung digitaler Signaturen derzeit nur die wichtigsten Updates der Plattform und führt standardmäßig nicht zu einer Blockierung des Updates, sondern informiert den Benutzer lediglich über ein aufgetretenes Problem. Die standardmäßige Blockierung wurde entschieden, vorerst nicht zu aktivieren, da eine vollständige Überprüfung und Umgehung erforderlich ist möglicher Probleme. In Zukunft wird auch geplant, die Überprüfung digitaler Signaturen für die Verifizierung der Quelle der Installation von Themes und Plugins hinzuzufügen (Hersteller werden in der Lage sein, ihre Veröffentlichungen mit ihrem Schlüssel zu signieren).

Neben der Unterstützung digitaler Signaturen in WordPress 5.2 sind folgende Änderungen zu vermerken:

  • Es wurden zwei neue Seiten zur Fehlerbehebung typischer Konfigurationsprobleme im Bereich 'Site Health' hinzugefügt, sowie ein Formular bereitgestellt, über das Entwickler Debugging-Informationen an die Site-Administratoren weitergeben können;
  • Es wurde die Implementierung des 'weißen Bildschirms des Todes' hinzugefügt, der im Falle schwerwiegender Probleme angezeigt wird und dem Administrator hilft, Probleme im Zusammenhang mit Plugins oder Themes zu beheben, indem er in einen speziellen Wiederherstellungsmodus nach einem Absturz wechselt;
  • Ein Kompatibilitätsprüfsystem für Plugins wurde implementiert, das automatisch die Nutzung des Plugins in der aktuellen Konfiguration unter Berücksichtigung der verwendeten PHP-Version überprüft. Wenn eine neuere PHP-Version für den Betrieb des Plugins erforderlich ist, wird die Aktivierung dieses Plugins automatisch blockiert.
  • Die Unterstützung für die Aktivierung von Modulen mit JavaScript-Code unter Verwendung von Webpack und Babel;
  • Eine neue Vorlage privacy-policy.php wurde hinzugefügt, die es ermöglicht, den Inhalt der Seite mit den Bedingungen zum Datenschutz anzupassen.
  • Für die Design-Themen wurde ein Handler für den wp_body_open-Hook hinzugefügt, der es ermöglicht, Code direkt nach dem -Tag einzufügen.
  • Die Anforderungen an die Mindestversion von PHP wurden auf 5.6.20 erhöht, in Plugins und Themes ist die Nutzung von Namespaces und anonymen Funktionen nun möglich.
  • Es wurden 13 neue Icons hinzugefügt.

Zusätzlich kann erwähnt werden Erkennung kritische Sicherheitsanfälligkeit im WordPress-Plugin WP Live Chat (CVE-2019-11185). Die Schwachstelle ermöglicht es, beliebigen PHP-Code auf dem Server auszuführen. Das Plugin wird auf mehr als 27.000 Websites verwendet, um interaktiven Chat mit Besuchern zu ermöglichen, einschließlich der Websites von Unternehmen wie IKEA, Adobe, Huawei, PayPal, Tele2 und McDonald's (Live Chat wird häufig verwendet, um auf Websites von Unternehmen aufdringliche Pop-up-Chats anzubieten, um mit einem Mitarbeiter zu kommunizieren).

Das Problem zeigt sich im Code für das Hochladen von Dateien auf den Server und ermöglicht es, die Überprüfung zulässiger Dateitypen zu umgehen und ein PHP-Skript auf dem Server hochzuladen, das dann direkt über das Web aufgerufen werden kann. Interessanterweise wurde im letzten Jahr im Live Chat bereits eine ähnliche Schwachstelle (CVE-2018-12426) festgestellt, die ermöglichte, PHP-Code im Schaf von Bildern hochzuladen, indem ein anderer Inhaltstyp im Feld Content-Type angegeben wurde. Im Rahmen der Behebung des Problems wurden zusätzliche Prüfungen anhand von Weißlisten und dem MIME-Typ des Inhalts hinzugefügt. Diese Prüfungen wurden jedoch fehlerhaft implementiert und können leicht umgangen werden.

Insbesondere ist das direkte Hochladen von Dateien mit der Erweiterung „.php“ verboten, jedoch wurde die Erweiterung „.phtml“ nicht auf die schwarze Liste gesetzt, die auf vielen Servern mit dem PHP-Interpreter verbunden ist. Die Weißliste erlaubt nur den Upload von Bildern, kann jedoch umgangen werden, indem eine doppelte Erweiterung angegeben wird, zum Beispiel „.gif.phtml“. Um die Überprüfung des MIME-Typs zu umgehen, war es ausreichend, zu Beginn der Datei, vor dem Eröffnen des PHP-Code-Tags, die Zeichenfolge „GIF89a“ anzugeben.

Quelle: opennet.ru

60GB SSD 8Gb DDR4