Sicherheitsrichtlinien

Das phpMyAdmin-Entwicklerteam bemüht sich, phpMyAdmin so sicher wie möglich zu machen. Dennoch können Webanwendungen wie phpMyAdmin für diverse Angriffe anfällig sein und es wird immer noch nach neuen Wegen des Ausnutzens gesucht.

Für jede gemeldete Schwachstelle geben wir eine phpMyAdmin Security Announcement (PMASA) aus und erhält auch die CVE-ID zugewiesen. Wir können ähnliche Schwachstellen zu einem PMASA gruppieren (z.B. können mehrere XSS-Schwachstellen unter einem PMASA gemeldet werden).

Wenn Sie glauben, eine Schwachstelle gefunden zu haben, lesen Sie bitte Melden von Sicherheitsproblemen.

Typische Schwachstellen

In diesem Abschnitt beschreiben wir typische Schwachstellen, die in unserer Codebasis auftreten können. Diese Liste ist keineswegs vollständig, sie soll typische Angriffsflächen zeigen.

Cross-site scripting (XSS)

Wenn phpMyAdmin Benutzerdaten anzeigt, z.B. etwas in der Datenbank eines Benutzers, müssen alle HTML-Sonderzeichen escaped werden. Wenn dieses Escaping irgendwo fehlt, könnte ein böswilliger Benutzer eine Datenbank mit speziell gestaltetem Inhalt füllen, um einen anderen Benutzer dieser Datenbank dazu zu bringen, etwas auszuführen. Dies könnte z.B. ein Stück JavaScript-Code sein, das jede Menge Böses tun würde.

phpMyAdmin versucht, alle Benutzerdaten zu escapen, bevor sie in HTML für den Browser gerendert werden.

Cross-site request forgery (CSRF)

Ein Angreifer würde einen phpMyAdmin-Benutzer dazu bringen, auf einen Link zu klicken, um eine Aktion in phpMyAdmin zu provozieren. Dieser Link kann entweder per E-Mail oder über eine beliebige Website gesendet werden. Wenn dies gelingt, kann der Angreifer eine Aktion mit den Benutzerrechten durchführen.

Um dies zu verhindern, benötigt phpMyAdmin bei sensiblen Anfragen ein Token. Die Idee ist, dass ein Angreifer nicht das aktuell gültige Token in den dargestellten Link einfügt.

Der Token wird für jeden Login neu generiert, ist also generell nur für eine begrenzte Zeit gültig, was es dem Angreifer erschwert, einen gültigen Token zu erhalten.

SQL-Injection

Da der gesamte Zweck von phpMyAdmin darin besteht, SQL-Abfragen durchzuführen, ist dies nicht unser oberstes Ziel. SQL-Injection ist für uns jedoch wichtig, wenn es um die mysql-Steuerungsverbindung geht. Diese Steuerungsverbindung kann Berechtigungen haben, die über die des angemeldeten Benutzers hinausgehen, z.B. Zugriff auf die phpMyAdmin-Konfigurationsspeicher.

User data that is included in (administrative) queries should always be run through DatabaseInterface::quoteString().

Brute-Force-Angriff

phpMyAdmin selbst bewertet die Authentifizierungsversuche in keiner Weise. Dies wird durch die Notwendigkeit verursacht, in einer statuslosen Umgebung zu arbeiten, die keine Möglichkeiten bietet, sich vor solchen Dingen zu schützen.

Um dies zu minimieren, können Sie Captcha verwenden oder externe Tools wie fail2ban, für weitere Details siehe Absichern Ihrer phpMyAdmin-Installation.

Melden von Sicherheitsproblemen

Sollten Sie ein Sicherheitsproblem im phpMyAdmin-Programmiercode finden, kontaktieren Sie bitte das phpMyAdmin-Sicherheitsteam vor der Veröffentlichung. Auf diese Weise können wir einen Fix vorbereiten und den Fix zusammen mit Ihrer Ankündigung veröffentlichen. Sie werden auch in unserer Sicherheitsankündigung gewürdigt. Sie können Ihren Bericht optional mit der PGP-Schlüssel-ID DA68AB39218AB947 mit folgendem Fingerabdruck verschlüsseln:

pub   4096R/DA68AB39218AB947 2016-08-02
      Key fingerprint = 5BAD 38CF B980 50B9 4BD7  FB5B DA68 AB39 218A B947
uid                          phpMyAdmin Security Team <security@phpmyadmin.net>
sub   4096R/5E4176FB497A31F7 2016-08-02

Der Schlüssel kann entweder vom Keyserver bezogen werden oder ist unter phpMyAdmin keyring auf unserem Download-Server oder über Keybase verfügbar.

Sollten Sie Vorschläge zur Verbesserung von phpMyAdmin haben, um es sicherer zu machen, melden Sie dies bitte an unseren Problemtracker. Bestehende Verbesserungsvorschläge finden Sie unter Härten.