Désactiver l’accès anonyme à l’API REST introduit sous WordPress 4.7

WordPress 4.7 introduit une API REST qui est une avancée que beaucoup qualifient de révolutionnaire. Elle va permettre à nombreuses extensions, des applications tierces ou encore des services dans le cloud de communiquer facilement avec votre site Internet sous WordPress. L'inconvénient majeur dont s'est fait l'écho Wordfence sur son blog est qu'une telle API permet l'accès anonyme à la liste des utilisateurs de votre site... ce qui n'est pas sans poser des risques non négligeables en matière de sécurité. En attendant une évolution plus restrictive de l'accès à ce type d'information, une solution pour désactiver les requêtes en mode anonyme existe.

Explication du problème

Si votre site est en 4.7, essayez d’accéder à la liste de vos utilisateurs en étant déconnecté de votre administration via cette URL : example.com/wp-json/wp/v2/users

La liste ainsi obtenue contient des identifiants qui pourraient être utilisés lors d’attaques sur votre formulaire de connexion. Même si vous disposez de protections additionnelles en limitant par exemple le nombre de tentatives, cela va nécessairement ralentir votre serveur.

Bloquer l’accès aux utilisateurs anonymes

Pour restreindre l’accès aux seuls utilisateurs connectés, il existe une extension gratuite intitulée Disable REST API. Il suffit de l’installer puis de l’activer, rien de plus.

Disable REST API

Désactiver l'accès anonyme à l'API REST de WordPress.

Taille : 2,4 KiB  •  Date : 14 décembre 2016 •  Hits : 423

Pour vérifier qu’elle fonctionne correctement, ouvrez de nouveau l’URL mentionnée ci-dessous puis constatez le résultat : la liste des utilisateurs n’est plus accessible comme en témoigne ce message :

{"code":"rest_disabled","message":"L\u2019API REST est d\u00e9sactiv\u00e9e sur ce site."}

Une extension à déployer en masse sur toutes vos installations WordPress en attendant une mise à jour qui limiterait les accès anonymes. Si vous utilisez déjà des extensions de sécurité comme Wordfence, iThemes Security ou encore SecuPress, notez qu’un tel blocage est déjà en place ou possible.

12 commentaires

  1. Djibs

    Du coup si une app android/iOS a besoin de se connecter pour récupérer les derniers posts du site, comment ça se passe si l’accès n’est pas autorisé ?
    Tu vas peu etre me dire d’utiliser oAuth.
    L’utilisateur n’as pas forcement un compte sur le site en question et ne veut pas forcement créer un compte puis se logger en oAuth.

  2. Djibs

    Si ça peut aider un lecteur pour bloquer l’accès à la liste des membres du site :

    add_filter( ‘rest_endpoints’, function( $endpoints ){
    if ( isset( $endpoints[‘/wp/v2/users’] ) ) {
    unset( $endpoints[‘/wp/v2/users’] );
    }
    if ( isset( $endpoints[‘/wp/v2/users/(?P[\d]+)’] ) ) {
    unset( $endpoints[‘/wp/v2/users/(?P[\d]+)’] );
    }
    return $endpoints;
    });

  3. Julio Potier

    « Il semblerait que Ninjafirewall le bloque aussi par défaut. » et « installé sous forme de MU »
    Ce n’est pas une bonne idée de le mettre par défaut. C’est une fonctionnnalité, elle peut être désactivée si on estime que c’est un problème de sécurité. Pour moi ça en est un certes, mais elle peut aussi très bien correspondre à un besoin et dans ce cas le risque encourru est connu. De plus il est possible que ces « uers » soient protégés d’une autre manière de telle que même si je vous donne la liste des users de mon site, vous n’en faites rien (obligation de connaitre le mail pour se logger, double auth, déplacement de la page de login, combo triple)

    « En attendant une évolution plus restrictive de l’accès à ce type d’information, une solution pour désactiver les requêtes en mode anonyme existe. »
    Il n’y en aura pas. Cette « faille » existe déjà dans WordPress nativement, l’API REST n’a rien ouvert comme brèche. Vous souvenez vous de « ?author=1 » ? C’est la même chose ! Vous l’aviez bloqué ? Et bien bloquez aussi cette fonctionnalité rest, mais elle n’est pas plus une faille que ne l’est celle de WP nativement.

    1. Aurélien Denis auteur de l’article

      J’attendais la réponse de l’expert !

      Faille ou pas faille, appelons cela comme on le veut, il n’en reste pas moins que la plupart des utilisateurs de WordPress n’auront pas connaissance de cette information. Une simple case à cocher pour autoriser l’API REST en back-office ce n’était guère compliquée… Cela me rappelle les anciennes versions qui nous donnaient la possibilité de désactiver XML-RPC. On voit bien les problèmes que cela pose en matière d’hébergement depuis l’ouverture généralisée. Ce sera pareil avec l’API REST à mon sens.

Laisser un commentaire

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX