Le Top 25 des erreurs de programmation les plus dangereuses
D'après SANS et MITRE

Le , 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)


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de deadalnix deadalnix - Membre chevronné http://www.developpez.com
le 18/02/2010 à 18:43
Citation Envoyé par pmithrandir  Voir le message
Les sites sur lequels je travaille sont tous des sites fermés type intranet, SAAS.

Et le dernier soucis était la securité en général.

Excuse moi, mais c'est juste crétin. Toute personne renseignée sur la sécurité te confirmera cela : une part importante des attaques viens de l'intérieur.
Avatar de snipes snipes - Membre actif http://www.developpez.com
le 20/02/2010 à 17:40
Citation Envoyé par deadalnix  Voir le message
Excuse moi, mais c'est juste crétin. Toute personne renseignée sur la sécurité te confirmera cela : une part importante des attaques viens de l'intérieur.

+1
Avatar de pmithrandir pmithrandir - Membre expert http://www.developpez.com
le 20/02/2010 à 21:10
Citation Envoyé par deadalnix  Voir le message
Excuse moi, mais c'est juste crétin. Toute personne renseignée sur la sécurité te confirmera cela : une part importante des attaques viens de l'intérieur.

Je n'ai jamais affirmer que j'approuvais les décisions de priorité de dev de l'équipe dirigeante :p

Enfin, il n'en demeure pas moins que je trouve que l'on manque d'endroit ou l'on centralise toutes les informations de manières visible pour assurer des bonnes pratiques.

Comment gérer des documents uploadés sur un serveur, le répertoire est il accessible aux utilisateurs ou non, etc... Comment éviter certaines injection de variable dans une page avec l'url...

Les applications PHP que j'ai vu étaient en général basée sur des trucs qui faisait que c'était presque impossible de limiter les accès d'un mec qui connaissait le code. Avec des non sens comme, ajouter debug=1 dans l'url pour passer en mode debug... sans autre forme de procès... Bref, on est loin quand on est a ce niveau la de se poser la question d'un injection SQL...

Surtout que... dans nombre d'applications ou les données ne sont pas critiques pour le client(par critique j'entends importance capitale pour le dev de l'entreprise ou pour des obligations de confidentialité légale) ils ne sont pas du tout prêt a mettre de l'argent dans la sécurité. C'est par définition le truc invisible qui coute cher et qui n'est jamais infaillible. Bref, aucune raison de payer pour cela...
Avatar de deadalnix deadalnix - Membre chevronné http://www.developpez.com
le 20/02/2010 à 22:55
La sécurité, ça coute cher ?

Sans doute, mais il est clair, que c'est économique sur le moyen/long terme.

Imagine qu'un salarié mal intentionné supprime tous les données de l'entreprise ? Essaye de chiffre cela, ça va te donner une idée.

La question de la dépense sécuritaire est simple : est-ce que c > p*r ? Ou c est le coût de la mise ne place de la sécurité, p la probabilité que la menace devienne effective et r le coût qu'engendre la réalisation de la menace.

Si l'assertion ci dessus est vraie, alors il faut payer pour la sécurité. Et quand on se rend compte des valeurs de r dans certains cas, on sait pourquoi on paye.

Il existe pas mal d'infos sur les failles classiques type sql injection. Mais la sécurité, ça se pense dans son ensemble (par exemple, c'est bien joli d"utiliser un algo de cryptage super béton avec un clef très longue, mais si le pass est marqué avec un post-it collé sur l'écran . . .).

La sécurité est un domaine dans lequel j'ai des compétences (attention, pas en cryptanalyse, qui est un domaine associé mais différent. je ne appesantis pas la dessus car ce n'est pas le but du topic).

Quand je vois le temps passé à acquérir mes compétences (ça va taper super large, car elles vont de notions psychologiques, à l'algorithmique, l'informatique bas niveau, le réseau, des bases mathématiques solides, etc . . .) et le temps que je passe régulièrement à les mettre à jour, ou bien je suis particulièrement inefficace, ou bien une simple page, ça permet d'éviter les pièges classiques, mais ça ne suffit largement pas.
Avatar de _skip _skip - Expert éminent http://www.developpez.com
le 22/02/2010 à 9:10
Citation Envoyé par deadalnix  Voir le message
par exemple, c'est bien joli d"utiliser un algo de cryptage super béton avec un clef très longue, mais si le pass est marqué avec un post-it collé sur l'écran . . .).

Ah l'utilisateur... Souvent un gros point faible de la sécurité. Ce que tu cites ici a été la principale motivation pour la mise en place d'une authentification forte dans une entreprise ou j'ai travaillé (le fameux porte-clef qui génère des codes chaque minutes, impossibles à rejouer). Justement parce qu'on s'est rendu compte que le login seul était trop dangereux le jour où un employé a dit avoir reçu un coup de fil d'une personne prétendant être du service informatique.

Combien de gens utilisent les mêmes mots de passe partout où ils vont? Donc si j'arrive à chopper le Mp de leur MSN, je peux l'utiliser sur le VPN de l'entreprise? Inacceptable.

D'ailleurs peu de monde s'intéresse à trouver des failles dans SSL et tout ça (bien qu'il en existe une dernièrement), casser des algos de cryptage... Il est tellement plus simple de pousser l'utilisateur à révéler l'information (phising, faux sites d'ecommerce etc...).
Avatar de dams78 dams78 - Membre chevronné http://www.developpez.com
le 22/02/2010 à 12:00
Citation Envoyé par kaymak  Voir le message
C'est pour cela qu'on aime bien les fw : D

@dams78 tu peux préciser un peu c'est intéressant.

En fait lors d'un lancement, les personnes au sol n'ont pas la capacité de diriger la fusée. C'est donc la fusée via un ou plusieurs ordinateurs qui "se pilote" elle même. Lors du fameux tir d'Ariane 5, cet ordinateur a essayé de corriger le tir pour cela il doit effectuer un certain nombre de calcul, et malheureusement le langage utilisé devait être un langage du type java (c'est à dire avec une machine virtuelle dont tu sais pas forcément ce qu'elle fait) et du coup l'ordinateur c'est retrouver surchargé de calcul et à tout simplement bugué.
Lorsque j'ai fais de l'Ada, le prof nous a présenté le langage en nous disant que si Ariane avait été codée en Ada elle aurai pas explosé, justement parce que l'Ada fait parti des langage qui font toujours le même calcul une fois que c'est compilé : il n'y a pas de machine virtuelle. D'ailleurs la plupart des satellites, matériel militaire et certainement Ariane 5 maintenant, sont codés en Ada.
Avatar de deadalnix deadalnix - Membre chevronné http://www.developpez.com
le 22/02/2010 à 22:52
_skip > C'est pourquoi la sécurité ne se limite pas aux questions techniques. Il est nécessaire de mettre ne place une réelle politique de sécurité.

dams78 > Je crois que c'est un erreur d'unité, mais le problèmes est le même.
Avatar de Jihnn Jihnn - Membre actif http://www.developpez.com
le 23/02/2010 à 3:28
Voici un court article si ça vous intéresse (Ariane 5) : http://www.xcess.info/fr/l_erreur_de...llars_afr.aspx
Avatar de kaymak kaymak - Membre chevronné http://www.developpez.com
le 24/02/2010 à 10:23
Merci pour les infos et les liens
Avatar de Rams7s Rams7s - Membre éclairé http://www.developpez.com
le 24/02/2010 à 16:56
La gros soucis de la sécurité, c'est son manque de publicité.
Dès qu'on a eu une sensibilisation à ça, ça permet d'éviter un grand nombre d'erreurs de bases, type sécuriser tous les inputs.
Ex: l'UAC (le pop-up) de Vista, bien souvent désactivé. Et conseillé de le désactiver dans certains FAQ pour lancer des jeux
Ce serait une abération de lancer tous les programmes en su sous linux, et pourtant sous windows l'hyper majorité des gens sont en compte admin.

Et même parmi les experts, on est toujours pas au courant des 10 erreurs de base.
Symantec et la faille SQL: http://www.secuobs.com/revue/news/164184.shtml
Ou le vol de 130 millions de cartes de crédits : http://www.justice.gov/opa/pr/2009/A...9-crm-810.html

Mais je pense que petit à petit, les entreprises vont en prendre conscience. Ça va dans le bon sens avec Microsoft qui adapte son SDL aux méthodes Agiles.

Pour Ariane, c'est un overflow

Et je sais pas faire de php, mais je connais juste la fonction magic-quote...
Avatar de deadalnix deadalnix - Membre chevronné http://www.developpez.com
le 24/02/2010 à 17:00
Le soucis de ces erreurs, c'est qu'elles peuvent être faites même pas un programmeurs connaissant les risques. Une erreur d'inattention est vite arrivée.

Il est à mon avis indispensable d'utiliser un framework pour les éviter.
Offres d'emploi IT
Architecte fonctionnel et applicatif (H/F)
Société Générale - Ile de France - Val-de-Marne
Analyste SI-métier (H/F)
Société Générale - Ile de France - Val-de-Marne
Data scientist H/F
Safran - Ile de France - Magny-les-Hameaux (78114)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil