• STATISTIQUES
  • Il y a eu un total de 1 membres et 5942 visiteurs sur le site dans les dernières 24h pour un total de 5 943 personnes!


    Membres: 2 458
    Discussions: 3 571
    Messages: 32 817
    Tutoriels: 77
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [FR] Developpez.net
    Un forum communautaire qui se veut pour les développeurs en générale. Avec presque 500 000 membr...
    Programmation
    [FR] Newbie Contest
    Crackme: 35, Cryptographie: 49, Hacking: 27, Javascript/Java: 17, Logique: 31, Programmation: 23, Stéganographie: 53
    Challenges
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Sécurité] Secure Coding - Eviter les TOCTTOU
13-08-2014, 14h22
Message : #1
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
[Sécurité] Secure Coding - Eviter les TOCTTOU
Hello,

Aujourd'hui, un petit rappel sur les vulnérabilités de type TOCTTOU (Time-of-Check-to-Time-of-Use), et comment les éviter.

Une vulnérabilité TOCCTOU se présente lorsqu'on vérifie une condition (time-of-check) avant d'exécuter une action (time-of-use), de manière non-atomique, c'est-à-dire que l'état du système (donc le résultat de la condition) risque de changer entre ces deux opérations.

Le risque existe donc quand on manipule des structures de données partagées entre plusieurs threads, ou qu'on utilise de l'IPC (fichiers, pipes) en présence de process hostiles.

Dans ce cas, la mantra a appliquer est: "mieux vaut demander pardon que permission", i.e. exécuter l'action et traiter l'erreur si elle se produit, plutôt que d'essayer de l'empêcher à l'avance..

Dans un post récent, j'ai vu passer quelque chose du genre:

Code PYTHON :

if blah in some_collection:
    do_something_with(some_collection[blah])
else:
    some_other_thing()
 


Prenez l'habitude de faire plutôt:

Code PYTHON :

try:
  do_something_with(some_collection[blah])
except KeyError:
  some_other_thing()
 


ou, si vous ne désirez pas intercepter une KeyError lancée ailleurs dans do_something_with():

Code PYTHON :

try:
  b = some_collection[blah]
except KeyError:
  some_ither_thing()
  return

do_something_with(b)
 


En utilisant systématiquement les exceptions et les retours d'erreurs plutôt que les vérifications d'avance, vous éviterez ces vulnérabilités. Si l'API ne le permet pas, c'est que l'API n'est pas adaptée a la programmation concurrente et qu'il faut la changer !

Quand ce n'est pas possible, il faut essayer de rentre l'ensemble des opérations atomique, en utilisant par exemple un verrou.
+1 (8) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut