Archive:Fr FR/Securité/Classification

== Définition d'un risque de sécurité ==

Un problème de sécurité est une classe de bogues qui peuvent permettre à un attaquant d'empêcher l'accès à un ou plusieurs services, ou, par la découverte d'une vulnérabilité permettant l'exécution de code arbitraire sur la machine cible. Les questions de sécurité représentent un risque important pour les utilisateurs car ils peuvent être utilisés par les virus et les vers de se propager entre les ordinateurs. Les principaux risques liés à la sécurité peuvent être décomposés en plusieurs types, parmis lesquels les plus courants sont les DoS (dénis de service), et l'exécution de code arbitraire.

Les Dénis de Service (DoS)
Un déni de service (DoS) consiste à empêcher un ou plusieurs utilisateurs d'accéder à une ressource (page web, serveur ftp, protocole de transaction bancaire, etc.). Le but principal est de surcharger une ressource pour faire planter le service, ou bien saturer un lien en demandant plus de ressources (RAM, CPU, disque, réseau), que le service/serveur dispose. Ainsi submergé d'informations, il crée une queue de traitement des informations. Lorsque cette queue est pleine, le serveur refusera simplement toute nouvelle demande arrivante, empêchant les utilisateurs d'accéder au service. Ces attaques existent réellement et profitent d'incohérences ou de faiblesses présentes dans des programmes et/ou des protocoles réseau.

Exemples de dénis de service

 * Envoi de paquets forgés à un serveur qui provoque son crash
 * Envoi d'un email forgé pour faire planter le client email
 * Création d'une page Web forgé pour faire planter le navigateur web

Exécution de code arbitraire
L'impact d'une exécution de code arbitraire est considéré comme beaucoup plus néfaste que celui d'un Déni de Service. Là où le déni de service vise à faire planter l'application ou le service visé, l'exécution de code permettra à un utilisateur malveillant d'élever ses privilèges pour, par exemple, devenir root sur la machine victime, ou bien permettre la propagation de vers ou virus. L'exécution de code arbitraire provient qu'une exécution de code normale se veut déterministe. L'exécution de code arbitraire devient possible dès que l'utilisateur qui interagit avec le programme fournit des informations dont le traitement n'est pas prévu dans le comportement normal du programme. Le programme sortira alors de son fonctionnement normal, que l'utilisateur malveillant utilisera à son avantage.

Exécution de code distant
Dès lors qu'un ordinateur se connecte à un réseau, un attaquant va chercher à accéder à un service vulnérable sur cette ordinateur pour y accéder. Il peut se situer à côté comme à l'autre bout du monde, et ne cherche pas forcément à avoir une session ouverte sur le poste: un exemple révélateur de ce comportement est la présence de vers sur une machine. Le but pouvant être de devenir totalement maître d'un machine visée, ou bien chercher à en contrôler un maximum.

Exécution de code local
Lorsqu'un attaquant possède une session ouverte sur une machine (connexion physique, par SSH, telnet, etc.), celui-ci peut être restreint en droit. Il cherchera donc à élever ses privilèges et pour cela profiter de faille dans les programmes exécutées par la machine (recherche des programmes lancés avec les droits root, par exemple). Il exploitera alors cette faille dans la programmation du programme / du protocole pour exécuter un code lui donnant un niveau d'accès supérieur à la machine (ouverture d'un port, création d'un utilisateur, ouverture d'un terminal avec les droits root, etc.).

Ce risque provient le plus souvent de l'implémentation des programmes. Ce risque, communément appelé faille de sécurité, ou vulnérabilité, permettra alors à un attaquant d'exécuter son propre code.