CVE-2026-42605 (CVSS 8.8) : un compte DJ AzuraCast suffit pour exploiter un path traversal dans l'endpoint d'upload Flow.js et déposer un webshell PHP. Patch 0.23.6 urgent.
En bref
- CVE-2026-42605 — path traversal exploitable en RCE dans AzuraCast, suite open source de gestion de radios web, CVSS 8.8 publié le 9 mai 2026.
- Versions affectées : toutes les versions antérieures à AzuraCast 0.23.6. L'attaque exige un compte authentifié avec permissions de gestion des médias — accordées par défaut aux DJ et gestionnaires de station, donc bien au-delà des seuls administrateurs.
- Action urgente : mettre à jour AzuraCast vers 0.23.6, auditer les rôles DJ et station manager, surveiller la présence de webshells PHP dans la racine web.
Les faits
La vulnérabilité CVE-2026-42605, publiée le 9 mai 2026, frappe AzuraCast, une suite open source self-hosted très largement utilisée pour gérer des stations de radio web, des podcasts et des flux de streaming audio. Avec un score CVSS 3.1 de 8.8 (vecteur AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H), la faille combine une traversée de chemin (CWE-22) et une exécution de code à distance, exploitable par tout utilisateur disposant de permissions de gestion des médias.
Le défaut réside dans l'endpoint d'upload de médias basé sur la bibliothèque Flow.js : POST /api/station/{station_id}/files/upload. Selon l'analyse publiée par TheHackerWire et confirmée par le mainteneur, le paramètre de requête currentDirectory — qui indique le sous-répertoire de destination pour le fichier uploadé — ne subit aucune validation contre les séquences de traversée de type ../. Cette absence de filtrage permet à un attaquant authentifié de cibler une destination arbitraire sur le système de fichiers du serveur.
La chaîne d'exploitation technique est précise. Côté code, la méthode LocalFilesystem::upload() utilise getLocalPath() pour construire le chemin de destination en concaténant simplement les préfixes sans normalisation, ce qui contourne le WhitespacePathNormalizer prévu pour assainir les chemins. L'appel système copy() de PHP résout ensuite les séquences ../ au niveau de l'OS, autorisant l'écriture de fichiers en dehors du dossier media root. En pratique, un attaquant peut écrire un webshell PHP directement dans la racine web servie par Nginx, puis exécuter du code arbitraire en l'appelant via le navigateur.
La chronologie de la découverte établie par DailyCVE et corroborée par TheHackerWire montre que le défaut a été signalé en avril 2026 par un chercheur externe via le canal sécurité du projet. Le projet AzuraCast a publié la version 0.23.6 le 9 mai 2026, contenant la correction qui ajoute une normalisation stricte du paramètre currentDirectory et un check explicite de confinement dans le répertoire racine du stockage médias.
Aucun PoC public n'a été déposé sur les dépôts d'exploits à la date de publication, mais la nature du défaut — un upload classique avec ../../ dans un paramètre — rend l'écriture d'un exploit triviale dès lors que le diff de patch est connu. La fenêtre d'exposition risque d'être courte avant l'apparition d'exploits massifs, en particulier sur les plateformes de pentest automatisé et les scanners de surface d'attaque.
Un point particulièrement préoccupant concerne le contrôle d'accès en amont : la route /api/station/{station_id}/files/upload exige uniquement la permission StationPermissions::Media. Cette permission est accordée par défaut aux rôles DJ et station manager, bien plus largement distribués que le rôle administrateur global. Dans la pratique d'une radio communautaire ou d'une plateforme multi-stations, des dizaines voire centaines de comptes peuvent disposer de cette permission, ce qui élargit considérablement le périmètre d'utilisateurs malveillants potentiels — notamment en cas de credential stuffing ou de compromission d'un seul compte DJ.
Aucune exploitation in-the-wild n'est confirmée à la publication par le mainteneur AzuraCast, mais le projet recommande explicitement de considérer toute installation non patchée comme à risque immédiat, en raison de la trivialité technique et de la large base utilisateur. AzuraCast revendique plusieurs dizaines de milliers d'installations actives selon les statistiques de téléchargement Docker Hub.
Le contexte d'usage rend AzuraCast particulièrement vulnérable aux compromissions opportunistes : la suite est souvent déployée par des associations, des radios étudiantes, des micro-entrepreneurs ou des streamers individuels disposant de peu de ressources de sécurité, sur des VPS ouverts à Internet, et avec une politique de gestion des comptes DJ relativement permissive. Le scénario typique d'attaque consiste à phisher ou bruteforce un compte DJ, exploiter CVE-2026-42605 pour déposer un webshell, puis pivoter vers des fonctions de proxy et de minage de cryptomonnaies.
Impact et exposition
Les organisations exposées sont l'ensemble des installations AzuraCast antérieures à 0.23.6 dont l'interface de gestion est accessible à au moins un compte DJ ou gestionnaire de station. Le périmètre fonctionnel ne se limite pas à l'admin : tout compte avec permission Media — y compris des comptes invités ou délégués à des contributeurs externes — peut déclencher l'exploit.
La surface d'attaque est large : AzuraCast étant un projet self-hosted populaire, des dizaines de milliers d'instances sont accessibles publiquement selon les recherches Shodan et Censys. Beaucoup tournent en mode Docker sans isolation forte du conteneur web, ce qui maximise les conséquences d'un webshell PHP — accès aux secrets de configuration, aux clés Liquidsoap, aux credentials des stations, voire pivotement vers les bases de données MariaDB et Redis exposées sur le réseau interne du compose.
Aucune exploitation in-the-wild n'est confirmée publiquement à la date de publication, mais la trivialité de l'exploit et la nature exposée de la majorité des déploiements font craindre une vague d'attaques opportunistes dans les jours qui suivent la divulgation. Les attaquants ciblant les radios web pour héberger des proxies, des miners ou des panels de phishing utilisent régulièrement ce type de défaut comme point d'entrée.
L'élément aggravant tient à la nature des comptes DJ : il s'agit fréquemment de comptes partagés, peu robustes, avec des mots de passe faibles ou réutilisés. Une simple campagne de credential stuffing peut suffire à obtenir l'accès initial nécessaire pour déclencher l'exploit RCE — sans même cibler les administrateurs, beaucoup mieux protégés.
Recommandations immédiates
- Mettre à jour AzuraCast vers la version 0.23.6 ou supérieure (advisory : AzuraCast Security Advisory CVE-2026-42605 publié le 9 mai 2026).
- Auditer la liste des comptes disposant de la permission StationPermissions::Media et révoquer cette permission à tous les comptes qui ne l'utilisent pas activement.
- Forcer la rotation des mots de passe de tous les comptes DJ et station manager, et activer le 2FA pour ces rôles.
- Inspecter le contenu de la racine web (typiquement /var/azuracast/www_tmp et /var/azuracast/www) à la recherche de fichiers PHP inattendus déposés au cours des 14 derniers jours.
- Analyser les logs Nginx pour repérer des requêtes POST vers /api/station/*/files/upload contenant des séquences ../ dans le corps de la requête multipart.
- Si une compromission est suspectée : isoler l'instance, sauvegarder les journaux, reconstruire le conteneur AzuraCast à partir d'une image saine, restaurer les médias depuis une sauvegarde antérieure à la fenêtre d'exposition.
⚠️ Urgence
CVE-2026-42605 permet une RCE par dépôt de webshell avec un simple compte DJ. La permission requise est accordée bien au-delà du périmètre administrateur, ce qui élargit considérablement la surface d'exploitation. Toute instance AzuraCast publique antérieure à 0.23.6 doit être patchée immédiatement et auditée pour détecter d'éventuels webshells déjà déposés.
Comment savoir si je suis vulnérable ?
Connectez-vous à l'interface AzuraCast et consultez le panneau « Administration > About » pour identifier la version. Toute version antérieure à 0.23.6 est vulnérable. En CLI, exécutez docker inspect azuracast/azuracast:latest | grep -i version. Vérifiez ensuite l'historique des comptes ayant la permission Media : la liste se trouve dans Administration > Roles. Pour détecter une compromission éventuelle, recherchez la présence de fichiers .php récents dans /var/azuracast/www_tmp et /var/azuracast/www, ainsi que des requêtes POST suspectes vers /api/station/*/files/upload dans access.log.
Votre infrastructure est-elle exposée ?
Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.
Demander un auditÀ propos de l'auteur
Ayi NEDJIMI
Auditeur Senior Cybersécurité & Consultant IA
Expert Judiciaire — Cour d'Appel de Paris
Habilitation Confidentiel Défense
ayi@ayinedjimi-consultants.fr
Ayi NEDJIMI est un vétéran de la cybersécurité avec plus de 25 ans d'expérience sur des missions critiques. Ancien développeur Microsoft à Redmond sur le module GINA (Windows NT4) et co-auteur de la version française du guide de sécurité Windows NT4 pour la NSA.
À la tête d'Ayi NEDJIMI Consultants, il réalise des audits Lead Auditor ISO 42001 et ISO 27001, des pentests d'infrastructures critiques, du forensics et des missions de conformité NIS2 / AI Act.
Conférencier international (Europe & US), il a formé plus de 10 000 professionnels.
Domaines d'expertise
Ressources & Outils de l'auteur
Testez vos connaissances
Mini-quiz de certification lié à cet article — propulsé par CertifExpress
Articles connexes
CVE-2026-27960 : OpenCTI takeover non-auth via API GraphQL
CVE-2026-27960 (CVSS 9.8) permet à un attaquant non authentifié de prendre le contrôle administratif d'OpenCTI via l'API GraphQL. Versions 6.6.0 à 6.9.12 vulnérables.
CVE-2026-42302 : RCE non-auth FastGPT agent-sandbox (9.8)
CVE-2026-42302 (CVSS 9.8) expose le composant agent-sandbox de FastGPT à une RCE non authentifiée via code-server lancé avec --auth none. Versions 4.14.10 à 4.14.12 vulnérables, patch 4.14.13 disponible.
CVE-2026-42569 : bypass auth phpVMS import legacy (CVSS 9.4)
phpVMS jusqu'à 7.0.5 affecté par CVE-2026-42569 : bypass d'authentification sur endpoints d'import legacy, CVSS 9.4. Mise à jour 7.0.6 obligatoire.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Laisser un commentaire