heygrc
NIST 800-53 SI-10 dans le code

Entrées, vérifiées avant d'être considérées comme fiables.

SI-10 (validation des entrées d'information) est le contrôle NIST 800-53 qui stipule qu'un système doit vérifier la validité des entrées qu'il accepte. Une entrée non validée permet à une requête de faire exécuter au système des actions qu'il ne devrait pas : lire un fichier en dehors de son répertoire, appeler un hôte non autorisé ou traiter des données malformées. La validation réside dans le code qui traite l'entrée, et il est facile de la supprimer sans que personne ne remarque les conséquences.

How it shows up in a diff

The shapes the same control failure takes.

La validation des entrées s'affaiblit lorsqu'une modification permet à une entrée non fiable de passer sans vérification. Les schémas récurrents :

  • Un chemin de fichier est construit à partir d'une entrée non validée

    Un nom fourni par l'utilisateur est intégré dans un chemin sans vérification, permettant à une valeur conçue avec ../ de sortir du répertoire prévu (traversée de chemin).

  • Une URL ou un hôte provient d'une entrée non validée

    Une cible de requête est extraite d'une entrée sans liste autorisée, permettant au serveur d'appeler des hôtes internes ou non intentionnels (falsification de requête côté serveur).

  • Une vérification de validation est supprimée

    Une vérification du format, de la plage ou de l'ensemble autorisé d'une entrée est retirée, permettant à des valeurs malformées ou hostiles d'atteindre la logique en aval.

  • Les vérifications de limites ou de longueur sont supprimées

    Les limites de taille ou de longueur des entrées sont retirées, permettant à des charges utiles surdimensionnées ou malformées de passer.

  • Une liste autorisée est remplacée par l'acceptation de tout

    Une liste autorisée stricte de valeurs acceptées est assouplie pour accepter des entrées arbitraires, élargissant ce qu'un appelant peut fournir.

Worked example

Un chemin de téléchargement construit à partir d'un nom non validé.

Un point de terminaison de téléchargement sert des fichiers depuis un répertoire de téléversement par nom. Une modification transmet directement le nom de fichier de l'utilisateur dans le chemin et supprime la vérification de la liste autorisée, permettant à une requête avec un nom conçu de sortir du répertoire et de lire des fichiers qu'elle ne devrait pas.

files/download.ts+0 -1
function download(name) {-  if (!isAllowedFile(name)) return notFound()  return readFile(path.join(UPLOAD_DIR, name))}
heygrcNIST 800-53 SI-10

Sans la vérification, un nom conçu comme ../../etc/passwd sort du répertoire de téléversement (traversée de chemin) et lit des fichiers arbitraires. SI-10 (validation des entrées d'information) exige que les entrées soient vérifiées pour leur validité. Validez le nom par rapport à une liste autorisée, ou résolvez le chemin et confirmez qu'il reste dans le répertoire avant la lecture.

What an auditor does with this

La validation des entrées est vérifiée là où les données non fiables entrent.

Une évaluation selon NIST 800-53 examine si un système valide les entrées qu'il accepte à ses frontières de confiance : les noms de fichiers, les URL, les identifiants et les charges utiles sont-ils vérifiés avant d'être utilisés ? Une modification qui supprime une validation ou construit un chemin ou une requête à partir d'une entrée brute est la faiblesse concrète derrière cela, et elle est visible dans le diff pour le gestionnaire.

What this is, and is not

Une revue, pas une suite SAST complète.

heygrc signale les modifications qui concernent SI-10 et cite le contrôle afin que la correction ait lieu dans la pull request. Ce n'est pas un remplacement pour votre analyse statique ou votre fuzzing. Il détecte le moment où une modification permet à une entrée non fiable de passer sans vérification, au niveau du diff.