# 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 :
* la politique de sécurité du système d'information (PSSI)
* la base documentaire du SI
* réglementations propre à l'entreprise
* textes de loi
* documents de référence dans le domaine de la sécurité informatique

## Pourquoi un audit de sécurité ?

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 :
* Le directeur des systèmes d'information (DSI)
* Le ou les responsable(s) de la sécurité des systèmes d'information (RSSI)
* Les administrateurs
* Les utilisateurs du système d'information, qu'ils aient un rôle dans la production de l'entreprise, dans la gestion, ou la simple utilisation des moyens informatiques
* Tout autre rôle ayant un lien avec la sécurité
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$^,$, et à des ensembles de failles connues$^,$.
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. 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'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).
* Norme ISO 27000 : est une norme internationale destinée à la sécurité informatique. Elle représente une famille complète de normes en cours d'élaboration.
* COBIT (Control objectives for information and technology ISACA) : propose un référentiel pour les systèmes d'information,

## 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 :
* EBIOS (Expression des Besoins et Identification des Objectifs de Sécurité), méthode qui conduit à rédiger une FEROS (Fiche d'Expression Rationnelle des Objectifs de Sécurité).
* MARION (Méthode d'analyse de risques informatiques optimisée par niveau).
* MEHARI (Méthode harmonisée d'analyse des risques) intégrant les recommandations de l'ISO 27001, 27002, 27005 et comprenant une étape d'audit des mesures de sécurité .
Sources : Le Journal du Net, article du 15/04/2005