FAQ SécuritéConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 34, dernière mise à jour : 6 mai 2014  Ajouter une question

 

Cette faq a été réalisée pour répondre aux questions les plus fréquemment au sujet de la sécurité au sens large, que ce soit sécurité des développements ou des systèmes.

Je tiens à souligner que cette faq ne garantit pas que les informations qu'elle contient sont correctes. Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir redacteur n'hésitez pas à contacter les responsables de la rubrique sécurité.

Sur ce, je vous souhaite une bonne lecture de cette foire aux questions.


SommaireSécurité et développement (7)
précédent sommaire suivant
 

Une attaque par injection SQL consiste à détourner les contrôles faits sur un formulaire d'identification en ajoutant des commandes SQL via les zones de saisie. Ces instructions SQL ont pour but de modifier le fonctionnement de la requête qui sera effectuée pour vérifier l'identification du visiteur.

Par exemple (en php), sur un formulaire où on saisit un login et un mot de passe la vérification se fait souvent avec une requête du type :

Code sql : Sélectionner tout
'SELECT * FROM users WHERE login="'.$login.'" AND password="'.md5($pass).'"'
Si dans la zonne de saisie login on met :

Code sql : Sélectionner tout
"admin" and 1=1 //
Le requête devient

Code sql : Sélectionner tout
SELECT * FROM users WHERE login="admin" and 1=1 //" AND password=md5($pass)
La connexion avec le login admin est alors accordée car au final la requête exécutée est :

Code sql : Sélectionner tout
SELECT * FROM users WHERE login="admin" and 1=1
La solution est de désactiver les caractères de mise en commentaire et d'ouverture / fermeture de chaine de caractères. En PHP on utilisera les fonctions magic_quotes et stripslashes

Mis à jour le 2 mai 2006 kbumbaz

Le Cross-site scripting ne vise pas directement un site mais un internaute via les failles de sécurité d'un site. Le principe est de trouver un site qui présente la faille de sécurité adéquate. Pour cela, on essaie de demander une page inexistante sur un site en ajoutant dans l'URL des balises HTML de mise en forme. On voit ensuite si ces balises HTML placées dans l'URL sont interprétées dans la réponse du serveur. Si c'est le cas le serveur visé présente la faille de sécurité désirée.

Le pirate, une fois qu'il a repéré le site cible, envoie un mail à ses victimes. Le mail rédigé en HTML inclura un lien avec du code HTML qui sera interprété par le serveur lors de la tentative d'ouverture de page. Ce qui est gênant, c'est que le code HTML ajouté dans l'URL peut contenir du JavaScript. Le pirate peut donc récupérer des informations sur le PC de sa victime.

La solution est de sécuriser le serveur en s'assurant que les URL qu'il traitera seront débarrassées des balises html. Par exemple en remplaçant systématiquement les caractères < et > par < et > on continue à les afficher mais sans aucune chance que des balises HTML ne soient interprétées comme telles.

Mis à jour le 2 mai 2006 kbumbaz

Un "spyware" comme l'indique son nom est un "logiciel espion". A la différence d'un virus son but premier n'est pas de mettre hors d'état de fonctionnement ou d'endommager une machine et ses logiciels, mais de récolter des données et diverses informations sur les utilisateurs d'un ordinateur. La finalité de la collecte de données est généralement marketing, ou même statistique, mais parfois elle peut aussi être beaucoup plus malveillante, en essayant par exemple de récupérer des informations beaucoup plus sensibles comme des numéros de compte, de cartes bancaires ou encore des identifiants et des mots de passe.

Les "spywares" se focalisent généralement sur l'analyse et la récupération des informations de connexion aux sites internet (pages visitées, nombres de connexion, mots clés recherchés...) ou encore sur la récupération de tout ou partie de ce qui est saisi sur la clavier par l'utilisateur.

Ces "spywares" ou "logiciels espions" s'installent toujours avec le maximum de discrétion, le but étant que l'utilisateur ne connaisse pas réellement leurs existences. En effet, plus celui-ci sera "furtif" plus il sera efficace et aura la possibilité de fonctionner longtemps.

Pour se débarrasser de ces "spywares" il existe de nombreux logiciels (gratuits ou payants) dédiés à cette tâche, les antivirus eux mêmes offrent désormais quasiment tous un module anti-spyware.

Mis à jour le 2 mai 2006 Webman

Tout d'abord on parle généralement d'une "faille de sécurité" mais aussi de "vulnérabilité", les deux termes sont employés sans distinction. Il s'agît d'un "bug" (bogue en français) dans un logiciel, dont l'exploitation par des personnes généralement malveillantes va permettre d'effectuer des opérations non-conformes, ou du moins dont la réalisation ne devrait pas être possible dans le cadre d'une utilisation normale du logiciel.

On utilise le terme de "faille de sécurité", car ces bogues peuvent potentiellement mettre en danger la sécurité du logiciel, de la machine et des données qu'elle contient. En effet, l'exploitation de ces failles va permettre à des utilisateurs malveillants d'exécuter des opérations qu'ils ne devraient pourtant pas avoir la possibilité de réaliser, comme par exemple : exécuter du code malicieux à distance, augmenter ses droits utilisateurs, effacer ou corrompre des données... Ces failles sont exploitées principalement de deux manières : manuellement, ou automatiquement par le biais de programme dédiés comme des virus, des vers ou encore des spywares.

Une faille de sécurité est généralement corrigée par l'application d'un correctif logiciel (ou patch) qui va remplacer le ou les fichiers contenant le code comportant la vulnérabilité.

