cgroups v1 میں کمزوری جو الگ تھلگ کنٹینر سے فرار کی اجازت دیتی ہے۔

لینکس کرنل میں cgroups v2022 وسائل کی حد بندی کے طریقہ کار کے نفاذ میں کمزوری (CVE-0492-1) کی تفصیلات، جسے الگ تھلگ کنٹینرز سے بچنے کے لیے استعمال کیا جا سکتا ہے، انکشاف کیا گیا ہے۔ یہ مسئلہ لینکس کرنل 2.6.24 کے بعد سے موجود ہے اور اسے کرنل ریلیز 5.16.12، 5.15.26، 5.10.97، 5.4.177، 4.19.229، 4.14.266، اور 4.9.301 میں طے کیا گیا تھا۔ آپ ان صفحات پر تقسیم میں پیکیج اپ ڈیٹس کی اشاعتوں کی پیروی کر سکتے ہیں: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

یہ خطرہ ریلیز_ایجنٹ فائل ہینڈلر میں منطق کی خرابی کی وجہ سے ہے جو ہینڈلر کو مکمل مراعات کے ساتھ چلاتے وقت مناسب جانچ کرنے میں ناکام رہتا ہے۔ ریلیز_ایجنٹ فائل کا استعمال اس پروگرام کی وضاحت کرنے کے لیے کیا جاتا ہے جو کرنل کے ذریعے عمل میں لایا جائے گا جب سی گروپ میں کوئی عمل ختم ہو جاتا ہے۔ یہ پروگرام روٹ کے نام کی جگہ میں روٹ کے طور پر اور تمام "صلاحیتوں" کے ساتھ چلتا ہے۔ یہ فرض کیا گیا تھا کہ ریلیز_ایجنٹ سیٹنگ تک صرف ایڈمنسٹریٹر کی رسائی تھی، لیکن حقیقت میں چیک صرف روٹ یوزر تک رسائی دینے تک ہی محدود تھے، جس نے کنٹینر سے یا روٹ صارف کی طرف سے ایڈمنسٹریٹر کے حقوق کے بغیر ترتیب کو تبدیل نہیں کیا تھا (CAP_SYS_ADMIN )۔

اس سے پہلے، اس طرح کی خصوصیت کو خطرے کے طور پر نہیں سمجھا جاتا تھا، لیکن صارف کے نام کی جگہ (صارف کے نام کی جگہوں) کی آمد کے ساتھ صورت حال بدل گئی ہے، جو آپ کو کنٹینرز میں الگ الگ روٹ یوزرز بنانے کی اجازت دیتی ہے جو کہ روٹ یوزر کے ساتھ اوورلیپ نہیں ہوتے ہیں۔ اہم ماحول. اس کے مطابق، حملے کے لیے، آپ کے ریلیز_ایجنٹ ہینڈلر کو ایک کنٹینر میں جوڑنا کافی ہے جس کا اپنا روٹ صارف ایک علیحدہ صارف ID جگہ میں ہے، جسے، عمل مکمل کرنے کے بعد، مرکزی ماحول کے مکمل مراعات کے ساتھ عمل میں لایا جائے گا۔

پہلے سے طے شدہ طور پر، cgroupfs کو صرف پڑھنے کے موڈ میں ایک کنٹینر میں نصب کیا جاتا ہے، لیکن اگر آپ کے پاس CAP_SYS_ADMIN حقوق ہیں یا unshare سسٹم کال کا استعمال کرتے ہوئے ایک علیحدہ صارف کے نام کی جگہ کے ساتھ ایک نیسٹڈ کنٹینر بنا کر، اس سیوڈوف کو تحریری موڈ میں دوبارہ نصب کرنے میں کوئی مسئلہ نہیں ہے، جس میں CAP_SYS_ADMIN حقوق بنائے گئے کنٹینر کے لیے دستیاب ہیں۔

cgroups v1 میں کمزوری جو الگ تھلگ کنٹینر سے فرار کی اجازت دیتی ہے۔

حملہ کیا جا سکتا ہے اگر آپ کو کسی الگ تھلگ کنٹینر میں روٹ مراعات حاصل ہوں یا no_new_privs پرچم کے بغیر کنٹینر چلاتے وقت، جو اضافی مراعات حاصل کرنے سے منع کرتا ہے۔ سسٹم کے پاس صارف کے نام کی جگہوں کے لیے سپورٹ ہونا ضروری ہے (Ubuntu اور Fedora میں ڈیفالٹ کے ذریعے فعال، لیکن Debian اور RHEL میں فعال نہیں) اور اسے روٹ cgroup v1 تک رسائی حاصل ہو (مثال کے طور پر، Docker روٹ RDMA cgroup میں کنٹینرز چلاتا ہے)۔ حملہ اس صورت میں بھی ممکن ہے جب آپ کے پاس CAP_SYS_ADMIN مراعات ہوں، ایسی صورت میں صارف کے نام کی جگہوں کے لیے سپورٹ اور cgroup v1 روٹ کے درجہ بندی تک رسائی کی ضرورت نہیں ہے۔

ایک الگ تھلگ کنٹینر سے فرار ہونے کے علاوہ، کمزوری روٹ صارف کے ذریعے "صلاحیتوں" کے بغیر یا CAP_DAC_OVERRIDE حقوق کے حامل کسی بھی صارف کے ذریعے شروع کیے جانے والے عمل کی بھی اجازت دیتی ہے (حملے کے لیے فائل تک رسائی کی ضرورت ہوتی ہے /sys/fs/cgroup/*/release_agent، جو جڑ کی ملکیت) تمام نظامی "صلاحیتوں" تک رسائی حاصل کرنے کے لیے۔

یہ نوٹ کیا جاتا ہے کہ کنٹینرز کی اضافی تنہائی کے لیے Seccomp، AppArmor یا SELinux پروٹیکشن میکانزم کا استعمال کرتے وقت کمزوری کا فائدہ نہیں اٹھایا جا سکتا، کیونکہ Seccomp unshare() سسٹم کال تک رسائی کو روکتا ہے، اور AppArmor اور SELinux لکھنے کے موڈ میں cgroupfs کو بڑھانے کی اجازت نہیں دیتے ہیں۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں