Le Top 25 des erreurs de programmation les plus dangereuses
D'après SANS et MITRE
Le 2010-02-16 21:57:42, par Katleen Erna, Expert éminent sénior
Le Top 25 des erreurs de programmation les plus dangereuses, d'après SANS et MITRE
L'institut SANS, spécialisé dans la sécurité informatique des ordinateurs et des réseaux, accompagné de la corporation MITRE qui se définit comme une organisation non lucrative d'utilité nationale, agissant pour l'intérêt des citoyens américains dans la protection des ressources informatiques du pays ; vient de publier son Top 25 des erreurs de programmation les plus dangereuses de l'année.
Cette liste a été établie avec le concours des deux groupes, mais aussi grâce à la collaboration d'experts en sécurité informatique de toutes nationalités, et de diverses firmes.
Ce top répertorie les erreurs de programmation les plus critiques et les plus courantes qui peuvent rendre un programme vulnérable. Elles sont généralement faciles à repèrer et à exploiter.
Voici ce Top 25, les codes associés aux erreurs correspondent à leurs identifiants dans la base de données CWE de la MITRE (qui recence leur virulence, leur nature, leur fonctionnement, etc.) :
Programming Error Category: Insecure Interaction Between Components
[1] CWE-79: Failure to Preserve Web Page Structure ('Cross-site Scripting')
[2] CWE-89: Failure to Preserve SQL Query Structure (aka 'SQL Injection')
[4] CWE-352: Cross-Site Request Forgery (CSRF)
[8] CWE-434: Unrestricted Upload of File with Dangerous Type
[9] CWE-78: Failure to Preserve OS Command Structure (aka 'OS Command Injection')
[17] CWE-209: Information Exposure Through an Error Message
[23] CWE-601: URL Redirection to Untrusted Site ('Open Redirect')
[25] CWE-362: Race Condition
Programming Error Category: Risky Resource Management
[3] CWE-120: Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
[7] CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
[14] CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program ('PHP File Inclusion')
[12] CWE-805: Buffer Access with Incorrect Length Value
[13] CWE-754: Improper Check for Unusual or Exceptional Conditions
[15] CWE-129: Improper Validation of Array Index
[16] CWE-190: Integer Overflow or Wraparound
[18] CWE-131: Incorrect Calculation of Buffer Size
[20] CWE-494: Download of Code Without Integrity Check
[21] CWE-770: Allocation of Resources Without Limits or Throttling
Programming Error Category: Porous Defenses
[5] CWE-285: Improper Access Control (Authorization)
[6] CWE-807: Reliance on Untrusted Inputs in a Security Decision
[10] CWE-311: Missing Encryption of Sensitive Data
[11] CWE-798: Use of Hard-coded Credentials
[19] CWE-306: Missing Authentication for Critical Function
[22] CWE-732: Incorrect Permission Assignment for Critical Resource
[24] CWE-327: Use of a Broken or Risky Cryptographic Algorithm
Certaines de ses erreurs vous sont-elles familières ? Les avez-vous déjà vues ou commises ?
Comment se protèger contre ces dangers ?
Dans ce Top, quelle erreur vous parait la plus fréquente ? Laquelle vous parait la plus critique et dangereuse ?
Source : Le Top 25 publié par SANS (avec détails et explications en anglais)
L'institut SANS, spécialisé dans la sécurité informatique des ordinateurs et des réseaux, accompagné de la corporation MITRE qui se définit comme une organisation non lucrative d'utilité nationale, agissant pour l'intérêt des citoyens américains dans la protection des ressources informatiques du pays ; vient de publier son Top 25 des erreurs de programmation les plus dangereuses de l'année.
Cette liste a été établie avec le concours des deux groupes, mais aussi grâce à la collaboration d'experts en sécurité informatique de toutes nationalités, et de diverses firmes.
Ce top répertorie les erreurs de programmation les plus critiques et les plus courantes qui peuvent rendre un programme vulnérable. Elles sont généralement faciles à repèrer et à exploiter.
Voici ce Top 25, les codes associés aux erreurs correspondent à leurs identifiants dans la base de données CWE de la MITRE (qui recence leur virulence, leur nature, leur fonctionnement, etc.) :
Programming Error Category: Insecure Interaction Between Components
[1] CWE-79: Failure to Preserve Web Page Structure ('Cross-site Scripting')
[2] CWE-89: Failure to Preserve SQL Query Structure (aka 'SQL Injection')
[4] CWE-352: Cross-Site Request Forgery (CSRF)
[8] CWE-434: Unrestricted Upload of File with Dangerous Type
[9] CWE-78: Failure to Preserve OS Command Structure (aka 'OS Command Injection')
[17] CWE-209: Information Exposure Through an Error Message
[23] CWE-601: URL Redirection to Untrusted Site ('Open Redirect')
[25] CWE-362: Race Condition
Programming Error Category: Risky Resource Management
[3] CWE-120: Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
[7] CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
[14] CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program ('PHP File Inclusion')
[12] CWE-805: Buffer Access with Incorrect Length Value
[13] CWE-754: Improper Check for Unusual or Exceptional Conditions
[15] CWE-129: Improper Validation of Array Index
[16] CWE-190: Integer Overflow or Wraparound
[18] CWE-131: Incorrect Calculation of Buffer Size
[20] CWE-494: Download of Code Without Integrity Check
[21] CWE-770: Allocation of Resources Without Limits or Throttling
Programming Error Category: Porous Defenses
[5] CWE-285: Improper Access Control (Authorization)
[6] CWE-807: Reliance on Untrusted Inputs in a Security Decision
[10] CWE-311: Missing Encryption of Sensitive Data
[11] CWE-798: Use of Hard-coded Credentials
[19] CWE-306: Missing Authentication for Critical Function
[22] CWE-732: Incorrect Permission Assignment for Critical Resource
[24] CWE-327: Use of a Broken or Risky Cryptographic Algorithm
Source : Le Top 25 publié par SANS (avec détails et explications en anglais)
-
kaymakMembre émériteCertaines de ses erreurs vous sont-elles familières ? Les avez-vous déjà vues ou commises ?[25] CWE-362: Race Condition
http://cwe.mitre.org/data/definitions/362.html[14] CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program ('PHP File Inclusion')
a plusle 17/02/2010 à 9:32 -
bastien.hugNouveau membre du ClubSession was already closed.
Lolle 17/02/2010 à 10:01 -
ricaultMembre du ClubBonjour tout le monde,
Je suis développeur Java j2ee, Est 'il possible de suivre des formations en France sur ce type de sujet ? Y a t il en France ou en Europe des organismes qui dispensent ce genre de formation ? Merci pour vos réponses .le 17/02/2010 à 14:23 -
pmithrandirExpert éminentJ'ai un peu la même question en tête. Parce que pour nombre des ces failles, je connais a peine le nom, et encore moins la façon de les éviter. Je pense que tous les sites que je fais sont bourrés de failles, mais je n'en ai strictement aucune idée...le 17/02/2010 à 18:06
-
HarryMembre expérimentéJe trouve personnellement que l'erreur de programmation la plus sérieuse reste tout bêtement les requêtes SQL DELETE avec des oublis au niveau de la clause WHERE. Voir oubli complet du WHERE. C'est radical et ne laisse pas de tracesle 17/02/2010 à 18:12
-
jpoulyMembre confirméLe SQL injection (Ah la bonne programmation à la VB6)
Ne pas contrôler les upload (Le serveur est à plat, sais pas pourquoi, m.. un virus)
Donner des infos aux hackers grâce aux exceptions levées par le serveur Web (pages d'erreurs standard, ne pas trapper les exceptions du serveur lui même, ...).
Les dépassements de buffers et compagnies, c'est du classique, normalement maitrisés par n'importe quel développeur (j'ai rempli la mémoire). le 17/02/2010 à 19:11 -
pmithrandirExpert éminentPar exemple pour moi c'est du chinois.. Je sais a peine ce qu'est un buffer, donc bon...
Je me souviens pas avoir eu besoin d'utiliser ca depuis 4-5 ans ni en java ni en PHP... Et ca ne rappelle rien du tout des techniques pour empêcher les explosion de buffer.
Est ce que ca ne serait pas une bonne idée sur développez de faire(ou de mettre un lien si ca existe déjà) une page avec ce genre d'erreur commune et de donner une explication simple ainsi qu'un exemple de bonne pratique a mettre en oeuvre pour toutes ces failles ?le 18/02/2010 à 1:16 -
deadalnixMembre éméritePermet moi d'être inquiet pour tes clients.le 18/02/2010 à 3:50
-
kisitomomoteneMembre avertiHmmm.
Je n'ai jamais rencontré une de ces erreurs depuis des années que je programme!! d'où avez vous sorti tout cela?le 18/02/2010 à 11:36 -
IDontLikeYouMembre actifC'est pas si rare, les race conditions sont à l'origine de pas mal d'exploit dans les jeux en ligne. Après dans les applis orientées business j'imagine qu'effectivement c'est très rare.le 18/02/2010 à 11:58