لینکس کرنل میں کمزوری جو صرف پڑھنے والی فائلوں کو خراب ہونے کی اجازت دیتی ہے۔

لینکس کرنل (CVE-2022-0847) میں ایک کمزوری کی نشاندہی کی گئی ہے جو صفحہ کے کیشے کے مواد کو کسی بھی فائل کے لیے اوور رائٹ کرنے کی اجازت دیتا ہے، بشمول وہ فائلیں جو صرف پڑھنے کے موڈ میں ہیں، O_RDONLY پرچم کے ساتھ کھولی گئی ہیں، یا فائل سسٹم پر واقع ہیں۔ صرف پڑھنے کے موڈ میں نصب۔ عملی اصطلاحات میں، کمزوری کا استعمال کوڈ کو من مانی عمل میں داخل کرنے یا کھلی فائلوں میں کرپٹ ڈیٹا کے لیے کیا جا سکتا ہے۔ مثال کے طور پر، آپ sshd عمل کے لیے authorized_keys فائل کے مواد کو تبدیل کر سکتے ہیں۔ استحصال کا ایک پروٹو ٹائپ جانچ کے لیے دستیاب ہے۔

اس مسئلے کو ڈرٹی پائپ کا کوڈ نام دیا گیا ہے، جیسا کہ 2016 میں شناخت کی گئی ڈرٹی کاؤ کے نازک خطرے کی طرح ہے۔ واضح رہے کہ خطرے کی سطح کے لحاظ سے، ڈرٹی پائپ اسی سطح پر ہے جس طرح ڈرٹی کاؤ، لیکن کام کرنا بہت آسان ہے۔ لاگ سرور سے کمپریسڈ آرکائیوز کو ڈاؤن لوڈ کرنے والے سسٹم میں نیٹ ورک پر ڈاؤن لوڈ کی گئی فائلوں کی متواتر بدعنوانی کے بارے میں شکایات کے تجزیے کے دوران کمزوری کی نشاندہی کی گئی (لوڈڈ سسٹم پر 37 ماہ میں 3 بدعنوانی)، جس کی تیاری میں splice() آپریشن کا استعمال کیا گیا۔ اور بے نام پائپ۔

یہ خطرہ اگست 5.8 میں ریلیز ہونے والے لینکس کرنل 2020 سے شروع ہوتا ہے، یعنی Debian 11 میں موجود ہے، لیکن Ubuntu 20.04 LTS میں بیس کرنل کو متاثر نہیں کرتا ہے۔ RHEL 8.x اور openSUSE/SUSE 15 دانا ابتدائی طور پر پرانی شاخوں پر مبنی ہیں، لیکن یہ ممکن ہے کہ ان میں تبدیلی کی وجہ سے مسئلہ کا بیک پورٹ کیا گیا ہو (ابھی تک کوئی درست ڈیٹا نہیں ہے)۔ آپ ان صفحات پر تقسیم میں پیکیج اپ ڈیٹس کی اشاعت کو ٹریک کرسکتے ہیں: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. 5.16.11، 5.15.25 اور 5.10.102 ریلیز میں کمزوری کے لیے ایک حل تجویز کیا گیا تھا۔ فکس اینڈرائیڈ پلیٹ فارم میں استعمال ہونے والے دانا میں بھی شامل ہے۔

یہ کمزوری فنکشنز copy_page_to_iter_pipe() اور push_pipe() کے کوڈ میں "بف-> جھنڈوں" کی قدر کی ابتدا نہ ہونے کی وجہ سے ہوتی ہے، اس حقیقت کے باوجود کہ کسی ڈھانچے کو مختص کرتے وقت اور کچھ ہیرا پھیری کے دوران میموری کو صاف نہیں کیا جاتا ہے۔ بے نام پائپ، ایک اور آپریشن سے ایک قدر۔ اس خصوصیت کو استعمال کرتے ہوئے، ایک غیر مراعات یافتہ مقامی صارف پرچم میں PIPE_BUF_FLAG_CAN_MERGE قدر کی ظاہری شکل حاصل کر سکتا ہے، جو آپ کو خصوصی طور پر تیار کردہ بے نام پائپ پر نیا ڈیٹا لکھ کر صفحہ کیشے میں ڈیٹا اوور رائٹنگ کو منظم کرنے کی اجازت دیتا ہے۔

حملے کے لیے، ٹارگٹ فائل کو پڑھنے کے قابل ہونا چاہیے، اور چونکہ پائپ پر لکھتے وقت رسائی کے حقوق کی جانچ نہیں کی جاتی ہے، اس لیے صفحہ کیشے میں تبدیلی صرف پڑھنے کے لیے نصب پارٹیشنز میں موجود فائلوں کے لیے بھی کی جا سکتی ہے (مثال کے طور پر، فائلز c CD- ROM)۔ صفحہ کیشے میں معلومات کو تبدیل کرنے کے بعد، فائل سے ڈیٹا پڑھتے وقت، عمل کو اصل ڈیٹا نہیں، بلکہ تبدیل شدہ ڈیٹا موصول ہوگا۔

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

ماخذ: opennet.ru

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