Traduction(s) : English

(!) ?Discussion


mmap_min_addr is a kernel tunable that specifies the minimum virtual address that a process is allowed to mmap. Allowing processes to map low values increases the security implications of a class of defects known as "kernel NULL pointer dereference" defects. If a malicious local user finds a way to trigger one of these NULL pointer defects, they can exploit it to cause system hangs, crashes, or otherwise make parts of the system unusable. If this user is also able to map low portions of virtual memory, they can often further exploit this issue to gain increased privileges.

The downside to preventing applications from mmap'ing low virtual memory addresses is that certain applications depend on this functionality. dosemu, qemu and wine are three such applications that exist in Debian 5.0 ('lenny'). See the application specific information below.

État actuel

Debian 5.0.3 utilise par défaut un mmap_min_addr à 0. Cette configuration de Debian est susceptible de permettre d'augmenter ses privilèges par utilisation d'un pointeur NULL. Si vous savez qu'aucune des application que vous utilisez utilisent cette valeur, il est recommandé d'augmenter de mmap_min_add sur votre système.

Pour ce faire, vous pouvez copier et coller ces commandes dans votre termlinal :

# echo "vm.mmap_min_addr = 4096" > /etc/sysctl.d/mmap_min_addr.conf
# /etc/init.d/procps restart

Le noyau 2.6.18 dans Debian 4.0 ("etch") ne supporte pas cette fonctionnalité du noyau. Pour augmenter la sécurité, il est recommandé à ces utilisateurs d'installer le noyau 2.6.24 "EtchAndAHalf", ou de mettre à jour votre système vers Debian 5.0 ("lenny").

À l'avenir

Avec Debian 5.0.4, la valeur par défaut seras augmenté à 4096. Si certaines de vos applications posent problèmes, vous pouvez annuler ces restriction avec les commandes :

# echo "vm.mmap_min_addr = 0" > /etc/sysctl.d/mmap_min_addr.conf
# /etc/init.d/procps restart

Si vous n'avez pas un besoin fréquent de ces logiciels, vous pouvez modifier la valeur de manière temporaire avec cette commande :

# sysctl -w vm.mmap_min_addr="0"

Ensuite vous pouvez réactiver les restrictions avec la commande :

# sysctl -w vm.mmap_min_addr="4096"

Informations sur des logiciels spécifiques

bitbake

Sur le manuel utilisateur (en anglais) on peut lire : « bitbake might complain that there is a problem with the setting in /proc/sys/vm/mmap_min_addr, which needs to be set to zero. »

dosemu

dosemu doit être lancé avec vm.mmap_min_addr initialisé à 0, ou alors être exécuté avec les privilèges administrateur (root). Les mainteneurs sont à la recherche d'une solution pour corriger ce problème, voir : 505247

wine

Seul les binaires Win16 utilisent les petite adresse mmap, les binaires Win32 n'en ont pas besoin. Il est recommandé de tester vos logiciel avec le mmap_min_addr setting augmenté. Si les logiciels ne fonctionnent plus, vous pouvez retirer les restrictions.

qemu

qemu, dans la version de Debian 5.0, utilise les petites adresses vrtuelles de mmap. mmap_min_addr doit être à 0 pour lancer qemu en tant qu'utilisateur (et non d'administrateur). Cette limitation a était supprimé dans les dernières versions, qemu peut fonctionner avec une grande valeur de mmap_min_addr dans la version de squeeze.