Mis à jour le 2 mai 2006 Webman

On distinguera les attaques visant les postes "clients" et les attaques visant les serveurs.

Dans la première catégorie, on trouve majoritairement des exploitations de failles de sécurité visant à prendre le contrôle du poste visé. On se souvient d'alertes de sécurité Microsoft concernant des failles de sécurité sur tel ou tel format d'image. On trouve aussi l'exploitation de failles de sécurisation d'accès au réseau. Des vers profitent de ports ouverts pour investir un PC, dans ce cas, le simple fait d'être connecté sur internet sans firewall suffit.

Dans la seconde catégorie, on trouve un large panel d'attaques dont beaucoup visent à stopper le service offert. Les attaques les plus repandues sont de type DoS / DDoS / synflood. Ces attaques consistent à envoyer au serveur une grande quantité de requêtes http, de demandes de connexions ou d'informations afin de dépasser sa capacité de traitement. Le serveur en surcharge finit par ne plus pouvoir répondre du tout.

La différence entre DoS et DDoS et que le second (Distributed Deny of Service) met en oeuvre plusieurs machines lors de l'attaque. Le synflood lui simule des demandes de connexions TCP, c'est la gestion du réseau qui est visée, rendant impossible les nouvelles connexions une fois que l'attaque a porté ses fruits.

L'IP spoofing consiste à usurper une adresse IP. Dans le cas d'un site exploitant plusieurs serveurs, il y a souvent des liens privilégiés entre ces derniers. Les procédure d'identification sont allégées entre eux. Le pirate cherche alors à se faire passer pour une de ses machines aux accès privilégiés. Cette technique est devenue légendaire par l'utilisation qu'en a fait Kevin Mitnick en 1995 contre le Supercomputer Center de San Diego.

Le MailBombing consiste, comme son nom le laisse bien entendre, à remplir une boite mail avec le plus de mails possible. Le résultat est qu'au bout d'un moment la boite sature et n'accepte plus de mails, mais aussi qu'au moment de récupérer ses mails l'utilisateur peut y passer énormément de temps.

Le portscan n'est pas à proprement parler une attaque. Il est effectué dans le but de repérer les ports ouverts sur la cible d'une future attaque. Le résultat du portscan peut mettre en évidence la présence de failles de sécurité qui pourront être exploitées par le pirate.

Les sniffers sont des dispositifs captant tous les paquets de données transitant sur le réseau. Ils permettent l'analyse des données qui transitent sur celui-ci. Ils peuvent eux aussi servir à révéler la présence de failles de sécurité. Leur portée est réduite par le fait qu'ils doivent être positionnés sur le même sous réseau que les dispositifs qu'ils doivent "surveiller".

Mis à jour le 2 mai 2006 kbumbaz

D'abord : qu'est-ce que le stack ? C'est une partie de la mémoire gérée en FILO : First IN Last Out. Il s'agit donc d'une "pile" dont les premiers éléments entrés en seront sortis en dernier. Cette gestion de pile est particulièrement utilisée dans le cadre d'appels de sous programmes et d'utilisation de fonctions récursives.

L'overflow survient quand on essaie de copier un bloc de données trop volumineux pour l'espace de destination. Il peut en résulter un écrasement de données et, dans certains cas, l'exploitation d'une faille de sécurité.

Mis à jour le 2 mai 2006 kbumbaz

Même s'il s'agit d'un sujet heureusement devenu à la mode, les tenants et aboutissants sont toujours les mêmes depuis longtemps. Une application sécurisée n'est rien d'autre qu'une application qui fonctionne sans mettre en péril son environnement et qui le cas échéant peut 'protéger' ses données.
Le développement d'une application sécurisée ne devrait pas tellement différer du développement classique si on ne se heurtait pas aux deux véritables problèmes du développement :

  • Un développeur pense toujours que son code est fiable.
  • On sous-estime toujours le risque.

Fondamentalement une application ne doit pas permettre :

  • L'injection de code.
  • L'élévation de privilèges.
  • La récupération ou la modification de données sensibles.

Enfin il existe quelques fausses idées qui contribuent largement à la faiblesse des applications

  • Certains langages sont sécurisés.
  • Les données contenues dans un exécutable compilé ne sont pas vulnérables.
  • Une application peut être sécurisée de façon autonome.

Dès lors qu'on a les idées claires sur ces points, on peut procéder à un développement dit sécurisé, c'est-à-dire à un développement architecturé autour du couple menace protection.
On trouve maintenant des outils et des documentations assez bien fait autour de la modélisation des menaces, des techniques de protection, etc...
Rappelons ici la base d'un développement sécurisé qui est d'ailleurs la base d'un développement tout court :

Le code ne contient jamais de données sensibles
Les mots de passe, clef de chiffrement, chaîne de connexion, identifiant de compte, etc ne doivent pas être codés en dur.

Les données entrantes sont validées ou jugées fiables selon un processus non falsifiable.
C'est le B-A BA développement. La validation d'une donnée entrante ne peut se limiter au simple typage de la donnée. Un nom de famille acceptant des caractères d'échappement ou des chiffres par exemple n'est pas validé correctement. Les données jugées fiables ne peuvent l'être que si le processus d'authentification est lui-même fiable.

L'utilisation de ressources externes nécessaires au fonctionnement demande un compte adapté.
Ce n'est jamais à l'application de s'accorder des privilèges.

La complexité du code est à proscrire, un code illisible n'est pas sécurisable.

Une application doit se terminer proprement en cas d'erreur.

Mis à jour le 11 mai 2006 bidou

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2018 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique Sécurité