Sécurité
Un service qui envoie des requêtes authentifiées à vos API doit être plus prudent que les API qu'il teste. Voici, concrètement, ce que nous faisons.
Nous ne scannons que vos domaines
Avant le premier scan, vous prouvez que vous contrôlez l'hôte de l'API, de l'une de ces deux façons :
- un enregistrement DNS
TXTnommé_tenantleak.<hôte>contenant le jeton affiché dans votre espace ; - un fichier
/.well-known/tenantleak-verification.txtservi par l'hôte et contenant ce même jeton.
La preuve est vérifiée à nouveau tous les 30 jours. Un hôte qui n'est plus vérifié n'est plus scanné. Les URL de connexion des comptes de test et l'URL de la spec doivent elles aussi appartenir à un domaine vérifié ; seule exception, le point de jeton https d'un fournisseur d'identité connu (Auth0, Okta, Cognito…).
Aucune requête vers votre réseau interne
Toutes les requêtes sortantes passent par un client réseau qui résout lui-même le nom de domaine, refuse les adresses privées, réservées ou locales (y compris les formes IPv6 qui les masquent), puis épingle la connexion sur l'adresse vérifiée. Un changement de DNS entre la vérification et la connexion ne permet donc pas de rebondir vers une adresse interne. Les redirections ne sont pas suivies vers un hôte non vérifié.
Chaque scan tourne dans un processus séparé, limité en mémoire et arrêté net s'il dépasse sa durée maximale : une API lente ou une spec démesurée ne peut ni bloquer le service ni retarder les scans des autres clients.
Vos identifiants de test
- Chiffrés au repos dès l'enregistrement (Fernet : AES-128-CBC et HMAC-SHA256), avec une clé conservée en dehors de la base de données.
- Jamais réaffichés : l'interface ne montre qu'un indice (les derniers caractères) pour les reconnaître.
- Masqués dans les rapports et les commandes curl de reproduction.
- Supprimés avec l'identité, l'API ou l'organisation.
Nous vous recommandons d'utiliser des comptes dédiés aux tests, sur une préproduction, et de les révoquer si vous arrêtez le service.
Des scans qui ne cassent rien
- Lecture seule par défaut
- Seules des méthodes de lecture sont envoyées.
- Écritures sur demande
- Réservées à l'offre Business, activées API par API, après une attestation nominative qu'il s'agit d'un environnement de préproduction. Les suppressions ne sont jamais testées.
- Débit
- 5 requêtes par seconde au plus, 4 en parallèle.
- Budget
- 5 000 requêtes et 15 minutes au plus par scan, puis arrêt automatique.
- Identification
- Chaque requête porte l'agent
tenantleak-cloud/1.3 (+https://tenantleak.redsentinel.fr/bot). Plus d'informations pour les administrateurs.
Vos comptes
- Mots de passe hachés avec argon2id, 12 caractères minimum, verrouillage temporaire après des échecs répétés.
- Double authentification par application (TOTP), activable par chaque membre.
- Sessions conservées côté serveur, révocables depuis la page Compte ; le cookie ne contient qu'un jeton aléatoire.
- Protection CSRF sur tous les formulaires, politique de sécurité du contenu stricte, aucun script tiers.
- Rôles propriétaire, administrateur et membre ; journal d'audit des actions sensibles.
- Jetons d'API préfixés
tlc_, affichés une seule fois, stockés sous forme d'empreinte et révocables.
Le cloisonnement, testé sur nous-mêmes
Chaque objet appartient à une organisation, et chaque identifiant reçu dans une URL est vérifié contre l'organisation de l'appelant. Nous passons tenantleak sur tenantleak Cloud avec deux organisations de test, comme nous vous demandons de le faire.
Signaler une vulnérabilité
Écrivez à alex@redsentinel.fr avec les étapes de reproduction. Nous répondons sous 72 heures ouvrées, ne poursuivons pas les recherches menées de bonne foi et vous créditons si vous le souhaitez. Nos coordonnées figurent aussi dans /.well-known/security.txt.
Merci de ne pas accéder aux données d'autres clients au-delà de ce qui est nécessaire pour démontrer le problème, et de ne pas dégrader le service.