En bref

  • CVE-2026-66066 KindaRails2Shell — lecture arbitraire de fichiers serveur et escalade possible vers RCE dans Ruby on Rails via Active Storage et libvips, CVSS 9.5 critique
  • Affecte Rails 7.0.0 à 7.2.3.1, Rails 8.0.0 à 8.0.5, et Rails 8.1.0 à 8.1.3 — des centaines de milliers d'applications web exposées
  • Action urgente : patcher vers Rails 7.2.3.2, 8.0.6 ou 8.1.4 — toute application Rails acceptant des uploads d'images non authentifiés est exposée

Les faits

Le 31 juillet 2026, l'équipe de sécurité Ruby on Rails a publié des mises à jour correctives pour CVE-2026-66066, une vulnérabilité critique de lecture arbitraire de fichiers pouvant escalader vers l'exécution de code à distance (RCE) dans le composant Active Storage. La faille est notée 9.5 sur l'échelle CVSS, ce qui la classe comme critique. Elle affecte les branches Rails 7.0, 7.1, 7.2, 8.0 et 8.1, couvrant des centaines de milliers d'applications web en production. The Hacker News, SOC Prime, HeroDevs et CyberSecurityNews ont tous couvert la divulgation dans les heures suivant la publication du patch.

La root cause de CVE-2026-66066 réside dans l'interaction entre Active Storage et libvips, la bibliothèque de traitement d'images haute performance adoptée comme processeur par défaut dans Rails depuis la version 7.0 via load_defaults 7.0. Lorsqu'un utilisateur soumet un fichier image à une application Rails utilisant Active Storage, libvips est invoqué pour analyser et transformer l'image. Certaines opérations libvips ne sont pas sécurisées contre des fichiers malicieusement forgés : des formats d'image spéciaux permettent d'indiquer à libvips de lire des fichiers arbitraires sur le système de fichiers du serveur et d'en incorporer le contenu dans la réponse ou dans les métadonnées de l'image traitée.

