Teknik - CVE-2025-54068 - Deep dive into Livewire, from weak typing to pre-authenticated remote command execution (Pass the Salt) - Parce que... c'est l'épisode 0x33B!
Contenu de l'épisode
- 19 septembre 2026 - Montréal Canada - Bsides Montréal 2026
- 22 septembre 2026 - Belgique - BE-Cyber
- 24 au 25 septembre 2026 - Belgique - BruCON
- 1er au 3 octobre 2026 - Krakow, Pologne - AligatorCon
- 13 et 14 novembre 2026 - Worldwide - DEATHCon
- 16 au 19 novembre - Rennes, France - European Cyber Week 2026
- 1 au 3 décembre 2026 - Ottawa, Canada - Forum inCYBER Canada
- 25 et 26 février 2027 - Québec, Canada - SéQCure 2027
- I.A. Café - Enquête au cœur de la recherche sur l’intelligence artificielle
Cette description a été faite à l’aide de GLM 5.3 Flash, à partir de la transcription qui a été effectuée par ElevenLabs Scribev2. Aucune vérification humaine n’a été faite. Si vous découvrez des erreurs ou des inexactitudes, vous pouvez m’en faire part afin que je procède aux modifications appropriées.
Une intuition née sur le terrain
L’épisode spécial du Polysecure reçoit Rémi Matasse, chercheur chez Synactive, et Pierre Martin, chercheur en sécurité chez Depy, venus présenter à Pass the Salt leur recherche sur Livewire, une dépendance très répandue de l’écosystème Laravel. Tout commence lors d’une mission de Rémi, qui remarque des objets PHP circulant dans les requêtes et note le détail de côté. Le sujet resurgit quand les deux chercheurs partagent une mission commune, et Pierre vient le voir spontanément avec la même intuition. Voir des noms de classes PHP transiter dans des requêtes est rarement bon signe, et ce double déclic a lancé la recherche.
Le rôle de Livewire dans l’écosystème PHP
En PHP classique, avec Laravel ou Symfony, la mise à jour d’un formulaire recharge toute la page, ce qui alourdit le serveur et pénalise les utilisateurs à connexion limitée. Livewire se place au-dessus des applications Laravel pour imiter Next.js avec une approche proche du single page application, où l’HTML est délivré côté client et où des objets sont échangés entre le back-end et le front-end pour maintenir un état partagé. L’ampleur de la dépendance justifiait l’effort, car Livewire figure parmi les plus utilisées du framework, avec environ 20 % des applications Laravel exposées sur Internet et 80 millions de téléchargements.
Pourquoi les objets PHP sonnent l’alarme
Pour les auditeurs moins familiers avec PHP, Pierre détaille la mécanique du langage. Les projets PHP reposent sur des classes qui référencent des objets et des modèles de base de données. Laravel propose des classes contenant des méthodes potentiellement dangereuses, puisque le framework appelle des fonctions PHP sensibles comme include, require ou parfois eval. Pouvoir instancier n’importe quelle classe n’équivaut pas à appeler n’importe quelle méthode, mais le simple constructeur d’une classe peut suffire à remonter jusqu’à une exécution de commande.
De la gadget chain au bypass
En mode boîte blanche, les chercheurs identifient une instanciation arbitraire d’objets et jugent qu’une RCE est inévitable vu le nombre de dépendances présentes par défaut dans Laravel. Ils construisent une gadget chain enchaînant cinq ou six objets jusqu’à une exécution de commande arbitraire, mais la validation par checksum exige de connaître le secret, l’app key qui gère toute la cryptographie de Laravel, et Livewire refuse de traiter cela comme une vulnérabilité. Le plot twist présenté à Pass the Salt réside dans un bypass. La gadget chain peut être rejouée dans un champ d’update non signé que l’utilisateur doit pouvoir envoyer. Un défaut de logique dans leur récursion fait qu’un sous-tableau placé dans un tableau est traité comme un objet instanciable, ce qui permet la remote command execution sans le prérequis de signature, donc un contrôle complet du serveur.
Une disclosure exemplaire
Le rapport initial avait été ref