Sécurité de logiciel : L'analyse de phase de conception


  Share  
|


Une conception complète fournit des solutions au problème adressé par le produit, et également des prises dans la considération les effets de l'innovation. La sécurité d'une application est également créée et augmentée par une conception complète.

Une fois qu'une organisation jette l'idée de la sécurité comme dispositif, il devient évident que le rity de secu a besoin de considération tôt. Tandis que chaque organisation pourrait avoir différentes méthodes de concevoir un produit ou une application, l'approche suivante est utile pour assurer un niveau élevé de la sécurité dans une conception. La phase de conception analysée de trois points de vue :

· Global

· D'organisation

· Composant

Le point de vue global est la vue la plus élevée du système ; il identifie les besoins satisfaits par l'application et son ensemble de dispositif. Le point de vue d'organisation accentue les différents composants qui font vers le haut la demande. Le point de vue composant va au prochain niveau du granularity, en examinant les détails explicites de chaque composant et de son exécution. L'approche par accroissement utilisée ici tient compte d'une analyse plus profonde et plus complète qui fournit également un écoulement de processus facilement compris. Ceci aide des directeurs et des lotisseurs à installer les procédures appropriées pour assurer la considération de la sécurité dans leur application.

Le Point de vue Global

Beaucoup d'applications résultent d'un besoin non atteint ou de l'insuffisance des solutions courantes. Une bonne conception identifie les soucis suivants de sécurité :

· Les titres se sont reliés aux solutions existantes au problème ou au besoin étant résolu

· La réponse de l'application à ces titres

· Les vulnérabilités potentielles de sécurité qui existent dans les innovations étant faites

Une analyse globale fournit les informations qu'un attaquant trouverait autrement après que l'application soit libérée. À cette phase, une architecture de sécurité devrait être définie pour l'application. Cette architecture formalise le niveau de la sécurité requis dans une application. Elle aide à établir la portée de la sécurité de l'application en identifiant la relation de l'application à ses environnements et le niveau de la sécurité fourni par eux. Une architecture de sécurité accentue également le besoin, et la quantité, de sécurité indépendante qu'une application doit fournir, comme les dispositifs exigés.

Une analyse et un établissement globaux d'une architecture de sécurité sont faits par l'intermédiaire de la catégorisation par accroissement des modules, des composants, des interfaces et des méthodes employés dans l'application. Leur endroit et rapport entre eux et leur exposition aux applications externes, aux utilisateurs et aux interfaces sont les points importants.

Le point de vue global d'une application présente au commencement "la boîte noire proverbiale" que—les seuls détails connus sont ceux vus par des étrangers. Ces dispositifs externes et conditions fonctionnelles sont alors séparés dans des modules pour l'analyse des valeurs.

Recherchant des bulletins de renseignements de fournisseur, les newsgroup, les listes d'expédition, et les forum en ligne des vulnérabilités révélées dans la concurrence ou les applications semblables est une bonne manière de se renseigner sur certains des titres principaux liés à l'application. Elle aide également à préciser les solutions inefficaces aux vulnérabilités trouvées dans les applications semblables.

Étude de cas, Phase I

Cet exemple hypothétique est une étude de cas pour le développement d'une application de commerce d'Internet. Ce service permet à des utilisateurs de se relier de leurs navigateurs pour faire les achats en ligne.

Le premier niveau dans la conception de cette application est la définition de ses possibilités, indépendant des méthodes d'exécution employées. Ces dispositifs pourraient inclure ce qui suit :

· Le choix d'un logiciel d'exploitation approprié pour accueillir les applications

· Accès aux bases de données pour le stockage d'information privée et publique

· Portion de Web

· Connectivité de ces pièces en utilisant des applications conçues en fonction du client

· Connectivité aux institutions financières pour les transactions

Du point de vue global, un concepteur discerne les dispositifs de sécurité priés pour chaque composant de ces fonctions.

La base de données stocke l'information privée sur beaucoup de différents utilisateurs, y compris des mots de passe, des nombres de carte de degré de solvabilité, et l'information de contact. Afin de protéger cette information, la base de données devrait avoir des composants de sécurité qui soutiennent des restrictions aux objets et peut-être à leur chiffrage.

Le serveur de Web devrait soutenir des communications bloquées avec le protocole bloqué de la couche de douilles (SSL), et une certaine méthode de se connecter par interface aux applications externes et à la base de données. Ceci a pu être par l'intermédiaire des servlets et des applet de Java, ou des programmes de cgi.

Les communications de réseau sont une partie inhérente de ce système. Le logiciel de serveur de Web et de serveur de base de données fonctionnent probablement sur les machines séparées, par conséquent le moyen de fixer la communication de réseau entre elles est exigé.

Le dernier composant à considérer est le raccordement réel à l'organisation qui autorise les transactions. Ceci pourrait être une banque ou une compagnie de carte de degré de solvabilité qui autorise les dépenses par des utilisateurs. Des raccordements sont probablement accomplis avec un modem ou tout autre morceau d'équipement de télécommunications qui agit l'un sur l'autre avec l'organisation financière et effectue la validation. Ces raccordements exigent de la sécurité élevée, afin d'éviter l'accès par les utilisateurs non autorisés.

Ces perspicacités sont glanées de la connaissance du champ, de l'analyse des produits de concurrence, et de la connaissance des exigences de client. En ce moment, la recherche diligente doit être faite pour documenter des vulnérabilités passées et courantes de sécurité dans les produits connexes. La liste résultante devrait identifier les secteurs de risque qui ont besoin adresser. Des dispositifs de sécurité manquant de la liste initiale de conditions sont souvent identifiés par cette analyse, une autre de ses avantages.

Dans notre exemple de commerce d'Internet, les chercheurs ont trouvé les vulnérabilités suivantes dans les produits comparables :

· Les bases de données n'ont eu aucun arrangement de protection, ayant pour résultat l'exposition d'information de client privé.

· Le serveur de Web a eu les trous qui ont permis l'exécution du code arbitraire sur le système. La configuration du défaut du serveur a également permis l'annuaire traversal, qui permet aux utilisateurs externes d'accéder à beaucoup de dossiers et annuaires privés sur le système.

· Les applications de cgi communiquaient avec la base de données ont eu les vulnérabilités qui ont permis aux attaquants à distance de personnifier d'autres clients.

La recherche indique également que la protection de données, les débordements d'amortisseur, la configuration de défaut, et les issues de validation d'entrée doivent être évités parce que ces vulnérabilités se sont produites fréquemment avec les applications semblables. Elle a également prouvé que les fournisseurs ont ajouté les dispositifs et les pièces rapportées de sécurité qui se protégeront contre ces problèmes. Ceci fait l'authentification et le contrôle d'accès des conditions importantes, avec la sécurité de réseau.

En ce moment, le concepteur sait des vulnérabilités liées à l'application, aux méthodes par lesquelles d'autres organismes répondent à elles, et à un ensemble de dispositifs importants de sécurité qui forment la base d'une architecture de sécurité. L'architecture de sécurité se développe plus loin dans la phase suivante de la conception.

Le Point de vue D'organisation

La sécurité n'est pas une science exacte ; ses besoins sont spécifiques à chaque application et environnement. Par conséquent, il n'est pas suffisant de regarder la sécurité seulement de la vue globale. Bien qu'une application autrement bien projetée pourrait exister indépendamment de toutes autres applications sur le système, l'interaction de tous les composants du fait l'application pourrait constituer des menaces de sécurité. Le point de vue d'organisation identifie les différents éléments ou groupes d'éléments qui forment l'application entière, leurs fonctions, et leurs rapports avec l'un l'autre. Un élément pourrait être une fonction, une classe, un processus, ou un ensemble de ces éléments qui sont groupés par leur rapport avec l'application.

Une application est typiquement faite de plusieurs modules fonctionnels, tels que l'interface utilisateur, les composants de gestion de réseau ou de communication, ou les outils de stockage de données et de récupération.