Un attaquant exploitant CVE-2026-66066 peut, sans aucune authentification, soumettre un fichier image spécialement forgé à n'importe quel endpoint d'upload Rails Active Storage et récupérer le contenu de fichiers arbitraires auxquels le processus Rails a accès en lecture. Les cibles particulièrement critiques incluent : le fichier config/master.key (clé de déchiffrement de tous les secrets de l'application), la variable d'environnement SECRET_KEY_BASE (utilisée pour signer les sessions et les cookies), les fichiers .env contenant les mots de passe de base de données et clés API tierces, les configurations cloud (credentials.yml.enc), et potentiellement les fichiers de code source si le processus web dispose de droits étendus.

La chaîne d'exploitation vers le RCE complet est documentée par HeroDevs dans leur analyse baptisée KindaRails2Shell, publiée sur Ethiack le 1er août 2026. Une fois qu'un attaquant a obtenu la valeur de SECRET_KEY_BASE ou la master.key via la lecture de fichier arbitraire, il peut forger des cookies de session Rails signés se faisant passer pour n'importe quel utilisateur, y compris les administrateurs. Dans certaines configurations — notamment avec des backends ActiveJob qui désérialisent des données non fiables comme Sidekiq, Resque ou DelayedJob — cette maîtrise des secrets Rails peut conduire à une exécution de code arbitraire sur le serveur. La séquence complète est : upload malveillant → lecture de SECRET_KEY_BASE → forgery de cookie administrateur → RCE via désérialisation ou exploitation de fonctionnalités admin.

Les versions Rails concernées selon NVD/NIST et l'advisory officiel de l'équipe Rails sont : Rails 7.0.0 à 7.2.3.1, Rails 8.0.0 à 8.0.5, et Rails 8.1.0 à 8.1.3. Les applications Rails antérieures à 7.0 utilisant MiniMagick comme processeur d'images par défaut ne sont pas affectées par cette CVE spécifique. De même, les applications Rails 7.x et 8.x ayant explicitement configuré MiniMagick via config.active_storage.variant_processor = :mini_magick ne sont pas vulnérables.

La condition d'exploitation est simple et extrêmement répandue dans les applications Rails modernes. Trois conditions doivent être réunies : l'application utilise Active Storage, elle a configuré libvips comme processeur d'images (défaut depuis Rails 7.0), et elle expose un endpoint permettant le téléversement de fichiers accessible aux utilisateurs non authentifiés. La combinaison de ces trois conditions est courante dans les plateformes de e-commerce, les réseaux sociaux, les applications de gestion de contenu, et les systèmes de support avec pièces jointes.

D'après l'Université de Nagoya, qui a publié une alerte de sécurité le 31 juillet 2026, la vulnérabilité a été découverte et reportée à l'équipe de sécurité Rails dans le cadre d'une divulgation responsable. L'équipe Rails a confirmé le problème et coordonné la publication simultanée du correctif et de l'advisory public. Contrairement à CVE-2026-61511 vBulletin, aucun PoC public n'a été publié à ce stade, mais la documentation technique dans les advisories est suffisamment détaillée pour permettre à des chercheurs expérimentés de reproduire l'exploitation.

Ruby on Rails est l'un des frameworks web les plus utilisés au monde, avec une présence dans des applications critiques comme GitHub, Shopify et Basecamp. L'ampleur de la surface exposée — toutes les versions 7.x et 8.x actives depuis 2023 — en fait l'une des CVE Rails les plus critiques de ces dernières années. À ce jour, l'équipe Rails indique ne pas avoir eu connaissance de tentatives d'exploitation avant ou après la divulgation, mais la publication d'une analyse technique détaillée comme KindaRails2Shell augmente le risque d'exploitation opportuniste dans les prochains jours.

Impact et exposition

L'impact principal est la fuite de secrets applicatifs critiques. Tout fichier accessible par le processus Rails peut être lu, notamment les clés de chiffrement des sessions, les mots de passe de base de données, les tokens OAuth, et les clés API des services tiers (Stripe, Twilio, SendGrid, AWS S3, etc.). Dans les environnements cloud modernes, ces secrets donnent souvent accès à des ressources bien au-delà de l'application elle-même — notamment des buckets S3, des rôles IAM AWS, ou des bases de données RDS. Une exploitation réussie peut constituer une violation de données au sens RGPD si des données personnelles sont compromises, avec obligation de notification CNIL dans les 72 heures.

La condition d'exploitation — upload de fichier potentiellement accessible sans authentification — est délibérément volontaire dans de nombreuses applications : formulaires d'inscription avec photo de profil, plateformes d'e-commerce avec photo de produit, systèmes de support avec pièce jointe. Ces fonctionnalités sont souvent exposées publiquement et constituent le vecteur d'entrée direct. Les applications Rails exigeant une authentification préalable à tout upload sont moins exposées, mais la faille peut toujours être exploitée par des utilisateurs authentifiés malveillants via des comptes gratuits ou des inscriptions automatiques.

La possibilité d'escalade vers RCE dépend de la configuration spécifique de chaque application. Les applications utilisant Sidekiq avec Redis, certains gems ActiveJob avec backends asynchrones désérialisant des données non fiables, ou exposant des fonctionnalités d'administration avancées sont les plus susceptibles de permettre l'escalade complète. Même sans RCE, la lecture de SECRET_KEY_BASE permet à un attaquant de maintenir un accès persistant via des sessions forgées pendant toute la durée de vie de la clé.

Les environnements de développement et staging déployés avec des configurations identiques à la production — notamment la même master.key et les mêmes credentials — sont également exposés si accessibles sur Internet. Ce cas est courant pour les équipes utilisant des environnements de révision automatisés sur des branches GitOps ou des plateformes PaaS comme Heroku Review Apps, Render, ou Railway.

Recommandations immédiates

  • Mettre à jour Rails immédiatement : vers 7.2.3.2 (branche 7.2), 8.0.6 (branche 8.0), ou 8.1.4 (branche 8.1) — advisory : Rails Security Advisory CVE-2026-66066
  • Si la mise à jour immédiate est impossible : basculer sur MiniMagick comme processeur d'images via config.active_storage.variant_processor = :mini_magick dans config/application.rb, ou désactiver temporairement les variants Active Storage
  • Effectuer une rotation de SECRET_KEY_BASE et de config/master.key — cela invalidera toutes les sessions actives mais est nécessaire si une exploitation est suspectée
  • Auditer les logs d'accès pour des requêtes POST inhabituelles vers les endpoints Active Storage (routes /rails/active_storage/) depuis des IP inconnues depuis le 31 juillet 2026
  • Vérifier les permissions système sur les fichiers sensibles (config/master.key, .env, config/credentials.yml.enc) pour limiter leur accessibilité au strict nécessaire
  • Regénérer les credentials Rails chiffrés (rails credentials:edit) après rotation de la master.key pour les environnements potentiellement exposés

Urgence

CVE-2026-66066 permet la lecture du fichier config/master.key sans authentification via un simple upload d'image forgée, donnant accès à tous les secrets Rails chiffrés et ouvrant la voie à l'exécution de code via forgery de session. Toutes les applications Rails 7.x et 8.x utilisant Active Storage avec libvips et exposant des uploads sont exposées. Appliquez le patch immédiatement et procédez à une rotation des secrets Rails.

Comment savoir si je suis vulnérable ?

Vérifiez votre version Rails avec bundle exec rails --version. Si vous êtes sur Rails 7.0.x à 7.2.3.1, 8.0.0 à 8.0.5, ou 8.1.0 à 8.1.3, vous êtes potentiellement vulnérable. Vérifiez ensuite si libvips est le processeur actif avec bundle exec rails runner "puts ActiveStorage.variant_processor" — si la réponse est vips, vous êtes dans la configuration vulnérable. Enfin, vérifiez si votre application expose des endpoints d'upload sans authentification en auditant vos routes et contrôleurs Active Storage. Si les trois conditions sont réunies, la mise à jour est urgente.

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