Je comprends cela /dev/kmem
et je /dev/mem
donne accès à la mémoire (c.-à-d. La RAM brute) du système. Je suis également conscient que cela /dev/kmem
peut être complètement désactivé dans le noyau et que l'accès peut être restreint /dev/mem
.
Il me semble, avoir un accès brut à la mémoire peut être utile pour les développeurs et les pirates, mais pourquoi devrais-je avoir besoin d'accéder à la mémoire /dev/mem
. AFAIK il ne peut pas être désactivé dans le noyau (contrairement à /dev/kmem
). Avoir accès à une mémoire brute qui peut être potentiellement exploitée / abusée me semble être un problème.
Y a-t-il une utilité pratique pour cela? Y a-t-il des programmes utilisateur qui nécessitent qu'il fonctionne correctement?
/dev/mem
. Je ne suis pas sûr que ce soit toujours d'actualité./dev/mem
. Chargez un module, exécutez le code en mode noyau. Et en plus de cela, durcir contre les attaquants avec un accès root ne vaut que s'il y a des choses que root ne peut pas faire, ce qui n'a pas tendance à être le cas dans les installations typiques.man mem
, l' accès en écriture à / dev / mem est désactivé par les correctifs de verrouillage du noyau utilisés pour prendre en charge le "démarrage sécurisé" (le verrouillage peut être activé sans démarrage sécurisé). phoronix.com/…Réponses:
Il y a un jeu de diapositives de Scale 7x 2009 intitulé: Undermining the Linux Kernel: Malicious Code Injection via / dev / mem qui contenait ces 2 puces.
D'après tout ce que j'ai trouvé à partir des recherches jusqu'à présent, il semblerait que ces 2 balles soient les pionniers pour des utilisations légitimes.
Références
la source
X server
sur mon serveur et que je n'en ai donc pas besoin/dev/mem
. Existe-t-il un moyen de désactiver/dev/mem
complètement le noyau? Je n'ai trouvé que "Filtrer l'accès à / dev / mem" (CONFIG_STRICT_DEVMEM
).Il convient de noter que même si vous avez désactivé
/dev/mem
et/dev/kmem
que la mémoire peut encore être vidée; jetez un oeil àman proc
révéler/proc/kcore
; c'est la mémoire physique du système. Une très bonne boîte à outils forensics rekall a un outil qui fait déjà cela ; il vide la mémoire (et les/boot
fichiers) afin qu'ils puissent être analysés.En fait, Ubuntu désactive par défaut
/dev/kmem
:Ubuntu ne se désactive pas
/dev/mem
car il est nécessaire aux applications .Comment désactiver
/proc/kcore
?Ne pas activer
CONFIG_PROC_KCORE
lors de la construction du noyau.Comment désactivez-vous
/dev/mem
?Eh bien, regarder plus
man mem
loin nous donne quelques détails sur la façon dont il a été créé:Vous devriez pouvoir juste
rm -rf /dev/mem
; vous pouvez désactiver pendant la phase de construction du noyau en ne l'activant pasCONFIG_STRICT_DEVMEM
.Comment désactiver
/dev/kmem
?Assurez-vous que ce
CONFIG_DEVKMEM
n'est pas activé lors de la construction du noyau.Comment empêcher les attaques de démarrage à froid?
Et si je pouvais désactiver
/proc/kcore
,/dev/mem
,/dev/kmem
puis utilisé une partition de swap crypté ou n'a pas utilisé du tout échange? Eh bien, votre mémoire pourrait être gelée et accessible de cette façon. Comment empêchez-vous cette attaque? Vous cryptez votre RAM; comment cryptez-vous votre RAM? Tu ne peux pas. Voir TRESOR pour plus de détails .la source
/dev/kmem
mon noyau et je n'en vois aucun/proc/kcore
sur mon système. Mais je l'ai/dev/mem
, et je voudrais le désactiver./proc/mem
devrait être/dev/mem
, de même pour/proc/kmem
.Comme vous le savez,
/dev/mem
donne accès à la mémoire physique d'un système en cours d'exécution./dev/kmem
donne accès à la mémoire virtuelle du noyau. Ces deux périphériques de caractères peuvent être désactivés de manière persistante via les options de configuration du noyau (le code est la source d'information la plus fiable, il est donc utilisé comme référence). La désactivation des deux premières options ci-dessous désactivera les appareils correspondants.CONFIG_DEVKMEM
: détermine si/dev/kmem
est créé au démarrageCONFIG_DEVMEM
: détermine si/dev/mem
est créé au démarrageCONFIG_STRICT_DEVMEM
: s'il/dev/mem
existe, détermine si l'accès à celui-ci est restreintSelon votre distribution, votre configuration actuelle du noyau peut être vue en utilisant quelque chose comme
zless /proc/config.gz
ouless /boot/config-$(uname -r)
.Je pense que l'intention initiale de
/dev/mem
était de soutenir l'interaction avec les périphériques mappés en mémoire . Les implications de sécurité négatives évidentes de la disponibilité de ces périphériques virtuels (par exemple, un attaquant pouvant patcher à la volée la mémoire d'un autre processus ou même le noyau) est connue depuis au moins une décennie. Restreindre l'accès à/dev/mem
a été pris en charge dans le noyau de la ligne principale depuis le début de 2008 , et/dev/kmem
est également facultatif depuis cette date également.Il y a une décennie, il semble que cela
X
dépendait/dev/mem
, je ne pense pas que ce soit toujours vrai. Pour tester les affirmations sur laX
nécessité,/dev/mem
j'ai supprimé le périphérique virtuel de mon ordinateur portable hier et il fonctionne parfaitement depuis. En 2017, il ne semble pas y avoir d'utilisation pratique de ces appareils en dehors de la recherche et du développement.Du point de vue de la sécurité, il est judicieux de supprimer ces appareils. Il convient de noter qu'un attaquant distant , avec des privilèges élevés, peut lire la mémoire en dehors de son espace d'adressage. La mémoire d'autres applications de l'espace utilisateur est accessible à l'aide de
/proc/<pid>/mem
. La mémoire du noyau est accessible à l'aide de/proc/kcore
.la source
Je n'ai pas inclus
/dev/mem
sur mon système depuis le début. J'utilise Gentoo Linux, donc cela peut ne pas être surprenant, car avec cette distribution Linux, vous construisez pratiquement tous les packages vous-même, y compris le noyau Linux.Je n'ai jamais remarqué de problèmes en raison de l'absence de
/dev/mem
, même lorsque j'utilise X.org X11. Aujourd'hui encore, j'ai remarqué qu'une émergence du packagex11-drivers/xf86-video-vesa
imprime un message indiquant qu'il nécessite/dev/mem
, comme ceci:Étant donné que je n'ai pas installé le pilote VESA pour le XServer intentionnellement, ou même si ce n'est que comme solution de repli, je n'ai jamais eu à l'utiliser et je ne l'ai donc pas remarqué - jusqu'à présent.
Mais cela prouve le point que a) X11 n'a plus besoin
/dev/mem
, et b) que certains pilotes vidéo X11 peuvent toujours le faire de toute façon.Les pilotes vidéo plus récents pour un matériel spécifique fonctionneront très probablement sans lui. Tout comme le X.org-X11 moderne (sur Gentoo,
x11-base/xorg-server
) n'a même plus besoin d'être suid root , voilà à quoi ressemble le progrès ...la source