Tandis qu'un module pourrait sembler raisonnablement bloqué, son rapport avec les autres composants pourrait être exécuté insecurely. Semblable à l'analyse des interactions de l'application, l'analyse de niveau d'organisation prend les conditions fonctionnelles et détermine l'architecture utilisée. Les conditions fonctionnelles permettent au concepteur d'identifier un ensemble de composants et de méthodes qui fournissent la fonctionnalité ; une analyse de la sécurité entre elles comme elles agissent l'un sur l'autre des rendements les choix les plus sûrs pour l'inclusion avec l'application.

L'identification, l'organisation, et la catégorisation par accroissement de chaque composant dans l'application continue dans cette phase. Un endroit logique à commencer—et particulièrement suspect en termes de sécurité—sont les bords d'un module. Les bords sont les points d'entrée ou de sortie où les données croisent les frontières entre les modules. Par exemple, les données croisent des frontières entre les modules pendant ces fonctions :

· Dépassement des données comme paramètres

· Réglage des variables globales

· Mémoire partagée manoeuvrante

· Données d'écriture aux dossiers

· Envoi des données à travers une voie de transmission telle que le réseau

· Réception de l'entrée d'utilisateur

Étude de cas, Phase II

Dans la phase d'organisation de concevoir l'application de commerce d'Internet témoin, chaque composant d'application—le serveur de Web, le serveur de base de données et les applications associées—est classé par catégorie dans son module fonctionnel pour davantage d'analyse.

Le serveur de base de données a un composant de stockage, un composant de contrôle d'accès d'authentification et, et un composant de communication. Le serveur de Web a le composant de portion de Web, un modèle de programmation externe, et les composants de communication de client et bloqués bloqués de base de données de communication. Les interactions entre ces composants forment un chemin définissable, avec plusieurs points où la sécurité doit être forte. Après une interaction entre le serveur de Web et le client, un navigateur de Web de client transmet des données sensibles au serveur de Web. Ces données sont alors passées à l'application faite sur commande qui agit l'un sur l'autre avec la base de données et l'institution financier. Après la circulation de données à travers l'application, un réalisateur peut observer des points de vulnérabilité dans la communication de client, l'interaction d'application de serveur de Web, la communication du serveur de Web à la base de données, et l'interaction entre elles.

Les conditions de sécurité commencent à se dessiner. L'application doit adresser ces secteurs de risque et fournir la sécurité sous ces formes :

· Fixez la communication au navigateur de Web de client sous forme de communication chiffrée de réseau, d'authentification des utilisateurs, et de mécanismes de contrôle d'accès sur leur information.

· Interaction sûre entre le navigateur de Web et l'application d'e-commerce pour assurer la sûreté du système

· Intégrité d'application du programme de commerce

· Fixez les communications avec la base de données

· Sécurité des objets de base de données

De ces conditions, une architecture commence à se dessiner. L'utilisation du SSL sur le serveur de Web protège les communications de server-to-navigateur. L'application aura son propre mécanisme d'authentification qui permet à des clients de signer dedans sans risque. Des mécanismes de validation et de protection de données seront également mis en application d'une mode organisée qui emploie seulement le privilège exigé minimum de fonctionner. La fonctionnalité sera incorporée à la demande de protection d'objet et au chiffrage sur le serveur de base de données. Les détails réels d'exécution seront développés dans la phase composante finale.

Les méthodes convenables de sécurité monteront sur la surface quand on pose les questions suivantes dans la phase d'organisation :

· Comment protégerons-nous l'information passée ?

· Quels sont les effets si un module passe de fausses données à l'autre ?

· Les contraintes des données ont-elles été définies ?

· Y a-t-il une méthode préférée de passer les données qui se prêtent à la sécurité accrue ?

· Quels composants, applications, et utilisateurs ont besoin de l'accès aux données ? Quel genre d'accès est inaltérable—exigé ou lu et écrit des possibilités ?

Le Point de vue Composant

Le point de vue final dont l'analyse de conception se produit est la dissection des différents composants dans une application. Les plus petits détails de conception et d'exécution peuvent présenter évident et les problèmes obscurs de sécurité il est difficile trouver que poteau-libèrent. L'exécution faible peut également défaire l'effort mis dans la sécurité d'une conception.

Certaines des précautions ont suggéré ici la chute dans ce qui sont considérés de bonnes pratiques en matière de codage et ne sont pas nécessairement détail de sécurité, mais elles ont un effet sur la sécurité d'une application.

L'architecture de sécurité qui est définie pour une application exigera qu'il y ait des séries de contrôles et d'équilibres auxquels l'application doit se conformer. Ces contrôles et équilibres fourniront un degré élevé d'assurance qui une application agit d'une façon uniforme en cas des données ou de l'information inattendues.

La vue composante examine chaque morceau qui forme un module. (les modules, à leur tour, forment l'application.) Ces composants devraient être analysés leurs différents dispositifs de sécurité et les interactions avec d'autres composants dans ce module. Points de départ quand les issues selon les programmes examinantes dans un module sont

· Valeurs de retour

· Priorité et choses nécessaires

· Validation de données

· Réponse et rétablissement identifiés

· Permissions et privilège

Les valeurs de retour sont des indicateurs de succès ou d'échec dans une fonction. Des composants d'un module individuel sont faits de fonctions, que l'interoperate et ont établi les rapports qui permettent au programme d'exécuter correctement. Les lotisseurs devraient également comprendre ce que signifie quand une fonction échoue, et devrait il réagir convenablement à cet échec. Un arrangement complet de ces rapports permet à un lotisseur de comprendre les dépendances entre les fonctionnalités. Basé sur ces dépendances, des composants dans un module peuvent être organisés pour augmenter la fiabilité et la sécurité.

Les données sont dynamiques dans n'importe quelle application qu'—elles voyagent entre les fonctions et les modules, et aux applications séparées, changeant l'exécution de l'application initiale comme le font cela elles. Avec l'identification des modules qui forment une application, et les composants qui forment plus tard ces modules, le chemin des données par une application entière peut être tracé. Les points d'entrée entre les modules et les fonctions sont les éléments pivotaux qui affectent le succès ou l'échec de l'application, donc valider des données à ces points est essentiel. Travailler de pair avec la validation est une réponse définie aux données inadmissibles et aux conditions anormales. Beaucoup d'applications ne formulent pas un mécanisme de rétablissement en cas des événements inattendus ; ceci a souvent comme conséquence les applications instables qui se brisent au signe le plus tôt des données imparfaites.

La connaissance des permissions et des privilèges exigés pour les composants pour fonctionner fournit des informations importantes pour les concepteurs d'applications. Après le modèle de moindre privilège est une bonne pratique en matière de conception ; elle recommande l'isolement et la limitation du privilège dans une application courante. Dans la plupart des cas, des niveaux élevés de privilège sont nécessaires très rarement et seulement dans des exemples d'isolement. Beaucoup d'applications qui exigent des privilèges élevés pour une petite partie de fonctionnalité investissent l'application entière dans ce niveau plus élevé de privilège pour son existence entière. Ceci crée un environnement dangereux où chaque vulnérabilité qui est trouvée existe en ce mode privilégié.

Le privilège se réfère principalement aux multiples niveaux de l'autorité sur un logiciel d'exploitation. À chaque niveau plus élevé de privilège, les utilisateurs autorisés ont accès progressivement à plus de ressources dans les le système, tel que la mémoire, les autres applications, les dispositifs câblés, et les données. L'utilisateur de racine dans UNIX, l'administrateur, et le compte spécial de SYSTÈME dans Windows exemplifient le niveau le plus élevé du privilège. Il y a souvent de divers degrés d'accès qui fournissent le contrôle d'accès granulaire, également. Le contrôle d'accès granulaire permet des méthodes définissables d'accès et de rejet pour l'application. Des dossiers, le trafic de réseau, les utilisateurs, et les objets peuvent être liés à un ensemble de permissions explicites qui permettent ou rejettent l'accès à elles.

Étude de cas, Phase III

L'analyse composante de phase de notre application de commerce d'Internet regarde les différents composants utilisés dans l'application et leur sécurité. Écrivant cette étape, les concepteurs devraient avoir un sens de la circulation de données complète et les rapports entre les modules. La prochaine étape granulaire établit la base pour l'exécution de l'application. Les buts de cette analyse sont de déterminer les privilèges des divers composants, un sens d'organisation qui sera employé pendant l'exécution, et la connaissance de la façon dont l'exécution se produira. Ici, des conditions précédemment déterminées sont traduites en méthodes détaillées d'exécution.

Les concepteurs choisissent un serveur de Web et un serveur de base de données en ce moment, basé sur les conditions établies. Dans notre exemple, un serveur de Web d'Apache a été choisi parce qu'il peut être fait pour soutenir des communications de SSL et a une méthode bien documentée à agir l'un sur l'autre avec des applications externes. Un serveur de base de données d'oracle a été choisi parce qu'il fournit la flexibilité, le scalability, et la sécurité exigée dans la base de données, et aussi parce qu'elle soutient l'interaction Java-basée. Java a été choisi comme langue et prolongation pour mettre en application le logiciel réel de commerce d'Internet parce qu'il fonctionne avec les serveurs de Web et de base de données et soutient un modèle fort et configurable de sécurité.

Le serveur de Web et le serveur de base de données sont alors conçus en déterminant les méthodes les plus bloquées pour les composants suivants :

· Configuration de défaut de serveur

· Configuration de sécurité du logiciel d'exploitation fondamental

· Privilèges requis à l'interoperate avec les applications de Java

· Composants de contrôle d'accès

Le logiciel de commerce est organisé pour fournir ces composants :

· Conditions de privilège d'exécuter ses fonctions

· Les points d'entrée d'interaction et de communication de serveur de Web

· Méthodes de contrôle d'accès d'authentification et d'utilisateur

· Méthodes de sécurité de session pour empêcher la personnification des utilisateurs

· Les points d'entrée d'interaction et de communication de serveur de base de données

Basé sur ces analyse et organisation, on le détermine que la seule partie du système qui exige des privilèges élevés de logiciel d'exploitation est l'application de commerce. Il a besoin également d'un ensemble interne de niveaux de privilège pour imposer le contrôle d'accès et l'authentification d'utilisateur. Les configurations de défaut permettent seulement la fonctionnalité requise pour l'opération du système, et chaque logiciel d'exploitation sécurité-est durci avec la même approche de minimaliste.

L'application de commerce est où la majorité des composants de sécurité existent. Elle a la responsabilité de valider des qualifications d'utilisateur, plaçant des permissions sur la base de données objecte, maintenant chaque session d'utilisateur, et faisant exiger l'intelligence réelle pour garder le fonctionnement de système.

L'application de commerce a besoin de privilèges élevés seulement en commandant le démarrage et l'arrêt de serveur de Web et de base de données. La méthode la plus bloquée pour effectuer ces actions est déterminée pour être un processus séparé de contrôleur qui augmente ses privilèges alors qu'elle effectue une action de démarrage ou d'arrêt ; elle abandonne alors ses privilèges jusqu'à la prochaine demande. Le processus de contrôleur communique seulement avec l'application de commerce et emploie les messages authentifiés pour lancer le démarrage ou l'arrêt du système.

L'application de commerce chiffrera également l'information privée avant de la stocker dans la base de données afin de protéger des qualifications d'utilisateur et l'information financière. En cas des conditions anormales et d'erreur telles que des données d'entrée inadmissibles, des échecs d'authentification d'utilisateur, et des communications échouées, la conception réclame un système de reportage qui peut noter cette information et répondre convenablement aux événements.

L'exécution de système monte naturellement de l'analyse continue fournie dans les phases d'analyse globales, d'organisation, et composantes précédentes. Les réalisateurs emploient les guides et les procédures en place pour les aider à écrire le code qui maintient le niveau élevé de sécurité établi.

c'est un article supplémentaire par Tamas Querolin


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions