Developpez.com

Le Club des Développeurs et IT Pro

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)
  Discussion forum
26 commentaires
  • kaymak
    Membre émérite
    Certaines de ses erreurs vous sont-elles familières ? Les avez-vous déjà vues ou commises ?
    Carrément. Y'à de l'erreur de programmation et de l'inattention dans tout cela, mais tout le monde s'y retrouvera.

    [25] CWE-362: Race Condition
    Faut y aller pour faire des exploits sur des failles de ce goût là, voir l'exemple
    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')
    Nécessairement et uniquement le PHP ?

    a plus
  • bastien.hug
    Nouveau membre du Club
    Session was already closed.

    Lol
  • ricault
    Membre du Club
    Bonjour 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 .
  • pmithrandir
    Expert éminent
    Envoyé par ricault
    Bonjour 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 .
    J'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...
  • Harry
    Membre 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 traces
  • jpouly
    Membre 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).
  • pmithrandir
    Expert éminent
    Envoyé par jpouly
    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).
    Par 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 ?
  • deadalnix
    Membre émérite
    Permet moi d'être inquiet pour tes clients.
  • kisitomomotene
    Membre averti
    Hmmm.

    Je n'ai jamais rencontré une de ces erreurs depuis des années que je programme!! d'où avez vous sorti tout cela?
  • IDontLikeYou
    Membre actif
    Envoyé par kaymak


    Faut y aller pour faire des exploits sur des failles de ce goût là, voir l'exemple
    http://cwe.mitre.org/data/definitions/362.html

    C'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.