web-dev-qa-db-fra.com

Comment fonctionne le logiciel Fortify?

Fortify est un SCA utilisé pour rechercher les failles de sécurité du code logiciel. J'étais juste curieux de savoir comment ce logiciel fonctionne en interne. Je sais que vous devez configurer un ensemble de règles sur lesquelles le code sera exécuté. Mais comment exactement est-il capable de trouver les vulnérabilités dans le code. 

Quelqu'un a-t-il des idées à ce sujet? 

Merci d'avance.

51
Newbie

HP Fortify SCA dispose de 6 analyseurs: flux de données, flux de contrôle, sémantique, structure, configuration et mémoire tampon. Chaque analyseur trouve différents types de vulnérabilités.

Flux de données Cet analyseur détecte les vulnérabilités potentielles impliquant des données altérées (entrée contrôlée par l'utilisateur) utilisées de manière potentiellement dangereuse. L'analyseur de flux de données utilise une analyse de propagation globale inter-procédurale pour détecter le flux de données entre une source (site de saisie de l'utilisateur) et un puits (appel de fonction dangereuse ou opération). Par exemple, l'analyseur de flux de données détecte si une chaîne d'entrée de longueur non limitée contrôlée par l'utilisateur est copiée dans un tampon de taille statique et détecte si une chaîne contrôlée par l'utilisateur est utilisée pour construire le texte de requête SQL.

Flux de contrôle Cet analyseur détecte des séquences d'opérations potentiellement dangereuses. En analysant les chemins de flux de contrôle dans un programme, l'analyseur de flux de contrôle détermine si un ensemble d'opérations est exécuté dans un certain ordre. Par exemple, l’analyseur de flux de contrôle détecte l’heure des problèmes de contrôle/heure d’utilisation et des variables non initialisées, et vérifie si les utilitaires, tels que les lecteurs XML, sont configurés correctement avant leur utilisation.

Structural Il détecte les défauts potentiellement dangereux dans la structure ou la définition du programme. Par exemple, l'analyseur de structure détecte l'affectation à des variables membres dans les servlets Java, identifie l'utilisation de consignateurs non déclarés statique final et signale des instances de code mort qui ne seront jamais exécutées à cause d'un prédicat toujours faux.

Semantic Cet analyseur détecte les utilisations potentiellement dangereuses des fonctions et des API au niveau de la procédure même. Fondamentalement, un GREP intelligent.

Configuration Cet analyseur recherche les erreurs, les faiblesses et les violations de stratégie dans les fichiers de configuration de déploiement d'une application.

Tampon Cet analyseur détecte les vulnérabilités de dépassement de tampon qui impliquent l'écriture ou la lecture de plus de données qu'un tampon ne peut en contenir.

70
LaJmOn

@LaJmOn a une très bonne réponse, mais à un niveau d'abstraction complètement différent, je peux répondre à la question d'une autre manière:

  1. Votre code source est traduit en un modèle intermédiaire optimisé pour l'analyse par SCA.

  2. Certains types de code nécessitent plusieurs étapes de traduction. Par exemple, un fichier C # doit d'abord être compilé en un fichier de débogage .DLL ou .EXE, puis ce fichier binaire .NET désassemblé en Microsoft Intermediate Language (MSIL) par l'utilitaire .NET SDK ildasm.exe. Tandis que d'autres fichiers, tels qu'un fichier Java ou un fichier ASP, sont traduits en un seul passage par le traducteur Fortify SCA approprié pour cette langue.

  3. SCA charge le modèle en mémoire et charge les analyseurs. Chaque analyseur charge des règles et applique ces rôles aux fonctions de votre modèle de programme, de manière coordonnée.

  4. Les correspondances sont écrites dans un fichier FPR, avec les informations de correspondance de vulnérabilité, les conseils de sécurité, le code source, les références croisées source et les informations de navigation, la spécification de filtrage de l'utilisateur, les règles personnalisées et les signatures numériques compressées dans le package.

9
Douglas Held

Ajout également au commentaire @Doug Held ci-dessus ... À compter de Fortify 16.20, SCA prend désormais en charge l'analyse directe du code source .Net C #/ASP/VB - sans pré-compilation.

1
Mike D

Oui - Fortify SCA prend en charge l'analyse Objective-C et Swift pour iOS et environ 20 autres langues et de nombreux frameworks. Voir plus dans la fiche technique de Fortify SCA: 

https://www.hpe.com/h20195/V2/GetPDF.aspx/4AA5-6055ENW.pdf

Vous pouvez également tirer parti de Fortify SCA via SaaS sur Fortify on Demand et demander à des experts d’effectuer les analyses et d’auditer les résultats pour vous:

http://www8.hp.com/us/en/software-solutions/application-security-testing/index.html

0
Mike D