Ruby on Rails
Rails abstrait beaucoup. Les pièges, eux, sont précis.
Un strong params oublié, un where interpolé à la main,
un secret_key_base faible, un YAML.load sur une entrée utilisateur : les failles Rails se nichent
dans des endroits connus. Je vais droit à ces endroits au lieu de balayer au hasard.
Ce que couvre l'audit Rails.
Les classes de failles les plus fréquentes sur une application Rails réelle, testées à la main sur votre code et vos endpoints. OWASP WSTG + API Top 10, en authentifié comme en non authentifié.
Mass assignment
strong params contournés, attributs sensibles écrasables
Autorisation
Pundit / CanCanCan mal câblés, IDOR sur les ressources
Injection ActiveRecord
where interpolé, find_by_sql, ordre/condition non bornés
Désérialisation & RCE
YAML.load, Marshal, cookies signés, secret_key_base
SSTI & rendu
render inline, ERB sur entrée utilisateur, open redirect
Authentification
Devise, reset de mot de passe, JWT, énumération de comptes
Déroulement d'un audit Rails.
Cadrage, test, rapport, contre-test. Vous savez à tout moment ce qui a été couvert sur votre app Rails et ce qu'il reste à passer. Prix fixe défini au cadrage.
-
~ 1 appel
Cadrage
Un court appel, un prix fixe, des règles d'engagement écrites. La version de Rails et le périmètre sont notés ici.
-
5–10 jours
Test
Exploitation manuelle des classes de failles propres à cette stack, en plus du parcours OWASP complet. Le critique part le jour même.
-
48 h
Rapport
Chaque faille : criticité, reproduction pas à pas, impact réel, et le correctif au niveau du code. Vos devs corrigent sans me relancer.
-
gratuit · 30 j
Contre-test
Vous patchez, je rejoue chaque faille et délivre l'attestation. Compris dans le forfait.
Quand tester une application Rails.
Un pentest n'attend pas l'incident. Les raisons qui reviennent chez les équipes Rails.
Avant de signer
- Un client grand compte exige une preuve de test avant de signer
- Une levée de fonds et sa due diligence technique approchent
Avant de mettre en ligne
- Une montée de version Rails ou une refonte change la surface d'attaque
- Une première mise en production d'une app qui manipule des données sensibles
Avant d'en répondre
- Une revue SOC 2 / ISO 27001 réclame un pentest annuel
- Un doute sur Devise, Pundit ou une logique de permissions
Questions sur l'audit Rails.
Les vraies questions d'un premier appel de cadrage sur une application Rails. Si la vôtre manque, elle a sa réponse en un e-mail.
Quelles versions de Rails testez-vous ?
De Rails 4 aux dernières, en API-only comme en monolithe avec vues. La version exacte est notée au cadrage.
Avez-vous besoin du code source ?
Pas obligatoire. En boîte grise (accès au code) le test va plus loin, surtout sur le mass assignment et les autorisations.
Testez-vous les gems tierces ?
Oui. Devise, Pundit, CanCanCan, Sidekiq et les dépendances exposées font partie de la surface d'attaque.
Sur prod ou sur staging ?
Staging iso-prod de préférence, avec des données réalistes. La prod reste possible avec des règles d'engagement écrites.
Le prix dépend-il de la taille du dépôt ?
Du périmètre exposé, surtout : nombre d'écrans, de rôles et d'endpoints. Un gros dépôt avec trois rôles se teste plus vite qu'un petit dépôt qui en compte douze. Forfait fixe, jamais de TJM, validé avant que je commence.
Et après le déploiement des correctifs ?
Je rejoue chaque faille sur la version patchée et je vous dis laquelle tient et laquelle non. Gratuit, sous 30 jours, puis attestation à jour.
Le rapport Rails,
point par point.
Pas de « revoir la configuration » : le correctif désigne le fichier Rails et la ligne à changer.
Qui mène votre test.
Saïd Mimouni
Pentest & audit de sécurité · applications web & API
Je teste des applications web et des API à la main, en solo, pour des startups et des agences. Vous parlez à la personne qui ouvre le terminal, du premier e-mail au contre-test.
Tout se fait à distance par défaut ; je peux aussi venir tester depuis vos locaux, partout en France.
Deux failles remontées, sur des composants Ruby.
Quand je tombe sur une faille dans un composant open source, je la remonte à l'éditeur, j'attends le correctif, puis je publie. C'est le même travail que sur vos applications, sans le contrat.
Injection de commandes dans spatial_features
Un nom de fichier dans une archive uploadée suffisait à faire exécuter n'importe quelle commande au serveur. Gem Ruby, corrigée en 3.11.2.
Lire l'analyse techniqueInjection SQL dans arel-extensions
Un paramètre de filtre sortait du chemin JSON et réécrivait la clause
WHERE. Gem Ruby, corrigée en 9.0.1.