Audit de sécurité

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

L'audit de sécurité d'un système d'information (SI) est une vue à un instant T de tout ou partie du SI, permettant de comparer l'état du SI à un référentiel.

L'audit répertorie les points forts, et surtout les points faibles (vulnérabilités) de tout ou partie du système. L'auditeur dresse également une série de recommandations pour supprimer les vulnérabilités découvertes. L'audit est généralement réalisé conjointement à une analyse de risques, et par rapport au référentiel. Le référentiel est généralement constitué de :

Pourquoi un audit de sécurité ?[modifier | modifier le code]

Roue de Deming

L'audit peut être effectué dans différents buts :

  • réagir à une attaque
  • se faire une bonne idée du niveau de sécurité du SI
  • tester la mise en place effective de la PSSI
  • tester un nouvel équipement
  • évaluer l'évolution de la sécurité (implique un audit périodique)

Dans tous les cas, il a pour but de vérifier la sécurité. Dans le cycle de sécurisation, la vérification intervient après la réalisation d'une action. Par exemple, lors de la mise en place d'un nouveau composant dans le SI, il est bon de tester sa sécurité après avoir intégré le composant dans un environnement de test, et avant sa mise en œuvre effective. La roue de Deming illustre ce principe.

Le résultat est le rapport d'audit. Celui-ci contient la liste exhaustive des vulnérabilités recensées par l'auditeur sur le système analysé. Il contient également une liste de recommandations permettant de supprimer les vulnérabilités trouvées.

L'audit ne doit pas être confondu avec l'analyse de risques. Il ne permet que de trouver les vulnérabilités, mais pas de déterminer si celles-ci sont tolérables. Au contraire, l'analyse de risque permet de dire quels risques sont pris en compte, ou acceptés pour le SI. L'auditeur (le prestataire) dresse donc des recommandations, que l'audité (le client) suivra, ou ne suivra pas. Le client déterminera s'il suivra les recommandations ou non, en se référant à la politique de sécurité.

Pratique de l'audit[modifier | modifier le code]

Pour arriver à dresser une liste la plus exhaustive possible des vulnérabilités d'un système, différentes pratiques existent et sont traditionnellement mises en œuvre.

Interviews[modifier | modifier le code]

Les interviews sont généralement essentiels à tout audit. Dans le cas où l'organisation du SI est analysée, ils sont même indispensables. Toutes les personnes ayant un rôle à jouer dans la sécurité du SI sont à interroger :

Il est important de formuler les questions avec tact. En effet, interroger des personnes à propos de leur travail peut faire qu'elles se sentent jugées et les résultats peuvent être faussés. La diplomatie est donc une compétence essentielle pour la pratique des audits !

Les tests d'intrusion[modifier | modifier le code]

Article détaillé : Test d'intrusion.

Les tests d'intrusion sont une pratique d'audit technique. On peut diviser les tests d'intrusion en trois catégories principales : les tests boîte blanche, les tests boîte grise et les tests dits boîte noire.

Un test boîte noire signifie que la personne effectuant le test se situe dans des conditions réelles d'une intrusion : le test est effectué de l'extérieur, et l'auditeur dispose d'un minimum d'informations sur le système d'information. Ce genre de tests débute donc par l'identification de la cible :

  • Collecte d'informations publiques : pages web, informations sur les employés, entreprise ayant un lien de confiance avec la cible.
  • Identification des points de présence sur internet.
  • Ecoute du réseau.

Lors de la réalisation de tests boîte grise, l'auditeur dispose de quelques informations concernant le système audité. En général, on lui fournit un compte utilisateur. Ceci lui permet de se placer dans la peau d'un "utilisateur normal".

Les tests boîte blanche débutent avec toutes ces informations (et beaucoup plus) à disposition. Ensuite commence la recherche des vulnérabilités, à l'aide de différents tests techniques, comme par exemple la recherche des ports ouverts, la version des applications... Différents produits existent pour effectuer ces tests, et certains prévoient d'automatiser toute une batterie de tests (Nessus, LANguard...).

La dernière phase est l'exploitation des vulnérabilités. Des effets indésirables pouvant survenir (déni de service par exemple), le côté pratique de cette phase n'est pas systématique. Elle consiste à déterminer les moyens à mettre en œuvre pour compromettre le système à l'aide des vulnérabilités découvertes. Selon les moyens à mettre en œuvre, le client pourra décider que le risque associé à la vulnérabilité décelée est négligeable (probabilité d'exploitation faible) ou au contraire à prendre en compte. Pour prouver la faisabilité de l'exploitation, les auditeurs créent des programmes qui exploitent la vulnérabilité, appelés exploits.

Les relevés de configuration[modifier | modifier le code]

Il s'agit ici d'analyser, profondément, les composants du système d'information. Les configurations sont inspectées dans les moindres détails. Suite à cette observation, la liste des vulnérabilités est dégagée en comparant le relevé à des configurations réputées sécurisées[1],[2],[3], et à des ensembles de failles connues[4],[5].

Tout peut être inspecté, allant de l'architecture du SI aux applications, en passant par les hôtes (clients et serveurs). Par exemple sur un serveur, on va analyser :

  • le chargeur de démarrage,
  • les mécanismes d'authentification (robustesse des mots de passe, utilisation d'authentification forte...),
  • le système de fichiers (droits d'accès, utilisation de chiffrement...),
  • les services
  • la journalisation,
  • la configuration réseau,
  • ...

L'audit de code[modifier | modifier le code]

Il existe des bases de vulnérabilités très fiables pour les applications répandues. Néanmoins, pour des applications moins utilisées, ou codées par l'entreprise elle-même, il peut être nécessaire d'analyser leur sécurité. Si les sources de l'application sont disponibles, il faut lire et comprendre le code source, pour déceler les problèmes qui peuvent exister. Notamment, les dépassements de tampon (buffer overflow), les bugs de format, ou pour une application web, les vulnérabilités menant à des injections SQL...

L'audit de code est une pratique très fastidieuse et longue. De plus, elle ne permet généralement pas, en raison de la complexité, de dresser une liste exhaustive des vulnérabilités du code. Des méthodes automatiques existent, et permettent de dégrossir le travail, avec des outils comme RATS[6]. Mais se reposer uniquement sur ce genre de méthodes peut nous faire passer à côté de problèmes flagrants pour un humain.

Fuzzing[modifier | modifier le code]

Pour les applications boite noire, où le code n'est pas disponible, il existe un pendant à l'analyse de code, qui est le fuzzing. Cette technique consiste à analyser le comportement d'une application en injectant en entrée des données plus ou moins aléatoires, avec des valeurs limites. Contrairement à l'audit de code qui est une analyse structurelle, le fuzzing est une analyse comportementale d'une application.

Outils d'audit[modifier | modifier le code]

Référentiels[modifier | modifier le code]

  • COBIT (Control objectives for information and technology ISACA) : propose un référentiel pour les systèmes d'information,
  • L'Agence Nationale de la Sécurité des Systèmes d'Information (ANSSI) est la référence française en matière de SSI, et a produit notamment un référentiel général de sécurité (normes et recommandations).

L'analyse de risques[modifier | modifier le code]

Sans l'analyse de risques, l'utilité d'un audit est limitée. Les méthodes les plus utilisées pour réaliser cette analyse (qui n'est pas l'objet de l'audit) sont :

Sources : Le Journal du Net,article du 15/04/2005

Références[modifier | modifier le code]