Jeu sécurité

Le bug du mois de juillet

Proposé par Eric Vernié

Dans le pseudo code suivant, nous interdisons l'accès à nos données sensible par exemple le fichier Budget02.xls aux utilisateurs du sous réseau 172.30.x.x

String DonneesSensible[] = {"BudgetFiscal022006.xls","PlanProduits.doc"};
IPAddress IPAutorise[] = {172.30.0.0,192.168.200.0} ;

BOOL AutorisationAuFichier(NomFichier, IPAddress)
{
If NomFichier in DonneesSensible[] && IPAddress in IPAutorise[]
{
Return False;
Else
Return True
}
}

BOOL autorisation= AutorisationAuFichier("BudgetFiscal022006.xls", "172.30.43.12")
If autorisation ==false
{
//...Vous n'avez pas les autorisations nécessaire pour ouvrir ce fichier
}


La bonne réponse

La bonne réponse est :
Mon code est fiable et sécurisé sauf pour les noms MSDOS (8.3)

En effet sous Windows, le nom BudgetFiscal022006.xls est représenté également sous la forme 8.3 Budget~1.xls (forme disponible depuis MSDOS et gardé pour une compatibilité ascendante). Si un attaquant peut s’immiscer dans votre code et utilise le nom court comme ceci :

BOOL autorisation = AutorisationAuFichier("Budget~1.xls", "172.30.43.12"), il y a fort a parier que la méthode retourne « vrai ».

La sagesse conventionnelle dicte que les systèmes sécurisés ne doivent pas inclure des applications MS-DOS ou Windows 16 Bits, et donc que le support des noms 8.3 doit être désactivé. Dans le cas contraire, il faudra penser à les rajouter dans la liste des données sensibles.


Pour aller plus loin

Les webcasts sécurité

Consultez la rubrique « Introduction à la sécurité », comportant des articles indispensables et des webcasts pour bien commencer

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

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

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


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