Politique de sécurité

L’équipe de développement de phpMyAdmin a beaucoup travaillé pour rendre phpMyAdmin aussi sûr que possible. Mais une application Web comme phpMyAdmin peut toujours être vulnérable à une attaque et de nouvelles façons d’attaquer sont continuellement inventées.

Pour chaque vulnérabilité rapportée, une annonce de sécurité phpMyAdmin (phpMyAdmin Security Announcement, PMASA) est établie et pour laquelle est assignée un ID CVE. Plusieurs vulnérabilités similaires peuvent être regroupées dans un seul PMASA (par ex. plusieurs vulnérabilités XSS peuvent être annoncées sous un seul PMASA).

En cas de découverte d’une vulnérabilité, merci de consulter Rapporter des problèmes de sécurité.

Vulnérabilité typique

Dans cette section seront décrites les vulnérabilités typiques qui peuvent survenir dans le code source. Cette liste n’est pas exhaustive, elle a pour but de montrer la surface d’attaque typique.

Cross-site scripting (XSS)

Quand phpMyAdmin affiche des données utilisateurs, par ex. provenant d’une base de données utilisateur, tous les caractères spéciaux HTML doivent être échappés. Sinon un utilisateur malicieux pourrait remplir la base avec du contenu spécial pour tromper un autre utilisateur de cette même base et exécuter du code arbitraire. Par ex. du JavaScript qui pourrait faire à peu près n’importe quoi.

phpMyAdmin essaie d’échapper toutes les données utilisateur avant qu’elles soient affichées en HTML dans le navigateur.

Cross-site request forgery (CSRF)

Un attaquant pourrait tromper un utilisateur de phpMyAdmin qui cliquerait sur un lien pour provoquer une action dans phpMyAdmin. Ce lien pourrait être envoyé par courriel ou un site quelconque. En cas de succès, cet attaquant pourrait effectuer des actions avec les privilèges utilisateur.

Pour limiter ce problème, phpMyAdmin requiert d’envoyer un jeton sur les sites sensibles. L’idée est qu’un attaquant ne possède pas le jeton actuellement valide pour l’inclure dans le lien présenté.

Le jeton est régénéré à chaque connexion, ce qui fait qu’il n’est généralement valide qu’un temps limité et le rend difficile à obtenir par un attaquant.

Injection SQL

Comme le but de phpMyAdmin est d’effectuer des requêtes SQL, ceci ne le concerne pas principalement. L’injection SQL concerne phpMyAdmin à la connexion de contrôle MySQL. Cette connexion de contrôle peut avoir des privilèges supplémentaires que l’utilisateur connecté ne possède pas. Par ex. pour accéder aux Configuration de stockage de phpMyAdmin.

Les données utilisateur qui sont incluses dans les requêtes (administratives) devraient toujours être exécutées à travers DatabaseInterface::escapeSring().

Attaque par force brute

phpMyAdmin ne limite pas le nombre d’essais pour l’authentification parce que phpMyAdmin fonctionne en mode sans état (stateless) pour lequel il n’existe aucune manière de protéger contre ce type de choses.

Pour limiter ceci, il est possible d’utiliser un Captcha ou des outils externes comme fail2ban. Plus de détails sont fournis à Sécuriser votre installation de phpMyAdmin.

Rapporter des problèmes de sécurité

En cas de découverte d’un problème de sécurité dans le code de phpMyAdmin, merci de contacter l’équipe de sécurité de phpMyAdmin avant de le rendre public. Une correction pourra être préparée et rendue publique avec votre annonce. Vous serez aussi crédité dans notre bulletin de sécurité. Votre rapport de sécurité peut être optionnellement chiffré avec l’ID de clé PGP DA68AB39218AB947 et l’empreinte suivante :

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

La clé peut soit être obtenue du serveur de clés soit est disponible dans le magasin de clés de phpMyAdmin sur le serveur de téléchargement soit en utilisant Keybase.

En cas de suggestion pour améliorer la sécurité de phpMyAdmin, merci de soumettre un rapport au gestionnaire de problèmes à. Les suggestions d’améliorations existantes se trouvent sous le libellé « hardening » à.