Linux containers in 500 lines of code
🇬🇧 English
Erica Windisch warns that Linux user namespaces might not be secure enough. If a real root user has had SYS_CAP_ADMIN removed but then creates a user namespace, the capability is restored for the fake root user. Before creating the namespace, 'mount' would be denied, but following creation, the 'mount' syscall would work again in a limited fashion. This is significant enough that given a real root user and a kernel with user namespaces, Linux capabilities may be completely subverted.
The man page for user_namespaces confirms that the child process created by clone(2) with CLONE_NEWUSER starts with a complete set of capabilities. User namespaces allow for interesting intersections of security models, granting full root capabilities to the new namespace. This can allow CLONE_NEWUSER to effectively use CAP_NET_ADMIN over other network namespaces, especially if containers are not in use. Processes with CAP_NET_ADMIN have a large attack surface and have resulted in kernel vulnerabilities, potentially allowing an unprivileged user namespace to target the kernel networking subsystem.
Demonstrations show that on a host with user namespaces compiled in, a user can create a bridge using ioctl with SIOCBRADDBR, though setting file capabilities with cap_set_file fails. Ubuntu enables CONFIG_USER_NS but patches it so that unprivileged use can be disabled with the sysctl unprivileged_userns_clone. The kernel config defaults to 'n' for user namespaces, recommending MEMCG to limit memory for unprivileged users.
🇸🇦 العربية
أمان حاويات لينكس: مخاطر مساحات أسماء المستخدمين في 500 سطر
تحذر إيريكا وينديش من أن مساحات أسماء المستخدمين في لينكس قد لا تكون آمنة بما فيه الكفاية. إذا تمت إزالة قدرة SYS_CAP_ADMIN من مستخدم جذر حقيقي ولكن بعد ذلك يقوم بإنشاء مساحة اسم مستخدم، يتم استعادة القدرة للمستخدم الجذر المزيف. قبل إنشاء مساحة الاسم، سيتم رفض 'mount'، ولكن بعد الإنشاء، ستعمل استدعاءات نظام 'mount' مرة أخرى بطريقة محدودة. هذا مهم بما يكفي لدرجة أنه بالنظر إلى مستخدم جذر حقيقي ونواة تحتوي على مساحات أسماء مستخدمين، يمكن تقويض قدرات لينكس تمامًا.
تؤكد صفحة الدليل لـ user_namespaces أن العملية الفرعية التي تم إنشاؤها بواسطة clone(2) مع CLONE_NEWUSER تبدأ بمجموعة كاملة من القدرات في مساحة اسم المستخدم الجديدة. تسمح مساحات أسماء المستخدمين بتقاطعات "مثيرة للاهتمام" لنماذج الأمان، مما يمنح قدرات جذر كاملة لمساحة الاسم الجديدة. يمكن أن يسمح هذا لـ CLONE_NEWUSER باستخدام CAP_NET_ADMIN بشكل فعال عبر مساحات أسماء الشبكة الأخرى، خاصة إذا لم تكن الحاويات قيد الاستخدام. العمليات التي تحتوي على CAP_NET_ADMIN لها سطح هجوم كبير وقد أدت إلى العديد من ثغرات النواة، مما قد يسمح لمساحة اسم مستخدم غير مميزة باستهداف سطح هجوم كبير (نظام الشبكة الفرعي للنواة).
تظهر العروض التوضيحية أنه على مضيف يحتوي على مساحات أسماء مستخدمين مجمعة، يمكن للمستخدم إنشاء جسر باستخدام ioctl مع SIOCBRADDBR، على الرغم من فشل تعيين قدرات الملفات باستخدام cap_set_file. تقوم Ubuntu بتمكين CONFIG_USER_NS ولكنها تصححه بحيث يمكن تعطيل الاستخدام غير المميز باستخدام sysctl unprivileged_userns_clone. يكون تكوين النواة افتراضيًا على 'n' لمساحات أسماء المستخدمين، مع التوصية بـ MEMCG للحد من ذاكرة المستخدمين غير المميزين.
ما هي المخاطر الأمنية الرئيسية لمساحات أسماء المستخدمين في لينكس؟
تشمل المخاطر الرئيسية استعادة قدرات مثل **SYS_CAP_ADMIN** و **CAP_NET_ADMIN** في مساحات الأسماء الجديدة، والتي يمكن استغلالها لتجاوز القيود الأمنية واستهداف ثغرات النواة، خاصة في نظام الشبكة الفرعي.
🇧🇩 বাংলা
লিনাক্স কন্টেইনার নিরাপত্তা: ৫০০ লাইনে ইউজার নেমস্পেস ঝুঁকি
এরিকা উইন্ডিশ সতর্ক করেছেন যে লিনাক্স ইউজার নেমস্পেস যথেষ্ট নিরাপদ নাও হতে পারে। যদি একজন প্রকৃত রুট ব্যবহারকারীর কাছ থেকে SYS_CAP_ADMIN ক্ষমতা সরিয়ে দেওয়া হয় কিন্তু তারপর সে একটি ইউজার নেমস্পেস তৈরি করে, তাহলে ক্ষমতাটি নকল রুট ব্যবহারকারীর জন্য পুনরুদ্ধার করা হয়। নেমস্পেস তৈরি করার আগে, 'mount' প্রত্যাখ্যান করা হবে, কিন্তু তৈরি করার পরে, 'mount' সিস্টেম কল সীমিতভাবে আবার কাজ করবে। এটি যথেষ্ট তাৎপর্যপূর্ণ যে, প্রকৃত রুট ব্যবহারকারী এবং ইউজার নেমস্পেস সহ একটি কার্নেল দেওয়া হলে, লিনাক্স ক্ষমতাগুলি সম্পূর্ণরূপে দুর্বল করা যেতে পারে।
user_namespaces-এর ম্যান পেজ নিশ্চিত করে যে clone(2) দিয়ে CLONE_NEWUSER ব্যবহার করে তৈরি চাইল্ড প্রসেস নতুন ইউজার নেমস্পেসে সম্পূর্ণ ক্ষমতার সেট নিয়ে শুরু করে। ইউজার নেমস্পেস নিরাপত্তা মডেলের "আকর্ষণীয়" ছেদগুলির অনুমতি দেয়, নতুন নেমস্পেসকে সম্পূর্ণ রুট ক্ষমতা প্রদান করে। এটি CLONE_NEWUSER-কে অন্যান্য নেটওয়ার্ক নেমস্পেসের উপর কার্যকরভাবে CAP_NET_ADMIN ব্যবহার করার অনুমতি দিতে পারে, বিশেষ করে যদি কন্টেইনার ব্যবহার না হয়। CAP_NET_ADMIN সহ প্রসেসগুলির আক্রমণের বড় পৃষ্ঠ থাকে এবং অনেক কার্নেল দুর্বলতার ফলে, সম্ভাব্যভাবে একটি অপ্রিভিলেজড ইউজার নেমস্পেসকে কার্নেল নেটওয়ার্কিং সাবসিস্টেমকে লক্ষ্য করার অনুমতি দেয়।
প্রদর্শনী দেখায় যে ইউজার নেমস্পেস সহ সংকলিত হোস্টে, একজন ব্যবহারকারী ioctl এবং SIOCBRADDBR দিয়ে একটি ব্রিজ তৈরি করতে পারে, যদিও cap_set_file দিয়ে ফাইল ক্ষমতা সেট করা ব্যর্থ হয়। Ubuntu CONFIG_USER_NS সক্ষম করে কিন্তু এটি প্যাচ করে যাতে sysctl unprivileged_userns_clone দিয়ে অপ্রিভিলেজড ব্যবহার অক্ষম করা যায়। কার্নেল কনফিগারেশন ইউজার নেমস্পেসের জন্য ডিফল্ট 'n', অপ্রিভিলেজড ব্যবহারকারীদের জন্য মেমরি সীমিত করতে MEMCG সুপারিশ করে।
লিনাক্স ইউজার নেমস্পেসের প্রধান নিরাপত্তা ঝুঁকিগুলি কী কী?
প্রধান ঝুঁকিগুলির মধ্যে নতুন নেমস্পেসে **SYS_CAP_ADMIN** এবং **CAP_NET_ADMIN** এর মতো ক্ষমতা পুনরুদ্ধার অন্তর্ভুক্ত, যা নিরাপত্তা বিধিনিষেধ বাইপাস করতে এবং কার্নেল দুর্বলতাগুলি লক্ষ্য করতে শোষণ করা যেতে পারে, বিশেষত নেটওয়ার্কিং সাবসিস্টেমে।
🇩🇪 Deutsch
Linux-Container-Sicherheit: Risiken von Benutzernamespaces in 500 Zeilen
Erica Windisch warnt, dass Linux-Benutzernamespaces möglicherweise nicht sicher genug sind. Wenn einem echten Root-Benutzer die Fähigkeit SYS_CAP_ADMIN entzogen wurde, aber er dann einen Benutzernamespace erstellt, wird die Fähigkeit für den gefälschten Root-Benutzer wiederhergestellt. Vor der Erstellung des Namespace würde 'mount' verweigert, aber nach der Erstellung würde der Systemaufruf 'mount' in begrenztem Umfang wieder funktionieren. Dies ist bedeutsam genug, dass bei einem echten Root-Benutzer und einem Kernel mit Benutzernamespaces die Linux-Fähigkeiten vollständig untergraben werden können.
Die Manpage von user_namespaces bestätigt, dass der von clone(2) mit CLONE_NEWUSER erstellte Kindprozess mit einem vollständigen Satz von Fähigkeiten im neuen Benutzernamespace beginnt. Benutzernamespaces ermöglichen "interessante" Überschneidungen von Sicherheitsmodellen und gewähren dem neuen Namespace vollständige Root-Fähigkeiten. Dies kann es CLONE_NEWUSER ermöglichen, CAP_NET_ADMIN effektiv über andere Netzwerk-Namespaces zu verwenden, insbesondere wenn Container nicht verwendet werden. Prozesse mit CAP_NET_ADMIN haben eine große Angriffsfläche und haben zu mehreren Kernel-Schwachstellen geführt, was es einem unprivilegierten Benutzernamespace möglicherweise ermöglicht, das Netzwerk-Subsystem des Kernels anzugreifen.
Demonstrationen zeigen, dass auf einem Host mit kompilierten Benutzernamespaces ein Benutzer mit ioctl und SIOCBRADDBR eine Brücke erstellen kann, obwohl das Setzen von Dateifähigkeiten mit cap_set_file fehlschlägt. Ubuntu aktiviert CONFIG_USER_NS, patcht es jedoch so, dass die unprivilegierte Nutzung mit dem Sysctl unprivileged_userns_clone deaktiviert werden kann. Die Kernel-Konfiguration hat für Benutzernamespaces standardmäßig 'n' und empfiehlt MEMCG, um den Speicher unprivilegierter Benutzer zu begrenzen.
Was sind die wichtigsten Sicherheitsrisiken von Linux-Benutzernamespaces?
Zu den Hauptrisiken gehört die Wiederherstellung von Fähigkeiten wie **SYS_CAP_ADMIN** und **CAP_NET_ADMIN** in neuen Namespaces, die ausgenutzt werden können, um Sicherheitsbeschränkungen zu umgehen und Kernel-Schwachstellen anzugreifen, insbesondere im Netzwerk-Subsystem.
🇪🇸 Español
Seguridad de contenedores Linux: riesgos de los espacios de nombres de usuario en 500 líneas
Erica Windisch advierte que los espacios de nombres de usuario de Linux podrían no ser lo suficientemente seguros. Si a un usuario root real se le ha eliminado la capacidad SYS_CAP_ADMIN pero luego crea un espacio de nombres de usuario, la capacidad se restaura para el usuario root falso. Antes de crear el espacio de nombres, 'mount' sería denegado, pero después de la creación, la llamada al sistema 'mount' funcionaría nuevamente de manera limitada. Esto es lo suficientemente significativo como para que, dado un usuario root real y un kernel con espacios de nombres de usuario, las capacidades de Linux puedan ser completamente subvertidas.
La página man de user_namespaces confirma que el proceso hijo creado por clone(2) con CLONE_NEWUSER comienza con un conjunto completo de capacidades en el nuevo espacio de nombres. Los espacios de nombres de usuario permiten intersecciones "interesantes" de modelos de seguridad, otorgando capacidades root completas al nuevo espacio de nombres. Esto puede permitir que CLONE_NEWUSER use efectivamente CAP_NET_ADMIN sobre otros espacios de nombres de red, especialmente si los contenedores no están en uso. Los procesos con CAP_NET_ADMIN tienen una gran superficie de ataque y han resultado en varias vulnerabilidades del kernel, lo que podría permitir que un espacio de nombres de usuario no privilegiado apunte a la superficie de ataque del subsistema de red del kernel.
Las demostraciones muestran que en un host con espacios de nombres de usuario compilados, un usuario puede crear un puente usando ioctl con SIOCBRADDBR, aunque falla al establecer capacidades de archivo con cap_set_file. Ubuntu habilita CONFIG_USER_NS pero lo parchea para que el uso no privilegiado pueda deshabilitarse con el sysctl unprivileged_userns_clone. La configuración del kernel tiene como valor predeterminado 'n' para los espacios de nombres de usuario, recomendando MEMCG para limitar la memoria de los usuarios no privilegiados.
¿Cuáles son los principales riesgos de seguridad de los espacios de nombres de usuario de Linux?
Los principales riesgos incluyen la restauración de capacidades como **SYS_CAP_ADMIN** y **CAP_NET_ADMIN** en nuevos espacios de nombres, que pueden explotarse para eludir restricciones de seguridad y apuntar a vulnerabilidades del kernel, especialmente en el subsistema de red.
🇫🇷 Français
Sécurité des conteneurs Linux : risques des espaces de noms utilisateur en 500 lignes
Erica Windisch avertit que les espaces de noms utilisateur de Linux pourraient ne pas être assez sécurisés. Si un utilisateur root réel a vu sa capacité SYS_CAP_ADMIN supprimée mais crée ensuite un espace de noms utilisateur, la capacité est restaurée pour l'utilisateur root factice. Avant la création de l'espace de noms, 'mount' serait refusé, mais après la création, l'appel système 'mount' fonctionnerait à nouveau de manière limitée. C'est suffisamment significatif pour que, étant donné un utilisateur root réel et un noyau avec des espaces de noms utilisateur, les capacités de Linux puissent être complètement subverties.
La page de manuel de user_namespaces confirme que le processus enfant créé par clone(2) avec CLONE_NEWUSER démarre avec un ensemble complet de capacités dans le nouvel espace de noms utilisateur. Les espaces de noms utilisateur permettent des intersections "intéressantes" de modèles de sécurité, accordant des capacités root complètes au nouvel espace de noms. Cela peut permettre à CLONE_NEWUSER d'utiliser efficacement CAP_NET_ADMIN sur d'autres espaces de noms réseau, surtout si les conteneurs ne sont pas utilisés. Les processus avec CAP_NET_ADMIN ont une grande surface d'attaque et ont entraîné plusieurs vulnérabilités du noyau, permettant potentiellement à un espace de noms utilisateur non privilégié de cibler le sous-système réseau du noyau.
Les démonstrations montrent que sur un hôte avec des espaces de noms utilisateur compilés, un utilisateur peut créer un pont en utilisant ioctl avec SIOCBRADDBR, bien que la définition des capacités de fichier avec cap_set_file échoue. Ubuntu active CONFIG_USER_NS mais le corrige pour que l'utilisation non privilégiée puisse être désactivée avec le sysctl unprivileged_userns_clone. La configuration du noyau est par défaut à 'n' pour les espaces de noms utilisateur, recommandant MEMCG pour limiter la mémoire des utilisateurs non privilégiés.
Quels sont les principaux risques de sécurité des espaces de noms utilisateur de Linux ?
Les principaux risques incluent la restauration de capacités comme **SYS_CAP_ADMIN** et **CAP_NET_ADMIN** dans de nouveaux espaces de noms, qui peuvent être exploitées pour contourner les restrictions de sécurité et cibler les vulnérabilités du noyau, en particulier dans le sous-système réseau.
🇮🇳 हिन्दी
लिनक्स कंटेनर सुरक्षा: 500 लाइनों में उपयोगकर्ता नेमस्पेस जोखिम
एरिका विंडिश ने चेतावनी दी है कि लिनक्स उपयोगकर्ता नेमस्पेस पर्याप्त सुरक्षित नहीं हो सकते हैं। यदि एक वास्तविक रूट उपयोगकर्ता से SYS_CAP_ADMIN क्षमता हटा दी गई है, लेकिन फिर वह एक उपयोगकर्ता नेमस्पेस बनाता है, तो यह क्षमता नकली रूट उपयोगकर्ता के लिए बहाल हो जाती है। नेमस्पेस बनाने से पहले, 'mount' को अस्वीकार कर दिया जाएगा, लेकिन निर्माण के बाद, 'mount' सिस्कॉल सीमित तरीके से फिर से काम करेगा। यह इतना महत्वपूर्ण है कि एक वास्तविक रूट उपयोगकर्ता और उपयोगकर्ता नेमस्पेस वाले कर्नेल को देखते हुए, लिनक्स क्षमताओं को पूरी तरह से कमजोर किया जा सकता है।
user_namespaces के मैन पेज की पुष्टि करता है कि clone(2) के साथ CLONE_NEWUSER का उपयोग करके बनाई गई चाइल्ड प्रक्रिया नए उपयोगकर्ता नेमस्पेस में क्षमताओं का एक पूरा सेट लेकर शुरू होती है। उपयोगकर्ता नेमस्पेस सुरक्षा मॉडल के "दिलचस्प" प्रतिच्छेदन की अनुमति देते हैं, जो नए नेमस्पेस को पूर्ण रूट क्षमताएं प्रदान करते हैं। यह CLONE_NEWUSER को अन्य नेटवर्क नेमस्पेस पर प्रभावी ढंग से CAP_NET_ADMIN का उपयोग करने की अनुमति दे सकता है, खासकर यदि कंटेनर उपयोग में नहीं हैं। CAP_NET_ADMIN वाली प्रक्रियाओं में हमले की बड़ी सतह होती है और इसके परिणामस्वरूप कई कर्नेल कमजोरियां हुई हैं, जो संभावित रूप से एक अनपरिवर्तनीय उपयोगकर्ता नेमस्पेस को कर्नेल नेटवर्किंग सबसिस्टम को लक्षित करने की अनुमति देती हैं।
प्रदर्शनों से पता चलता है कि उपयोगकर्ता नेमस्पेस के साथ संकलित होस्ट पर, एक उपयोगकर्ता ioctl और SIOCBRADDBR के साथ एक ब्रिज बना सकता है, हालांकि cap_set_file के साथ फ़ाइल क्षमताओं को सेट करना विफल रहता है। Ubuntu CONFIG_USER_NS को सक्षम करता है लेकिन इसे पैच करता है ताकि sysctl unprivileged_userns_clone के साथ अनपरिवर्तनीय उपयोग को अक्षम किया जा सके। कर्नेल कॉन्फ़िगरेशन उपयोगकर्ता नेमस्पेस के लिए डिफ़ॉल्ट रूप से 'n' है, जो अनपरिवर्तनीय उपयोगकर्ताओं के लिए मेमोरी सीमित करने के लिए MEMCG की सिफारिश करता है।
लिनक्स उपयोगकर्ता नेमस्पेस के मुख्य सुरक्षा जोखिम क्या हैं?
मुख्य जोखिमों में नए नेमस्पेस में **SYS_CAP_ADMIN** और **CAP_NET_ADMIN** जैसी क्षमताओं की बहाली शामिल है, जिनका उपयोग सुरक्षा प्रतिबंधों को बायपास करने और कर्नेल कमजोरियों को लक्षित करने के लिए किया जा सकता है, विशेष रूप से नेटवर्किंग सबसिस्टम में।
🇮🇩 Bahasa Indonesia
Keamanan Kontainer Linux: Risiko Namespace Pengguna dalam 500 Baris
Erica Windisch memperingatkan bahwa namespace pengguna Linux mungkin tidak cukup aman. Jika pengguna root asli telah dihapus kapabilitas SYS_CAP_ADMIN tetapi kemudian membuat namespace pengguna, kapabilitas tersebut dipulihkan untuk pengguna root palsu. Sebelum membuat namespace, 'mount' akan ditolak, tetapi setelah pembuatan, panggilan sistem 'mount' akan berfungsi lagi secara terbatas. Ini cukup signifikan sehingga dengan pengguna root asli dan kernel dengan namespace pengguna, kapabilitas Linux dapat sepenuhnya disubversi.
Halaman manual user_namespaces mengonfirmasi bahwa proses anak yang dibuat oleh clone(2) dengan CLONE_NEWUSER dimulai dengan serangkaian kapabilitas lengkap di namespace pengguna baru. Namespace pengguna memungkinkan perpotongan "menarik" dari model keamanan, memberikan kapabilitas root penuh ke namespace baru. Ini dapat memungkinkan CLONE_NEWUSER untuk secara efektif menggunakan CAP_NET_ADMIN di atas namespace jaringan lain, terutama jika kontainer tidak digunakan. Proses dengan CAP_NET_ADMIN memiliki permukaan serangan yang besar dan telah mengakibatkan sejumlah kerentanan kernel, yang berpotensi memungkinkan namespace pengguna yang tidak memiliki hak istimewa untuk menargetkan subsistem jaringan kernel.
Demonstrasi menunjukkan bahwa pada host dengan namespace pengguna yang dikompilasi, pengguna dapat membuat jembatan menggunakan ioctl dengan SIOCBRADDBR, meskipun mengatur kapabilitas file dengan cap_set_file gagal. Ubuntu mengaktifkan CONFIG_USER_NS tetapi menambalnya sehingga penggunaan tanpa hak istimewa dapat dinonaktifkan dengan sysctl unprivileged_userns_clone. Konfigurasi kernel default ke 'n' untuk namespace pengguna, merekomendasikan MEMCG untuk membatasi memori pengguna tanpa hak istimewa.
Apa risiko keamanan utama dari namespace pengguna Linux?
Risiko utama termasuk pemulihan kapabilitas seperti **SYS_CAP_ADMIN** dan **CAP_NET_ADMIN** di namespace baru, yang dapat dieksploitasi untuk melewati pembatasan keamanan dan menargetkan kerentanan kernel, terutama di subsistem jaringan.
🇯🇵 日本語
Linuxコンテナのセキュリティ:500行のコードで見るユーザー名前空間のリスク
エリカ・ウィンディッシュ氏は、Linuxユーザー名前空間が十分に安全でない可能性があると警告しています。実際のrootユーザーからSYS_CAP_ADMINケーパビリティが削除されたが、その後ユーザー名前空間を作成した場合、そのケーパビリティは偽のrootユーザーに対して復元されます。名前空間を作成する前は'mount'が拒否されますが、作成後は'mount'システムコールが制限付きで再び機能します。これは、実際のrootユーザーとユーザー名前空間を備えたカーネルがあれば、Linuxのケーパビリティが完全に覆される可能性があるほど重要です。
user_namespacesのマニュアルページは、clone(2)でCLONE_NEWUSERを使用して作成された子プロセスが、新しいユーザー名前空間で完全なケーパビリティセットを保持して開始することを確認しています。ユーザー名前空間は、セキュリティモデルの「興味深い」交差を可能にし、新しい名前空間に完全なrootケーパビリティを付与します。これにより、CLONE_NEWUSERは、特にコンテナが使用されていない場合に、他のネットワーク名前空間に対してCAP_NET_ADMINを効果的に使用できる可能性があります。CAP_NET_ADMINを持つプロセスは攻撃対象領域が大きく、多くのカーネル脆弱性を引き起こしており、特権のないユーザー名前空間がカーネルのネットワークサブシステムを標的にする可能性があります。
デモンストレーションでは、ユーザー名前空間がコンパイルされたホスト上で、ユーザーがioctlとSIOCBRADDBRを使用してブリッジを作成できることが示されていますが、cap_set_fileでファイルケーパビリティを設定することは失敗します。UbuntuはCONFIG_USER_NSを有効にしていますが、sysctl unprivileged_userns_cloneで特権のない使用を無効にできるようにパッチを適用しています。カーネル設定はユーザー名前空間に対してデフォルトで'n'であり、特権のないユーザーのメモリを制限するためにMEMCGを推奨しています。
Linuxユーザー名前空間の主なセキュリティリスクは何ですか?
主なリスクには、新しい名前空間での**SYS_CAP_ADMIN**や**CAP_NET_ADMIN**などのケーパビリティの復元が含まれ、これらはセキュリティ制限を回避し、特にネットワークサブシステムのカーネル脆弱性を標的にするために悪用される可能性があります。
🇧🇷 Português
Segurança de contêineres Linux: riscos de namespaces de usuário em 500 linhas
Erica Windisch alerta que os namespaces de usuário do Linux podem não ser seguros o suficiente. Se um usuário root real teve a capacidade SYS_CAP_ADMIN removida, mas depois cria um namespace de usuário, a capacidade é restaurada para o usuário root falso. Antes de criar o namespace, 'mount' seria negado, mas após a criação, a chamada de sistema 'mount' funcionaria novamente de forma limitada. Isso é significativo o suficiente para que, dado um usuário root real e um kernel com namespaces de usuário, as capacidades do Linux possam ser completamente subvertidas.
A página de manual de user_namespaces confirma que o processo filho criado por clone(2) com CLONE_NEWUSER começa com um conjunto completo de capacidades no novo namespace de usuário. Os namespaces de usuário permitem interseções "interessantes" de modelos de segurança, concedendo capacidades de root completas ao novo namespace. Isso pode permitir que CLONE_NEWUSER use efetivamente CAP_NET_ADMIN sobre outros namespaces de rede, especialmente se os contêineres não estiverem em uso. Processos com CAP_NET_ADMIN têm uma grande superfície de ataque e resultaram em várias vulnerabilidades do kernel, potencialmente permitindo que um namespace de usuário não privilegiado ataque o subsistema de rede do kernel.
Demonstrações mostram que em um host com namespaces de usuário compilados, um usuário pode criar uma ponte usando ioctl com SIOCBRADDBR, embora definir capacidades de arquivo com cap_set_file falhe. O Ubuntu habilita CONFIG_USER_NS, mas o corrige para que o uso não privilegiado possa ser desabilitado com o sysctl unprivileged_userns_clone. A configuração do kernel tem como padrão 'n' para namespaces de usuário, recomendando MEMCG para limitar a memória de usuários não privilegiados.
Quais são os principais riscos de segurança dos namespaces de usuário do Linux?
Os principais riscos incluem a restauração de capacidades como **SYS_CAP_ADMIN** e **CAP_NET_ADMIN** em novos namespaces, que podem ser exploradas para contornar restrições de segurança e atingir vulnerabilidades do kernel, especialmente no subsistema de rede.
🇷🇺 Русский
Безопасность контейнеров Linux: риски пользовательских пространств имен в 500 строках
Эрика Виндиш предупреждает, что пользовательские пространства имен Linux могут быть недостаточно безопасными. Если у реального root-пользователя была удалена возможность SYS_CAP_ADMIN, но затем он создает пользовательское пространство имен, возможность восстанавливается для поддельного root-пользователя. До создания пространства имен 'mount' был бы отклонен, но после создания системный вызов 'mount' снова заработает, хотя и в ограниченном виде. Это достаточно значимо, чтобы при реальном root-пользователе и ядре с пользовательскими пространствами имен возможности Linux могли быть полностью подорваны.
Страница руководства user_namespaces подтверждает, что дочерний процесс, созданный с помощью clone(2) с CLONE_NEWUSER, начинает с полного набора возможностей в новом пользовательском пространстве имен. Пользовательские пространства имен допускают "интересные" пересечения моделей безопасности, предоставляя полные root-возможности новому пространству имен. Это может позволить CLONE_NEWUSER эффективно использовать CAP_NET_ADMIN над другими сетевыми пространствами имен, особенно если контейнеры не используются. Процессы с CAP_NET_ADMIN имеют большую поверхность атаки и привели к ряду уязвимостей ядра, что потенциально позволяет непривилегированному пользовательскому пространству имен атаковать подсистему сетевого взаимодействия ядра.
Демонстрации показывают, что на хосте с скомпилированными пользовательскими пространствами имен пользователь может создать мост с помощью ioctl с SIOCBRADDBR, хотя установка файловых возможностей с помощью cap_set_file не удается. Ubuntu включает CONFIG_USER_NS, но патчит его так, чтобы непривилегированное использование можно было отключить с помощью sysctl unprivileged_userns_clone. Конфигурация ядра по умолчанию имеет значение 'n' для пользовательских пространств имен, рекомендуя MEMCG для ограничения памяти непривилегированных пользователей.
Каковы основные риски безопасности пользовательских пространств имен Linux?
Основные риски включают восстановление таких возможностей, как **SYS_CAP_ADMIN** и **CAP_NET_ADMIN**, в новых пространствах имен, которые могут быть использованы для обхода ограничений безопасности и атаки на уязвимости ядра, особенно в подсистеме сетевого взаимодействия.
🇨🇳 简体中文
Linux容器安全:500行代码中的用户命名空间风险
Erica Windisch警告说,Linux用户命名空间可能不够安全。如果真实root用户被移除了SYS_CAP_ADMIN能力,但随后创建了一个用户命名空间,该能力会为假root用户恢复。在创建命名空间之前,'mount'会被拒绝,但创建之后,'mount'系统调用会以有限的方式重新工作。这意义重大,以至于在真实root用户和具有用户命名空间的内核下,Linux能力可能被完全颠覆。
user_namespaces的手册页确认,通过clone(2)使用CLONE_NEWUSER创建的子进程在新用户命名空间中拥有一整套能力。用户命名空间允许安全模型的“有趣”交叉,将完整root能力授予新命名空间。这允许CLONE_NEWUSER有效地在其他网络命名空间上使用CAP_NET_ADMIN,尤其是在未使用容器的情况下。具有CAP_NET_ADMIN的进程攻击面很大,并已导致多个内核漏洞,可能允许无特权用户命名空间针对内核网络子系统。
演示表明,在编译了用户命名空间的主机上,用户可以使用ioctl和SIOCBRADDBR创建桥接,但使用cap_set_file设置文件能力会失败。Ubuntu启用了CONFIG_USER_NS,但打了补丁,使得可以通过sysctl unprivileged_userns_clone禁用无特权使用。内核配置对用户命名空间默认值为'n',建议启用MEMCG以限制无特权用户的内存。
Linux用户命名空间的主要安全风险是什么?
主要风险包括在新命名空间中恢复**SYS_CAP_ADMIN**和**CAP_NET_ADMIN**等能力,这些能力可能被利用来绕过安全限制并针对内核漏洞,尤其是在网络子系统中。