Contourner le blocage du WAF Cloudflare pour les uploads de zip dans WordPress

Le blocage des fichiers zip par le WAF (Web Application Firewall) de Cloudflare est un casse-tête pour de nombreux développeurs WordPress, surtout lors de la mise à jour de plugins et de thèmes. Heureusement, il existe une solution pour contourner ce problème sans compromettre la sécurité de votre site WordPress.

Pourquoi le WAF bloque-t-il les fichiers Zip ?

Cloudflare met régulièrement à jour ses Managed Rules pour renforcer la sécurité. Un upload de fichier zip peut être un vecteur pour des attaques malveéillantes, comme l’installation de shells. Ainsi, Cloudflare bloque ces requêtes pour protéger votre site.

Dans notre cas, par contre, cela nous empêche de faire nos mises à jour et c’est quand même plus simple de mettre à jour les plugins et thèmes payants avec un fichier zip, plutôt que de passer par SFTP ou wp-cli.

Solution #1: créer une exception dans le WAF de Cloudflare

Évidemment, nous n’allons pas désactiver ces règles qui fonctionnent si bien et ajoutent une couche de protection à notre site. Non, nous allons simplement créer une exception aux Managed Rules, que nous placerons avant tous les autres set de règles pour qu’elle soit prise en compte en priorité.

Étape 1: rendez-vous dans le Dashboard de Cloudflare

Allez dans Security > WAF > Managed Rules.

Voici ce que vous obtenez:

A screenshot of the WAF settings in Google Analytics showcasing blocked zip files.

Cliquez ensuite sur le bouton Add exception à droite.

Étape 2 : mise en place du match de l’exception

Nous donnons un nom à notre règle: WP themes and plugins uploads.

Ensuite, nous définissons le scénario pour que l’exception ne s’applique que si:

  • URI path est égal à /wp-admin/update.php
  • AND
  • IP Source Adress est égale à VOTRE_ADRESSE_IP (remplacez par l’adresse IP de votre machine)

Voici ce que cela nous donne en image:

A screenshot of the WAF add exceptions page in Azure, allowing for the upload of zip files.

Et l’aperçu de notre expression:

(http.request.uri.path eq "/wp-admin/update.php" and ip.src eq VOTRE_ADRESSE_IP)Code language: JavaScript (javascript)

Passons maintenant à la section “then”, qui est l’action que notre exception va entreprendre: sélectionnez l’option Skip specific rules from a Managed Ruleset puis cliquez sur le bouton Select ruleset.

A screenshot of the settings for a new email account featuring the option to upload and manage zip files securely through a Web Application Firewall (WAF).

Étape 3: surpasser le Managed Ruleset de Cloudflare

Nous allons maitenant shunter Cloudflare Managed Ruleset et plus précisément la règle “Adobe Coldfusion Dangerous File Upload“.

Sélectionnez Cloudflare Managed Ruleset.

A screenshot of the azure security console showing the WAF configuration and the ability to upload zip files.

Ensuite, sur l’écran suivant, faites une recherche avec "Adobe coldfusion“. À ce jour, trois règles sont retournées dans les résultats de recherche. C’est la première règle qui nous intéresse: Adobe ColdFusion – Dangerous File Upload – CVE:CVE-2019-7816.

Sélectionnez la règle en cochant la case qui la précède puis cliquez sur Next.

A screenshot of a cloud management dashboard featuring file zip uploads and Cloudflare's WAF (Web Application Firewall) solutions.

Vous revenez à l’écran précédent qui gère notre exception. Cliquez maintenant sur Deploy pour déployer notre nouvelle règle d’exception.

Une fois la règle déployée, déplacez-la en drag-and-drop de manière à ce qu’elle s’exécute avant le Managed Ruleset. Cette étape est très importante, car sinon l’exception ne sera jamais prise en compte. Une fois que vous avez fait cela, l’exception prendra précédence sur les règles du Managed ruleset.

A screen shot of the Google Analytics dashboard displaying uploads de zip and WAF Cloudflare, but with no mention of blocage.

Après le déploiement, testez la mise à jour de vos plugins et thèmes via l’upload de fichiers zip. Si tout est correctement configuré, vous devriez pouvoir les mettre à jour sans encombre.

Cette méthode offre un équilibre entre flexibilité et sécurité, puisque l’exception ne s’applique que pour votre adresse IP. Toutefois, soyez vigilant : n’utilisez cette exception que pour des mises à jour fiables et vérifiées pour éviter toute brèche de sécurité.

Solution #2: via le plugin Upload Larger Plugins

J’ajoute une autre solution qui est beaucoup, mais alors beaucoup plus rapide que tout ce que j’ai énoncé plus haut et qui ne nécessite aucun réglaage ou mise en place d’exception dans le pare-feu applicatif de Cloudflare.

Installez tout bonnement le plugin Upload Larger Plugins, développé par David Anderson.

Ce plugin remplace le téléchargeur de plugins intégré de WordPress par un qui vous permet de télécharger un plugin de n’importe quelle taille, en morceaux.

Ceci peut être utile si votre hébergement web a une limite de taille de fichier maximale faible (certaines installations par défaut de PHP ont une limite de 2 Mo), et que le plugin que vous souhaitez installer est trop grand pour cela.

Upload Larger Plugins charge le fichier via AJAX, ce qui fait qu’il ne déclenche pas la règle Coldfusion sur les uploads dangereux sur Cloudflare.

Bonnes mises à jour.

Rencontrez-vous des défis avec votre site WordPress ou WooCommerce? Laissez-moi les résoudre pour vous.

Discutons des solutions possibles »

Articles conseillés :

Matt

Matt Biscay est développeur WordPress et WooCommerce certifié chez Codeable, ainsi que sysadmin qualifié et enseignant-chercheur. Passionné par le code performant et les solutions sécurisées, je m'efforce d'offrir une expérience utilisateur exceptionnelle sur chaque projet.

Vous avez aimé cet article ? Vous avez un projet en tête et vous pensez que je pourrais vous aider à le concrétiser ? N'hésitez pas à me contacter, je serais ravi de discuter avec vous de votre projet !

Opinions