Analyse et mise à l’essai de la sécurité

Aperçu

La mise à l’essai de la sécurité du code source d’Oracle comprend la vérification des caractéristiques et de la qualité des produits au moyen d’activités directes et indirectes. Bien que ces types d'essais s’appliquent souvent aux mêmes fonctions de produits, ils ont des objectifs distincts et sont effectués par des équipes différentes. Les essais de sécurité directs et indirects sont complémentaires afin de doter les produits Oracle des fonctions de sécurité les plus complètes.

Mise à l’essai directe de la sécurité

L’équipe de l’assurance de la qualité effectue normalement la mise à l’essai directe de la sécurité dans le cadre du cycle de mise à l’essai standard d’un produit. Durant la phase d’essai, les ingénieurs de l’assurance de la qualité vérifient la conformité des fonctions de sécurité mises en place par rapport aux spécifications fonctionnelles prévues lors du processus de vérification de l’architecture du produit et de la liste de contrôle.

Analyse et mise à l’essai de l’assurance de la sécurité

L’analyse et la mise à l’essai de l’assurance de la sécurité visent à vérifier les fonctions de sécurité des produits Oracle par rapport à différents types d’attaques. Il existe deux grandes catégories de tests utilisés dans le cadre des mises à l’essai des produits Oracle : les analyses statiques et dynamiques, qui sont décrites plus en détail dans les sections ci-dessous. Ces essais s’appliquent à des étapes différentes du cycle de développement d’un produit et tendent à mettre en évidence différentes catégories de problèmes; ils sont donc utilisés ensemble par les équipes de production d’Oracle.

Analyse statique

L’analyse de sécurité statique du code source constitue la principale ligne de défense utilisée lors du cycle de développement d’un produit. Oracle utilise un analyseur de code statique de Fortify Software, une entreprise appartenant à HP, de même qu’un ensemble d’outils mis au point à interne, pour détecter les problèmes lors du codage. Les produits conçus dans la plupart des langages de programmation (tels que C/C++, Java et C#) et sur des plateformes modernes (telles que J2EE et .NET) sont examinés afin de détecter les failles de sécurité potentielles. Ce type de vérification fonctionne très bien pour détecter les dépassements de tampon et les fuites de mémoire du code C/C++, les problèmes de gestion de ressource dans J2EE et NET, la constatation de traitement irrégulier de renseignements d’utilisateur, les différentes formes d’injection de code, les mauvaises configurations de système et ainsi de suite. L’un des désavantages de ce type de vérification est le grand nombre de faux positifs dans les résultats, c’est-à-dire qu’une grande part des problèmes repérés n’en sont pas. Les ingénieurs principaux des équipes de produit qui connaissent très bien le code produit assurent habituellement la vérification de ces rapports d’analyse pour distinguer les faux positifs des problèmes réels et réduire le nombre de faux positifs.

Analyse dynamique

L’analyse dynamique est toujours effectuée lors des étapes avancées du cycle de développement d’un produit à tout le moins, à un stade où le produit ou le composant peut être exécuté. Bien qu’il puisse y avoir certaines différences entre les diverses organisations d’Oracle, cette tâche est normalement confiée à une équipe d’assurance qualité de la sécurité (ou une autre équipe occupant cette fonction) et peut parfois être divisée pour être effectuée par plusieurs équipes de produit. L’analyse dynamique cible les interfaces d’utilisation et les interfaces de programmation d’applications (API) d’un produit visibles de l’extérieur et nécessite fréquemment l’utilisation d’outils de mise à l’essai spécialisés. Les outils manuels et automatiques sont utilisés pour la mise à l’essai au sein d’Oracle. Les outils automatiques effectuent des tests à données aléatoires (fuzzing) pour mettre à l’essai les interfaces et les protocoles de produit accessibles depuis un réseau. Quant aux outils manuels, ils nécessitent d’appliquer les modifications manuellement, mais permettent un niveau de précision et de ciblage bien plus élevé.