Jeu sécurité

Le bug du mois de novembre

Proposé par Shanit Gupta, Consultant (Foundstone)

try 
  { 
     ElevatePrivilege(); 
     ReadSecretFile(); 
     LowerPrivilege(); 
  } 
  catch(FileException fe) 
  { 
      ReportException(); 
  } 
          


La bonne réponse

La bonne réponse est :
Si une exception autre que fileexception survient lors de l'appel de la méthode Readsecretfile, le code reste à un haut niveau de privilège.

Dans le code proposé, il n'y a aucun moyen de redescendre le privilège si une exception autre que Fileexception se produit. On va donc rajouter un bloc finally pour s'assurer que, quoi qu'il se passe, le code contenu dans ce bloc sera exécuté (i.e : redescendre le niveau de privilège)


Et le code corrigé

Proposé par Shanit Gupta, Consultant (Foundstone)

try
  {
    ElevatePrivilege();
    ReadSecretFile();
  }
  catch(FileException fe)
  {
     ReportFileException();
  }
  catch(Exception e)
  {
     ReportException();
  }
  finally()
  {
     LowerPrivilege();
     AllDone();
  }
return;

Pour aller plus loin

Indications concernant le déclenchement et la gestion des erreurs

Méthodes conseillées pour la gestion des exceptions

Le centre de conseils sur la sécurité pour les développeurs

Writing Secure Code, l’ouvrage de référence  

Le règlement | Comment jouer ? | Liste des gagnants


**
**
**
**
**
**