web-dev-qa-db-fra.com

avertissement: erreur lors de la désactivation de la randomisation de l'espace adresse: opération non autorisée

qu'ai-je fait de mal (ou de ne pas avoir fait) pour que gdb ne fonctionne pas correctement pour moi?

root@6be3d60ab7c6:/# cat minimal.c 
int main()
{
  int i = 1337;
  return 0;
}
root@6be3d60ab7c6:/# gcc -g minimal.c -o minimal
root@6be3d60ab7c6:/# gdb minimal
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
.
.
.
Reading symbols from minimal...done.
(gdb) break main
Breakpoint 1 at 0x4004f1: file minimal.c, line 3.
(gdb) run
Starting program: /minimal 
warning: Error disabling address space randomization: Operation not permitted
During startup program exited normally.
(gdb) 
(gdb) print i   
No symbol "i" in current context.
61
Jas

Si vous utilisez Docker, vous avez probablement besoin du --security-opt seccomp=unconfined option (et activation de ptrace):

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
101
wisbucky

Pour une raison quelconque, votre compte d'utilisateur n'est pas autorisé à désactiver la randomisation de la disposition de l'espace d'adressage du noyau pour ce processus. Par défaut, gdb le désactive car cela facilite certaines sortes de débogage (en particulier, cela signifie que l'adresse des objets de la pile sera la même à chaque exécution du programme). Lire la suite ici .

Vous pouvez contourner ce problème en désactivant cette fonctionnalité de gdb avec set disable-randomization off.

Quant à l’obtention de l’autorisation nécessaire à votre utilisateur pour désactiver ASLR, il s’agit probablement d’avoir le droit d’écrire sur /proc/sys/kernel/randomize_va_space. Lire la suite ici .

16
Chris Kitching

En s'appuyant sur réponse de wisbucky (merci!), Voici les mêmes paramètres pour la composition de Docker:

security_opt:
  - seccomp:unconfined
cap_add:
  - SYS_PTRACE

L'option de sécurité seccomp:unconfirmed corrigé le address space randomization avertissements.

La capacité SYS_PTRACE ne semble pas avoir d'effet notable, même si documentation de Docker indique que SYS_PTRACE est une fonctionnalité "non autorisée par défaut". Peut-être que je ne sais pas quoi chercher.

6
Kevin W Matthews