Log4Shell، ایک انٹرنیٹ کمزوری، نے حال ہی میں لاکھوں مشینوں کو متاثر کیا۔ Log4j، سافٹ ویئر کا ایک غیر واضح لیکن تقریباً ہر جگہ موجود ہے، اس کا سبب بنتا ہے۔
Log4j کا استعمال ان تمام اعمال کو لاگ کرنے کے لیے کیا جاتا ہے جو مختلف کمپیوٹر سسٹمز میں پردے کے پیچھے ہوتے ہیں۔
یہ اوپن سورس لاگنگ لائبریری پر مبنی ہے جسے کاروبار اور حتیٰ کہ حکومتی تنظیمیں زیادہ تر ایپلی کیشنز میں استعمال کرتی ہیں۔
سائبر سیکیورٹی کے بدترین سوراخوں میں سے ایک ہونے کے ناطے، آپ کے سسٹمز کو اس خطرے سے بچانا بہت ضروری ہے۔ لیکن کس طرح؟
آئیے Log4j کے خطرے کو تفصیل سے اور اس کے لیے تمام ممکنہ حل تلاش کریں۔
Log4j کیا ہے؟
Log4j ایک ہے۔ آزاد مصدر لاگنگ فریم ورک جو سافٹ ویئر ڈویلپرز کو اپنی ایپلی کیشنز میں مختلف ڈیٹا ریکارڈ کرنے کے قابل بناتا ہے۔ یہ اپاچی لاگنگ سروسز پروجیکٹ کا ایک جزو ہے، جو کہ کے ذریعے چلایا جاتا ہے۔ اپاچی سافٹ ویئر فاؤنڈیشن.
سیکڑوں ویب سائٹس اور ایپس Log4j کو ڈیبگنگ اور دیگر استعمال کے لیے لاگ ان ڈیٹا جیسے اہم کام انجام دینے کے لیے استعمال کرتی ہیں۔
جب آپ کسی ناقص آن لائن لنک پر ان پٹ یا کلک کرتے ہیں اور 404 ایرر نوٹس حاصل کرتے ہیں، تو یہ کام پر Log4j کی متواتر مثال ہے۔ آپ نے جس ویب لنک تک رسائی حاصل کرنے کی کوشش کی ہے اس کے ڈومین کو چلانے والا ویب سرور آپ کو مطلع کرتا ہے کہ ایسا کوئی ویب صفحہ موجود نہیں ہے۔ یہ سرور کے سسٹم ایڈمنسٹریٹرز کے لیے Log4j میں ایونٹ کو بھی لاگ کرتا ہے۔
پورے سافٹ ویئر پروگراموں میں، اسی طرح کے تشخیصی سگنل استعمال کیے جاتے ہیں۔ آن لائن گیم مائن کرافٹ میں، مثال کے طور پر، سرور لاگ 4j کا استعمال کرتا ہے سرگرمی کو لاگ کرنے کے لیے جیسے کہ کل استعمال شدہ RAM اور کنسول میں بھیجی گئی صارف کی ہدایات۔
کمزوری کیسے ہوتی ہے؟
Lookups Log4j 2.0 میں متعارف کرایا گیا ایک نیا فیچر ہے، جو لاگ انٹریز میں اضافی معلومات کو شامل کرنے میں مدد کرتا ہے۔ ان میں سے ایک تلاش JNDI (جاوا نامنگ اور ڈائریکٹری انٹرفیس) تلاش ہے، جو ڈائریکٹری سروس کے ساتھ بات چیت کے لیے جاوا API ہے۔
اس نقطہ نظر کو استعمال کرتے ہوئے، اندرونی صارف کی شناخت کو اصل صارف کے ناموں کے ساتھ میپ کیا جا سکتا ہے۔ یہ استفسار نئے دریافت شدہ RCE خطرے کو بے نقاب کرتا ہے، کیونکہ LDAP سرور کی طرف سے فراہم کردہ ڈیٹا کی قسموں میں سے ایک URI ہے جو جاوا کلاس کی طرف اشارہ کرتی ہے، جسے پھر میموری میں لوڈ کیا جاتا ہے اور Log4j مثال کے ذریعے چلایا جاتا ہے۔
Log4j لائبریری کی ان پٹ توثیق میں کمزوری کی وجہ سے، یہ ممکن ہے کہ کسی غیر بھروسہ مند ذریعہ سے صوابدیدی LDAP سرور کا انجیکشن لگایا جائے۔ چونکہ ڈویلپرز یہ سمجھتے ہیں کہ لاگز کو بھیجے گئے ڈیٹا کو سادہ متن کے طور پر ہینڈل کیا جائے گا، اس لیے کوئی اضافی ان پٹ توثیق نہیں کی جاتی ہے، اور خطرناک صارف کا ان پٹ لاگز میں داخل ہوتا ہے۔
ایک لاگ بیان اس طرح نظر آسکتا ہے:
ایک بدنیتی پر مبنی صارف اب URL پیرامیٹر میں بدمعاش LDAP سرور کا حوالہ دیتے ہوئے JNDI تلاش داخل کرے گا۔ جے این ڈی آئی کی تلاش اس طرح ہوگی:
Log4j لائبریری پھر حملہ آور.com پر اس LDAP سرور کے ساتھ ڈائرکٹری کی معلومات حاصل کرنے کے لیے بات کرتی ہے، بشمول جاوا فیکٹری اور جاوا کوڈ بیس کی اقدار۔
ان دو قدروں میں حملہ آور کی جاوا کلاس شامل ہے، جسے پھر میموری میں لوڈ کیا جاتا ہے اور Log4j مثال کے ذریعے کوڈ پر عمل درآمد مکمل کرتے ہوئے اس پر عمل درآمد کیا جاتا ہے۔
کس کو خطرہ ہے؟
Log4j کمزوری ناقابل یقین حد تک وسیع ہے، جو کاروباری ایپلی کیشنز، ایمبیڈڈ ڈیوائسز، اور ان کے سب سسٹمز کو متاثر کرتی ہے۔ متاثرہ ایپس میں Cisco Webex، Minecraft، اور FileZilla FTP شامل ہیں۔
تاہم، یہ کسی بھی طرح سے پوری فہرست نہیں ہے۔ یہ خامی Ingenuity Mars 2020 ہیلی کاپٹر مشن کو بھی متاثر کرتی ہے، جو ایونٹ کی ریکارڈنگ کے لیے Apache Log4j کا استعمال کرتا ہے۔
سیکورٹی کمیونٹی نے ایک مرتب کیا ہے۔ کمزور نظاموں کی فہرست. یہ نوٹ کرنا بہت ضروری ہے کہ یہ فہرستیں مسلسل اپ ڈیٹ ہو رہی ہیں، اس لیے اگر کوئی خاص پروگرام یا سسٹم نمایاں نہیں ہے، تو یہ نہ سمجھیں کہ یہ متاثر نہیں ہوا ہے۔
اس خطرے کی نمائش کافی امکان ہے، اور یہاں تک کہ اگر ایک مخصوص ٹیک اسٹیک جاوا لاگو نہیں ہوتا ہے، سیکیورٹی ایگزیکٹوز کو اہم سپلائر سسٹمز، SaaS سپلائرز، کلاؤڈ ہوسٹنگ فراہم کنندگان، اور ویب سرور فراہم کرنے والوں سے ایسا کرنے کی توقع کرنی چاہیے۔
Log4j خطرے کی جانچ کیسے کریں؟
پہلا قدم یہ تعین کرنا ہے کہ آیا حملہ پہلے ہی ہو چکا ہے۔ آپ RCE پے لوڈ ٹکڑوں کے لیے سسٹم لاگز کو چیک کر کے ایسا کر سکتے ہیں۔
اگر "jndi"، "ldap"، یا "$::" جیسی اصطلاحات کی تلاش سے کوئی لاگ حاصل ہوتا ہے، تو سیکورٹی محققین کو یہ دیکھنے کے لیے مزید دریافت کرنا چاہیے کہ آیا یہ ایک جائز حملہ تھا یا محض فنگر پرنٹنگ۔
جنگل میں بہت سے حملے دریافت ہوئے جن سے کوئی نقصان دہ پے لوڈ نہیں ہوا۔ بہر حال، وہ سیکورٹی ماہرین کے ذریعہ کئے گئے تھے تاکہ یہ معلوم کیا جا سکے کہ کتنی ایپس اس حملے کا شکار ہیں۔
اگلا مرحلہ تمام پروجیکٹس کی شناخت کے لیے Log4j لائبریری کا استعمال کرنا ہے۔ اگر 2.0-beta9 اور 2.14.1 کے درمیان ورژن استعمال کیے جاتے ہیں، تو پروجیکٹ حساس ہوسکتا ہے۔
یہ تعین کرنے میں دشواری کو دیکھتے ہوئے کہ یہ خطرہ کہاں موجود ہے، یہ فرض کرنا افضل ہے کہ پروجیکٹ حساس ہے اور لائبریری کو اپ ڈیٹ کرنا کوڈ پر عمل درآمد کے خطرے کو دور کرنے کے لیے بہترین اقدام ہے۔
اگر استعمال شدہ ورژن 2.0-beta 9 سے کم ہے تو پروجیکٹ خطرے سے دوچار نہیں ہے، حالانکہ Log4j لائبریری کو اب بھی اپ گریڈ کیا جانا چاہیے کیونکہ 1.x رینج کے ورژن پرانے ہیں اور اب ان کو اپ ڈیٹ نہیں ملتا ہے۔
چاہے کوئی حساس پروجیکٹ دریافت ہوا ہو، یہ مشورہ دیا جاتا ہے کہ اس کی جانچ پڑتال کی جائے کہ آیا Log4j کا استعمال کرتے ہوئے لاگ کی گئی کسی بھی معلومات میں ایسی معلومات موجود ہے جسے صارف تبدیل کر سکتا ہے۔ URLs، درخواست کے پیرامیٹرز، ہیڈرز، اور کوکیز اس ڈیٹا کی مثالیں ہیں۔ اگر ان میں سے ایک لاگ ان ہے، تو پروجیکٹ خطرے میں ہے۔
یہ علم آپ کو سسٹم لاگز میں مزید تلاش کرنے اور اس بات کا تعین کرنے میں مدد دے سکتا ہے کہ آیا آپ کی ویب ایپلیکیشن پر پہلے ہی حملہ ہو چکا ہے۔
مفت آن لائن ٹولز موجود ہیں جو اس بات کا پتہ لگا سکتے ہیں کہ آیا کوئی ویب ایپلیکیشن کمزور ہے۔ ان پروگراموں میں سے ایک ہے۔ لاگ 4 شیل شکاری. یہ اوپن سورس ہے اور اس پر دستیاب ہے۔ GitHub کے.
اگر آن لائن ایپلیکیشن میں کوڈ کا کوئی کمزور علاقہ دریافت ہو جاتا ہے، تو انکشاف شدہ ٹول کے ذریعے فراہم کردہ پے لوڈ کو ویب ایپلیکیشن میں انجیکشن کرنے کے لیے استعمال کیا جا سکتا ہے۔ ٹیسٹنگ ٹول آپ کی ویب ایپلیکیشن اور ان کے LDAP سرور کے درمیان بنائے گئے رابطوں کو ظاہر کرے گا اگر کمزوری کا فائدہ اٹھایا گیا تھا۔
Log4j خطرے کو ٹھیک کرنے کے حل
پہلا قدم Log4j کو اپ ڈیٹ کرنا ہے، جو آپ عام پیکیج مینیجرز کو استعمال کرکے یا اسے براہ راست اس سے ڈاؤن لوڈ کرکے کرسکتے ہیں۔ صفحہ.
ماحولیاتی متغیر FORMAT MSG NO LOOKUPS کو درست پر سیٹ کر کے کمزوری کے استحصال کو کم کرنا بھی ممکن ہے۔ تاہم، یہ جوابی اقدام صرف Log4j ورژنز پر لاگو ہوتا ہے جو 2.10 سے زیادہ یا اس کے برابر ہیں۔
آئیے اب متبادل اختیارات پر غور کریں۔
1. Log4j ورژن 2.17.0 کے لیے حل
Log4Shell کے خلاف حفاظت کے لیے Log2.15.0j ورژن 4 استعمال کرنے کا ضرور مشورہ دیا جاتا ہے، تاہم، اگر یہ ممکن نہیں ہے تو، دیگر حل دستیاب ہیں۔
Log2.7.0j کے 4 اور بعد کے ورژن: صارف کی طرف سے فراہم کردہ ڈیٹا کے لیے فیصد m nolookups نحو کا استعمال کرتے ہوئے لاگ ان ہونے والے واقعات کے فارمیٹ کو تبدیل کر کے کسی بھی حملے سے حفاظت کرنا ممکن ہے۔ اس اپ ڈیٹ کو پروگرام کا نیا ورژن بنانے کے لیے Log4j کنفیگریشن فائل میں ترمیم کرنے کی ضرورت ہے۔ نتیجے کے طور پر، اس نئے ورژن کو تعینات کرنے سے پہلے، تکنیکی اور فعال توثیق کے مراحل کو دہرایا جانا چاہیے۔
Log4j ورژن 2.10.0 اور بعد میں: log4j2.formatMsgNoLookups کنفیگریشن پیرامیٹر کو درست پر سیٹ کرکے کسی بھی حملے سے بچانا بھی ممکن ہے، مثال کے طور پر، جاوا ورچوئل مشین کو -Dlog4j2 آپشن کے ساتھ شروع کرتے وقت۔ formatMsgNoLookups = true، ایک اور آپشن JndiLookup کلاس کو کلاس پاتھ آرگیومینٹ سے ہٹانا ہے، جو مین اٹیک ویکٹر کو ہٹا دے گا (محققین دوسرے حملے کے ویکٹر کے امکان کو مسترد نہیں کرتے ہیں)۔
ایمیزون ویب سروسز ایک ہاٹ پیچ فراہم کرتی ہے جسے "آپ کے اپنے خطرے پر استعمال کیا جانا چاہئے۔" دیگر "تکنیکیں"، جیسے Logout4Shell، جو "اس خطرے کو اپنے خلاف استعمال کرتی ہیں" شائع کی گئی ہیں۔ سیکیورٹی ماہر اس اقدام کی قانونی حیثیت پر سوال اٹھاتا ہے، جس میں "اسے ٹھیک کرنے کے لیے مشین کو ہیک کرنا" شامل ہے۔
2. Log4j v2.17.0 میں مسئلہ حل ہو گیا ہے۔
2.10 سے بڑے ورژن کے لیے: Log4j2.formatMsgNoLookups کو درست پر سیٹ کیا جانا چاہیے۔
ورژن 2.0 سے لے کر 2.10.0 تک کے لیے: Log4j سے LDAP کلاس کو ہٹانے کے لیے درج ذیل کمانڈ کو چلائیں۔
Log4j2.formatMsgNoLookups کو سسٹم کی ترتیبات میں درست پر سیٹ کیا جانا چاہیے۔
JVM میں تخفیف
JVM پیرامیٹرز کے ساتھ تخفیف اب کوئی آپشن نہیں ہے۔ دیگر تخفیف کے طریقے کامیاب ہوتے رہتے ہیں۔ اگر ممکن ہو تو Log4j ورژن 2.17.0 میں اپ گریڈ کریں۔ Log4j v1 کے لیے ہجرت کی گائیڈ دستیاب ہے۔
اگر اپ ڈیٹ ممکن نہیں ہے، تو یقینی بنائیں کہ کلائنٹ سائیڈ اور سرور سائیڈ کے اجزاء میں -Dlog4j2.formatMsgNoLookups = صحیح سسٹم پراپرٹی سیٹ ہے۔
براہ کرم نوٹ کریں کہ Log4j v1 اپنی آخری زندگی (EOL) کو پہنچ چکا ہے اور اب اسے بگ فکسز موصول نہیں ہوں گی۔ دیگر RCE ویکٹر بھی Log4j v1 کے لیے حساس ہیں۔ لہذا، ہم آپ سے گزارش کرتے ہیں کہ جلد از جلد Log4j 2.17.0 پر اپ گریڈ کریں۔
3. تخفیف کے اقدامات
موجودہ کارنامے کام نہیں کر سکتے یہاں تک کہ اگر Log4j کچھ صورتوں میں حساس ہو، جیسے کہ اگر میزبان مشین 6u212، 7u202، 8u192، یا 11.0.2 سے زیادہ جاوا ورژن چلا رہی ہے۔
یہ موجودہ ورژنز میں بہتر جاوا نامنگ اور ڈائریکٹری انٹرفیس (JNDI) ریموٹ کلاس لوڈنگ پروٹیکشن کی وجہ سے ہے، جو حملے کو چلانے کے لیے ضروری ہے۔
مزید برآں، 4 سے بڑے Log2.10j ورژن کے ساتھ، فارمیٹMsgNoLookups سسٹم ویلیو کو درست پر سیٹ کرکے، JVM دلیل -Dlog4j2.formatMsgNoLookups = true فراہم کرکے، یا JndiLookup کلاس کو کلاس پاتھ سے حذف کرکے مسئلہ سے بچا جاسکتا ہے۔
اس دوران، جب تک کہ کمزور واقعات کو ٹھیک نہیں کیا جاتا، اس خطرے کو نیچے دی گئی تکنیکوں کا استعمال کرتے ہوئے حل کیا جا سکتا ہے:
- سسٹم پراپرٹی log4j2.formatMsgNoLookups کو >=2.10 کے لیے درست پر سیٹ کریں۔
- انوائرنمنٹ آپشن LOG4J FORMAT MSG NO LOOKUPS کو >=2.10 کے لیے درست پر سیٹ کریں۔
- JndiLookup.class کو کلاس پاتھ سے 2.0-beta9 سے 2.10.0 تک ہٹائیں: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
ایک تجویز کردہ بہترین عمل یہ ہے کہ انٹرنیٹ پر نکلنے والی ٹریفک کو صرف مناسب بندرگاہوں تک محدود رکھا جائے۔
اگرچہ فیلڈ میں زیادہ تر حملے HTTP پر کیے جاتے ہیں، لیکن خطرے کا فائدہ کسی بھی پروٹوکول کے ذریعے لیا جا سکتا ہے جو Log4j کا استعمال کرتے ہوئے صارف کے ان پٹ ڈیٹا کو لاگ کرتا ہے۔
تاہم، log4j 2.17.0 کو اپ ڈیٹ کرنا بہترین علاج ہے کیونکہ کوئی اس مسئلے کے لیے ایک اضافی طریقہ دریافت کر سکتا ہے۔ مزید برآں، بہت سے پبلشرز اور مینوفیکچررز نے اپنی خدمات یا ایپس میں بہتری کا اعلان کیا ہے۔
4. Log4Shell کمزوری کا پیچ
Log4j ہمہ گیر ہے، خاص طور پر اب جب کہ کمزوری کا فائدہ اٹھایا جا رہا ہے۔ خلاصہ کرنے کے لیے، آپ کو صرف Log4j کے ذریعے معائنہ کیے گئے لاگز میں درج ذیل حروف کو شامل کرنے کی ضرورت ہے۔
اور یہ یو آر ایل کے آخر میں موجود جاوا فائل کو ڈاؤن لوڈ اور عمل میں لائے گا۔ یہ اتنا ہی سیدھا ہے جتنا ڈرامائی ہے۔
جیسا کہ آپ جانتے ہیں، اس Log4Shell خطرے (CVE-2.17.0-4) کو دور کرنے کے لیے log2021j کو ورژن >= 44228 میں اپ گریڈ کرنا بہت ضروری ہے۔
اگر یہ ممکن نہیں ہے:
ایسی ایپلی کیشنز کے لیے جو Log4j لائبریری ورژن 2.10.0 اور بعد میں استعمال کرتی ہیں، کنفیگریشن پیرامیٹر log4j2.formatMsgNoLookups کو درست پر سیٹ کر کے کسی بھی حملے سے بچنا بھی ممکن ہے، مثال کے طور پر، جاوا ورچوئل مشین کو شروع کرتے وقت -Dlog4j2.formatMsgNoLookups = true اختیار
دوسرا آپشن یہ ہے کہ JndiLookup کلاس کو کلاس پاتھ آرگیومینٹ سے حذف کر دیا جائے، جو بنیادی حملہ ویکٹر کو ہٹا دے گا (محققین دوسرے حملہ آور ویکٹر کے وجود کو مسترد نہیں کرتے ہیں)۔
نوٹ
وہ تنظیمیں جو ہچکچاہٹ کا شکار ہیں یا حساس نظاموں میں ایڈجسٹمنٹ کرنے کو تیار نہیں ہیں (یا جو ہیں لیکن اضافی حفاظتی اقدامات انسٹال کرنا چاہتے ہیں) ان کے بارے میں سوچنا چاہئے:
- اس بات کو یقینی بنائیں کہ تمام ٹریفک کو iSensor/ کے ذریعے روٹ کیا گیا ہے۔WAF/آئی پی ایس۔ یہ حملہ کو سسٹم تک رسائی حاصل کرنے سے روک سکتا ہے۔
- ٹریفک کی مقدار کو محدود کرنا جو حساس سسٹم تک پہنچ سکتا ہے اگر سسٹم کو انٹرنیٹ سے منسلک ہونے کی ضرورت نہیں ہے تو صرف ضروری اور قابل اعتماد IPS اور رینجز تک رسائی کو محدود کریں۔
- میزبان کی مجاز آؤٹ گوئنگ ٹریفک کو کم کرنا۔ چونکہ یہ حملہ بدمعاش سرور سے منسلک ہو کر چلتا ہے، اس لیے تمام ضرورت سے زیادہ IP پتے اور بندرگاہوں کو فائر وال پر بلاک کر دیا جانا چاہیے۔
- اگر خدمت کی مزید ضرورت نہیں ہے، تو اسے اس وقت تک غیر فعال کر دیا جانا چاہیے جب تک کہ کوئی حل تیار نہ ہو۔
نتیجہ
Log4j کی خامیوں نے ہماری کمیونٹی کو چونکا دیا اور ہم سب کو یاد دلایا کہ ہم اوپن سورس سافٹ ویئر پر کتنے انحصار کرتے ہیں۔
Log4j منفرد ہے۔ یہ نہ تو آپریٹنگ سسٹم ہے، نہ ہی یہ کوئی براؤزر ہے، اور نہ ہی یہ کوئی سافٹ ویئر ہے۔ بلکہ، یہ وہی ہے جسے پروگرامرز لائبریری، ایک پیکیج، یا کوڈ ماڈیول کے طور پر کہتے ہیں۔ یہ صرف ایک مقصد کو پورا کرتا ہے، وہ یہ ہے کہ سرور پر کیا ہوتا ہے اس کا ریکارڈ رکھنا۔
جو لوگ کوڈ لکھتے ہیں وہ اس بات پر توجہ مرکوز کرنے کو ترجیح دیتے ہیں کہ ان کے سافٹ ویئر کو مخصوص کیا ہے۔ وہ پہیے کو دوبارہ ایجاد کرنے میں دلچسپی نہیں رکھتے۔ نتیجے کے طور پر، وہ موجودہ کوڈ لائبریریوں کی بہتات پر انحصار کرتے ہیں، جیسے Log4j.
Log4j ماڈیول اپاچی سے ماخوذ ہے، جو سب سے زیادہ استعمال ہونے والا ویب سرور سافٹ ویئر ہے۔ اس لیے اسے لاکھوں سرورز پر دریافت کیا جا سکتا ہے۔ لہذا، سیکورٹی خطرات میں اضافہ.
مجھے امید ہے کہ مذکورہ بالا حل آپ کو اپنے آلات کو محفوظ رکھنے میں مدد کرتے ہیں۔
ٹیک دنیا سے مزید مفید معلومات کے لیے HashDork سے جڑے رہیں۔
جواب دیجئے