попередження: Помилка відключення рандомізації адресного простору: Операція не дозволена


79

що я зробив неправильно (або не зробив), що gdbне працює належним чином для мене?


46
Під час запуску в контейнері докера я отримував цю помилку, доки не додав --security-opt seccomp=unconfinedдо docker run.
Cameron Taggart

@CameronTaggart дякую за підказку! Ти мене вразив.
gaijin

@CameronTaggart для мене це добре працює, але проблема безпеки
Jia

Відповіді:


144

Якщо ви використовуєте Docker, вам, ймовірно, потрібна --security-opt seccomp=unconfinedопція (а також увімкнення ptrace):


5
спасибі за це - я не уявляю, скільки часу я втратив би навчившись цьому важким способом!
VorpalSword

2
Я думаю, що --cap-add=SYS_PTRACEце потрібно лише для підключення gdbдо вже запущеного процесу.
пересохло

Не могли б ви надати проблеми безпеки, використовуючи ці варіанти?
Ra'Jiska

4
Чи є спосіб застосувати цю команду до вже запущеного екземпляра? Тому що я не хочу видаляти цей екземпляр і запускати новий
sh.3.ll

18

З будь-якої причини ваш обліковий запис користувача не має дозволу вимкнути рандомізацію макета адресного простору ядра для цього процесу. За замовчуванням gdb вимикає це, оскільки полегшує деякі види налагодження (зокрема, це означає, що адреса об'єктів стеку буде однаковою кожного разу під час запуску програми). Детальніше читайте тут .

Ви можете обійти цю проблему, вимкнувши цю функцію gdb за допомогою set disable-randomization off.

Що стосується отримання користувачем дозволу, необхідного для вимкнення ASLR, це, ймовірно, зводиться до дозволу на запис /proc/sys/kernel/randomize_va_space. Детальніше читайте тут .


12

Спираючись на відповідь Wisbucky (дякую!), Ось ті самі налаштування для Docker:

Параметр безпеки seccomp:unconfinedзафіксував address space randomizationпопередження.

Здається, можливість SYS_PTRACE не мала помітного ефекту, навіть незважаючи на те, що в документації Docker зазначено, що SYS_PTRACE - це можливість, яка "не надається за замовчуванням". Можливо, я не знаю, на що звертати увагу.


1
У вас є помилка, вона не
обмежена,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.