Couverture
Ce que yof couvre, et ce qu'il ne couvre pas
Classe par classe : ce que yof cherche dans votre code, ce que la « Mission automatisée » teste sur une app en marche, et ce que ni l'un ni l'autre ne fait.
Comment lire le tableau
- Dans le code : des motifs que les règles cherchent dans les fichiers d'un dépôt lié. Une règle trouve un motif et n'exécute pas le code, donc la plupart de ces constats demandent une validation.
- En direct : des tests sur une app en marche. La « Mission automatisée » est en développement et n'est pas en vente, donc rien de ce qui porte cette mention n'est encore disponible pour les clients.
- Non couvert : ce que ni l'un ni l'autre ne fait. Un rapport ne se lit jamais comme si ces points avaient été vérifiés.
| Classe | Dans le code | En direct | Non couvert |
|---|---|---|---|
| Injection SQL |
|
| Une saisie qui passe par une autre fonction ou un autre fichier, l'injection stockée (de second ordre) et les défauts internes d'un ORM. |
| Injection NoSQL |
|
| Les langages de requête d'autres bases de documents, et les langages autres que JavaScript et TypeScript. |
| Injection de commandes |
|
| Les arguments injectés dans un programme appelé sans shell, et les autres langages. |
| Injection de gabarit |
|
| Les gabarits lus dans une base de données, et les moteurs de gabarits qui tournent dans le navigateur. |
| Évaluation de code |
| Pas de test en direct | L'évaluation à travers un objet de bac à sable, et les autres langages. |
| Cross-site scripting |
|
| Les contournements de confiance d'Angular et de Vue, les réglages autoescape des gabarits serveur, les scripts stockés et une preuve dans un vrai navigateur. |
| Redirection ouverte |
|
| Les listes d'adresses permises qui existent et se contournent. |
| Server-side request forgery |
|
| Le DNS rebinding, les redirections qui mènent à l'intérieur, et l'accès aux métadonnées cloud. |
| Cross-site request forgery |
|
| Les frameworks autres que les apps de style Express, un contrôle fait par un proxy, et la protection que les réglages par défaut du navigateur donnent à la route. |
| Chargement d'objets risqué |
|
| Java ObjectInputStream, .NET BinaryFormatter et les entités externes XML. |
| Cryptographie faible |
|
| Les longueurs de clés, les versions de protocoles et les certificats du service en marche, la cryptographie maison et les canaux auxiliaires. |
| Mots de passe dans le code et la config |
| Pas de test en direct | L'historique git des fichiers supprimés, le fait qu'un mot de passe trouvé marche encore, et un mot simple sans chiffre ni symbole. |
| Téléversement de fichiers |
|
| Ce que le service de stockage ou le CDN fait du fichier, un logiciel malveillant dans le fichier, et les limites de taille. |
| Dockerfile |
| Pas de test en direct | Les images construites et les paquets du système qu'elles contiennent ne sont pas analysés. La fin de vie n'est connue que pour six images de base officielles. |
| docker-compose |
| Pas de test en direct | Les conteneurs en marche, et les fichiers env qui ne sont pas dans le dépôt. |
| Manifestes Kubernetes |
| Pas de test en direct | Le cluster en marche, les gabarits Helm non rendus, RBAC, les politiques réseau et d'admission, et les fichiers avec des ancres YAML. |
| Terraform |
| Pas de test en direct | Le compte cloud lui-même : ce qui est déployé peut différer des fichiers. Les valeurs venues de variables, de modules ou de fonctions, les autres fournisseurs et les autres types de ressources. |
En dehors de toutes les lignes
- Les images de conteneurs construites et les paquets système qu'elles contiennent ne sont pas analysés.
- Ces règles lisent des fichiers. Elles ne regardent pas le système en fonctionnement : le cluster, le compte cloud ou le comportement de l'app en ligne.
- Les données de la requête sont suivies dans une seule fonction ou un seul gestionnaire. Une valeur qui passe d'abord par une autre fonction ou un autre fichier n'est pas suivie.
- Langages : les règles de syntaxe lisent JavaScript et TypeScript. Python a les formes simples et exactes. PHP, Ruby, Go, Java, Kotlin et C# ont quelques formes d'une seule ligne. Les autres langages ne sont pas lus par ces règles.
Jamais couvert par des vérifications automatiques
- Les failles de logique métier, comme un prix ou une étape qu'une personne peut contourner.
- Les faiblesses que personne ne connaît encore (zero-days).
- Les personnes et les processus : hameçonnage, mots de passe partagés à la main, qui a accès.
- Tout ce qui sort du périmètre nommé dans ce rapport, et tout changement après sa date.
Ceci n'est pas un test d'intrusion.