101
Sécurité du système d’exploitation et des programmes
Chapitre 5
certaines situations, par exemple lorsque les droits d’accès du programme et de
l’utilisateur effectif sont discordants, il peut aussi être activé explicitement, ce qui
est fortement conseillé pour les programmes serveurs.
En mode souillé, Perl active des contrôles de pollution (taint checks) : certains sont
classiques, tels que l’interdiction d’écrire dans les répertoires du chemin de recherche des programmes exécutables.
En mode souillé, Perl affecte d’une marque spéciale toutes les données qu’un programme reçoit de l’extérieur, tels les champs de formulaires remplis directement
par un internaute et qui pourraient comporter des injections de code (cf. la section 3 page 61) ; de même sont marqués souillés les arguments de ligne de commande, les variables d’environnement, et toutes les données lues depuis un fichier.
Les variables souillées sont soumises à des restrictions d’usage : elles ne peuvent
pas être utilisées pour modifier une donnée extérieure au programme, sauf si elles
ont été dûment vérifiées et explicitement « blanchies ». Les meilleures méthodes
de blanchissage de données reposent sur la technique du filtrage ; il s’agit ici du
filtrage dans l’acception qui désigne une technique de programmation nommée
en anglais pattern matching, à ne pas confondre avec le filtrage sur les réseaux, bien
que celui-ci puisse recourir à celle-là. Bref, le filtrage évoqué ici consiste à tenter de détecter, dans le contenu de la variable souillée, des caractères ou « mots »
potentiellement dangereux.
Séparation des privilèges dans le système
Nous avons déjà évoqué la problématique de la séparation des privilèges à la section 2 page 40, notamment du point de vue de la gestion des comptes des utilisateurs. Nous allons préciser ici quelques aspects un peu plus techniques.
Il est important que chaque utilisateur, à chaque instant, possède les privilèges qui
lui sont indispensables pour accomplir son travail, et seulement ceux-là. S’il doit
pour une opération particulière élever son niveau de privilèges, cette élévation doit
être temporaire, et son effet doit être limité à l’opération en question. Cela est bien
sûr encore plus impératif lorsqu’il s’agit des privilèges du super-utilisateur, root
sous Unix ou Administrateur sous Windows, par exemple. Mais ces précautions déjà signalées ne suffisent pas.
Précédent

- 115/276

Suivant