Audit de sécurité

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é ?

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

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

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

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 ;
  • Écoute 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 la recherche des ports ouverts, la version des applications, etc.

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.

Des tests d'intrusion « Red Team » peuvent également être mis en place. Il s'agit de faire une simulation grandeur nature d'une attaque qui pourrait être menée par un groupe ou des individus malveillants. Le périmètre d'attaque n'est pas défini, et plusieurs techniques aussi bien informatiques que d’ingénierie sociale, voir d'intrusion physique peuvent être utilisées dans ce type de test.

Les relevés de configuration

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. À la suite de 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], et à des ensembles de failles connues[3],[4].

Tout peut être inspecté, allant de l'architecture réseau du SI aux systèmes et aux applications. Par exemple sur un serveur, les points suivants sont analysés :

  • le chargeur de démarrage ;
  • les mécanismes d'authentification (robustesse des mots de passe, utilisation d'authentification forte, etc.) ;
  • le système de fichiers (permissions, utilisation de chiffrement etc.) ;
  • les services ;
  • la journalisation ;
  • la configuration réseau ;
  • les comptes présents ;
  • etc.

L'audit de 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[5]. Mais se reposer uniquement sur ce genre de méthodes peut faire passer à côté de problèmes flagrants pour un humain.

Fuzzing

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

Référentiels

L'analyse de risques

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

Annexes

Articles connexes

Références

  • Portail de la sécurité informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.