Introduction – À la découverte de l’inconnu : sous la surface des SSRF WordPress non corrigées
Dans le paysage en constante évolution de la cybersécurité, WordPress reste une cible populaire en raison de son utilisation généralisée et de son vaste écosystème de plugins. Bien que le cœur de WordPress soit généralement sécurisé, les vulnérabilités proviennent souvent de plugins et de thèmes tiers. L'une de ces vulnérabilités qui a retenu l'attention est la vulnérabilité SSRF (Server-Side Request Forgery). Dans cet article de blog, nous allons nous plonger dans les subtilités de la vulnérabilité SSRF non corrigée de WordPress, ses implications et comment WP-Firewall peut aider à protéger votre site WordPress contre de telles menaces.
## La cause première : wp_http_validate_url()
En septembre 2022, SonarSource a publié un avis concernant un SSRF non authentifié non corrigé du cœur de WordPress. La cause principale de cette vulnérabilité réside dans la fonction `wp_http_validate_url()`, qui est sensible aux attaques de reliaison DNS. Bien que le cœur de WordPress lui-même ne soit pas directement affecté, les plugins qui utilisent cette fonction vulnérable sont en danger.
Comprendre wp_http_validate_url()
La fonction `wp_http_validate_url()` est conçue pour valider les URL afin d'empêcher les attaques de redirection et de falsification de requêtes. Cependant, elle ne protège pas contre les attaques de reliaison DNS, ce qui en fait un vecteur potentiel de vulnérabilités SSRF. Cette fonction est souvent utilisée en conjonction avec `wp_remote_get()` et son alternative plus sûre, `wp_safe_remote_get()`.
La partie évidente : wp_remote_get() et wp_safe_remote_get()
La fonction `wp_remote_get()` est couramment utilisée pour demander des hôtes distants via le serveur. Cependant, il est bien connu que le passage d'URL saisies par l'utilisateur dans cette fonction peut entraîner des vulnérabilités SSRF. Pour atténuer ce risque, WordPress a introduit `wp_safe_remote_get()`, qui inclut des validations supplémentaires pour empêcher les attaques SSRF.
À quel point wp_safe_remote_get() est-il sûr ?
La fonction `wp_safe_remote_get()` est conçue pour être une alternative plus sûre à `wp_remote_get()`. Selon la documentation officielle de WordPress :
« Cette fonction est idéale lorsque la requête HTTP est adressée à une URL arbitraire. L'URL est validée pour éviter les attaques de redirection et de falsification de requête. »
Cependant, la sécurité de la fonction's est limitée par la fonction sous-jacente `wp_http_validate_url()`, qui, comme mentionné précédemment, est vulnérable aux attaques de reliaison DNS.
Plongée dans la fonction
Le code source de `wp_safe_remote_get()` est le suivant :
php
fonction wp_safe_remote_get( $url, $args = tableau() ) {
$args['reject_unsafe_urls'] = vrai;
$http = _wp_http_get_object();
retourner $http->get( $url, $args );
}
Sur la ligne 2, le paramètre `$args['reject_unsafe_urls']` est défini sur `true`, ce qui finit par transmettre la saisie utilisateur à la fonction `wp_http_validate_url()` avant de demander l'URL. Étant donné que `wp_http_validate_url()` est vulnérable aux attaques de reliaison DNS, toute fonction s'appuyant uniquement sur elle pour la validation est également vulnérable.
Limites de la vulnérabilité
Bien qu'il ne s'agisse pas d'un SSRF à part entière, il existe des limitations définies par la fonction `wp_http_validate_url()` :
– Le protocole doit être « http:// » ou « https:// »
– Le port ne peut être que l’un des 80, 443 ou 8080
Malgré ces limitations, la demande d'hôtes internes dans ces limites est possible via ce SSRF.
Code de plug-in vulnérable
Voici quelques exemples de code de plugin vulnérable :
SSRF non aveugle
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response = wp_remote_retrieve_body( $response );
écho $réponse;
?>
Si le plugin prend une entrée utilisateur, la transmet à la fonction `wp_safe_remote_get()`, puis affiche la réponse, il est vulnérable au SSRF limité non aveugle.
SSRF aveugle
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response_code = wp_remote_retrieve_response_code( $response );
si ($response_code == 200) {
echo "En service";
} autre {
echo "En panne ou introuvable !";
}
?>
Si le plugin transmet l'entrée utilisateur à `wp_safe_remote_get()` mais ne renvoie que le code/statut de réponse, il est vulnérable au SSRF aveugle, limitant l'impact à l'analyse des ports 80, 443 ou 8080 de tout hôte interne.
Manifestation d'attaque
Pour démontrer cette vulnérabilité, nous avons effectué une attaque sur un serveur Apache exécutant WordPress sur le port 80 et un serveur PHP exécuté sur localhost:8080 avec des informations secrètes. Le code vulnérable a été inséré dans le répertoire du plugin `/wp-content/plugins/vulnerable-plugin/index.php`.
Dépôt GitHub
Vous pouvez trouver une instance Docker vulnérable et le script d'exploitation pour jouer avec cette vulnérabilité dans ce Dépôt GitHubCrédit photo : Ananda Dhakal
## Fonctions plus vulnérables
La même vulnérabilité s'applique à d'autres fonctions qui s'appuient sur `wp_http_validate_url()` pour la validation :
– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`
De plus, certaines fonctions agissent comme des wrappers pour `wp_safe_remote_get()` et sont également vulnérables dans une certaine mesure :
– `WP_REST_URL_Details_Controller::get_remote_url()`
– `download_url()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`
Conclusion
Il est évident que les fonctions considérées comme sûres et conçues pour protéger contre les vulnérabilités SSRF ne sont pas entièrement infaillibles. Le recours à `wp_http_validate_url()`, qui est vulnérable aux attaques de reliaison DNS, expose les sites WordPress à des attaques SSRF potentielles. Nous exhortons l'équipe WordPress Core à résoudre ce problème et à publier un correctif pour améliorer la sécurité de la plateforme.
Comment WP-Firewall peut vous aider
Chez WP-Firewall, nous comprenons l'importance cruciale de sécuriser votre site WordPress contre les menaces émergentes. Nos solutions de sécurité complètes sont conçues pour offrir une protection robuste contre un large éventail de vulnérabilités, y compris les attaques SSRF. Voici comment WP-Firewall peut vous aider à protéger votre site WordPress :
Détection des menaces en temps réel
WP-Firewall offre des fonctionnalités de détection des menaces en temps réel qui surveillent votre site à la recherche d'activités suspectes et de vulnérabilités potentielles. Nos algorithmes avancés peuvent identifier et bloquer les tentatives SSRF, garantissant ainsi la sécurité de votre site.
Audits de sécurité réguliers
Notre équipe d'experts en sécurité effectue des audits réguliers de votre site WordPress et de ses plugins pour identifier et corriger les vulnérabilités. En anticipant les menaces potentielles, nous vous aidons à maintenir un environnement sécurisé pour vos utilisateurs.
Gestion automatisée des correctifs
Maintenir à jour le cœur, les thèmes et les plugins de votre site WordPress est essentiel pour la sécurité. WP-Firewall fournit une gestion automatisée des correctifs, garantissant que tous les composants de votre site sont mis à jour avec les derniers correctifs de sécurité.
Règles de pare-feu personnalisées
WP-Firewall vous permet de créer des règles de pare-feu personnalisées adaptées à vos besoins spécifiques. En mettant en œuvre des règles qui bloquent les requêtes malveillantes et les tentatives d'accès non autorisées, vous pouvez améliorer la sécurité de votre site.
Rapports complets
Nos rapports de sécurité détaillés vous donnent un aperçu des menaces détectées et des mesures prises pour protéger votre site. Avec WP-Firewall, vous pouvez rester informé à tout moment de l'état de sécurité de votre site WordPress.
Protection contre SSRF avec WP-Firewall
Pour répondre spécifiquement aux vulnérabilités SSRF, WP-Firewall propose les fonctionnalités suivantes :
Validation des entrées
WP-Firewall effectue une validation rigoureuse des entrées pour garantir que les URL fournies par les utilisateurs sont sûres et exemptes de toute intention malveillante. En validant les entrées à plusieurs niveaux, nous empêchons les attaques SSRF d'exploiter des fonctions vulnérables.
Protection contre la reliure DNS
Notre pare-feu comprend des mécanismes de protection contre la reliaison DNS qui détectent et bloquent les tentatives d'exploitation des vulnérabilités de reliaison DNS. Cela garantit que votre site reste sécurisé même si des fonctions sous-jacentes telles que `wp_http_validate_url()` sont vulnérables.
Requêtes API sécurisées
WP-Firewall sécurise les requêtes API en appliquant des mesures strictes de validation et d'authentification. Cela empêche tout accès non autorisé et atténue le risque d'attaques SSRF ciblant les points de terminaison de l'API.
Surveillance continue
Nos capacités de surveillance continue permettent de surveiller le trafic et les activités de votre site. Tout comportement suspect est signalé et traité rapidement, minimisant ainsi le risque d'attaques SSRF réussies.
Appel à l'action
Bien que la vulnérabilité SSRF non corrigée de WordPress représente un risque important, des mesures proactives peuvent atténuer son impact. En tirant parti des solutions de sécurité complètes de WP-Firewall, vous pouvez protéger votre site WordPress contre les attaques SSRF et d'autres menaces émergentes. Gardez une longueur d'avance sur les vulnérabilités potentielles et assurez un environnement sécurisé à vos utilisateurs avec WP-Firewall.
N'attendez pas une faille de sécurité pour agir. Sécurisez votre site WordPress dès aujourd'hui avec WP-Firewall. Commencez votre essai gratuit et bénéficiez de la tranquillité d'esprit que procure une protection robuste et en temps réel.
Pour plus d'informations sur la façon dont WP-Firewall peut vous aider à sécuriser votre site WordPress, visitez notre site web ou contactez notre équipe de support.
Restez en sécurité, restez sécurisé et protégez votre site WordPress avec WP-Firewall.
—
Conseils de sécurité hebdomadaires
Recevez les dernières informations sur la sécurité WordPress dans votre boîte de réception. Abonnez-vous à notre newsletter et restez informé des dernières menaces et des meilleures pratiques pour sécuriser votre site WordPress.
Les derniers avis de sécurité
Consultez tous les derniers avis de sécurité et restez informé des vulnérabilités critiques affectant les plugins et thèmes WordPress.
– 19 mai 2024 : Rapport sur les vulnérabilités WordPress (du 6 mai 2024 au 12 mai 2024)
– 15 mai 2024 : Des vulnérabilités hautement prioritaires ont été corrigées dans le plugin Uncode Core