User Namespace
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
User namespace — це функція ядра Linux, яка забезпечує ізоляцію відображень ідентифікаторів користувачів і груп, дозволяючи кожному простору користувача мати власний набір ідентифікаторів користувачів і груп. Ця ізоляція дозволяє процесам, що працюють у різних просторах користувачів, мати різні привілеї та власність, навіть якщо вони мають однакові числові ідентифікатори користувачів і груп.
Простори користувачів особливо корисні в контейнеризації, де кожен контейнер повинен мати свій незалежний набір ідентифікаторів користувачів і груп, що дозволяє забезпечити кращу безпеку та ізоляцію між контейнерами та хост-системою.
Коли створюється новий простір користувача, він починається з порожнього набору відображень ідентифікаторів користувачів і груп. Це означає, що будь-який процес, що працює в новому просторі користувача, спочатку не матиме привілеїв поза межами простору.
Відображення ідентифікаторів можуть бути встановлені між ідентифікаторами користувачів і груп у новому просторі та тими, що в батьківському (або хост) просторі. Це дозволяє процесам у новому просторі мати привілеї та власність, що відповідають ідентифікаторам користувачів і груп у батьківському просторі. Однак відображення ідентифікаторів можуть бути обмежені до певних діапазонів і підмножин ідентифікаторів, що дозволяє точно контролювати привілеї, надані процесам у новому просторі.
У межах простору користувача процеси можуть мати повні привілеї root (UID 0) для операцій всередині простору, при цьому все ще маючи обмежені привілеї поза межами простору. Це дозволяє контейнерам працювати з можливостями, подібними до root, у своєму власному просторі без повних привілеїв root на хост-системі.
Процеси можуть переміщатися між просторами, використовуючи системний виклик setns()
або створювати нові простори, використовуючи системні виклики unshare()
або clone()
з прапором CLONE_NEWUSER
. Коли процес переходить до нового простору або створює його, він почне використовувати відображення ідентифікаторів користувачів і груп, пов'язані з цим простором.
Монтування нової інстанції файлової системи /proc
, якщо ви використовуєте параметр --mount-proc
, забезпечує, що новий простір монтування має точний та ізольований вигляд інформації про процеси, специфічної для цього простору.
Щоб використовувати простір імен користувача, демон Docker потрібно запустити з --userns-remap=default
(в Ubuntu 14.04 це можна зробити, змінивши /etc/default/docker
, а потім виконавши sudo service docker restart
)
Можна перевірити мапу користувачів з контейнера docker за допомогою:
Або з хоста за допомогою:
Також ви можете входити в інший простір процесів лише якщо ви root. І ви не можете входити в інший простір без дескриптора, що вказує на нього (наприклад, /proc/self/ns/user
).
У випадку з просторами користувачів, коли створюється новий простір користувачів, процес, який входить до простору, отримує повний набір можливостей у цьому просторі. Ці можливості дозволяють процесу виконувати привілейовані операції, такі як монтування файлових систем, створення пристроїв або зміна власності на файли, але тільки в контексті його простору користувачів.
Наприклад, коли у вас є можливість CAP_SYS_ADMIN
у просторі користувачів, ви можете виконувати операції, які зазвичай вимагають цієї можливості, такі як монтування файлових систем, але тільки в контексті вашого простору користувачів. Будь-які операції, які ви виконуєте з цією можливістю, не вплинуть на хост-систему або інші простори.
Отже, навіть якщо отримання нового процесу всередині нового простору користувачів дасть вам всі можливості назад (CapEff: 000001ffffffffff), ви насправді можете використовувати лише ті, що пов'язані з простором (монтування, наприклад), але не всі. Тож цього самого по собі недостатньо, щоб втекти з контейнера Docker.
hacking tricks by submitting PRs to the** HackTricks and HackTricks Cloud github repos.
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)