پہلی نظر میں، جواب واضح لگتا ہے جب کمزوری اسکینر ایپلی کیشن میں 23 کمزوریوں کی اطلاع دیتا ہے، جن میں سے 4 نازک، 7 زیادہ ہیں، اور باقی 12 درمیانے درجے کی ہیں۔ یہ پیچ شروع کر رہا ہے۔ لیکن آپ کو پہلے کون سا ٹھیک کرنا چاہئے؟
یہ کمزوری کے انتظام میں ہمیشہ ایک مسئلہ رہا ہے۔ اگرچہ آپ کی سیکیورٹی ٹیم کمزور انحصار کے بارے میں معلوم کرنے کے قابل ہو سکتی ہے، لیکن انہیں ٹھیک کرنا ہمیشہ فوری طور پر ممکن نہیں ہوتا ہے۔ ڈویلپرز کو یہ یقینی بنانا چاہیے کہ کمزور کوڈ استعمال میں ہے اور پیداواری ماحول میں کوئی بھی اصلاحات جاری کرنے سے پہلے کوئی بھی ضروری جانچ پڑتال کریں۔
تاہم، سافٹ ویئر کی کمزوریوں اور کارناموں کو دریافت کرنے کے لیے AI کے استعمال میں حالیہ برسوں میں کچھ یقینی پیش رفت ہوئی ہے۔ مثال کے طور پر، یہ مطالعہ آگے بڑھنے والے کچھ نتائج اور سمتوں کی تفصیلات دیتا ہے۔
لیکن یہ حقیقت میں ترقیاتی برادری کی مدد کیسے کرتا ہے؟ ہمیں مسائل کو تیزی سے حل کرنے کی ضرورت ہے، لیکن زیادہ اہم بات یہ ہے کہ ہمیں اس بات کا تعین کرنے کے قابل ہونے کی ضرورت ہے کہ کون سی کمزوریاں درحقیقت مسائل ہیں اور جن پر پہلے توجہ کی ضرورت ہے۔
اس آرٹیکل میں، ہم دیکھیں گے کہ روایتی پیچنگ کا عمل کیسا لگتا ہے، کس طرح AI سیکیورٹی ٹیموں کے جواب دینے کے لیے وقت کو کم کر سکتا ہے، اور ان کی شدت کے اسکور کی بنیاد پر کمزوریوں کو دور کرنا ہمیشہ کیوں معنی نہیں رکھتا۔
ہم نمائش کے انتظام اور روایتی خطرے کے انتظام سے اس کے اختلافات پر بھی بات کریں گے۔ اس کے بعد ہم اس بات کا احاطہ کرتے ہیں کہ کس طرح ڈویلپر انحصار، کوڈ تک رسائی، اور مواد کے سافٹ ویئر بل (SBOM) کا تجزیہ کرکے اپنی ایپلی کیشنز میں حقیقی کمزوریوں کی نشاندہی کرسکتے ہیں۔
ہم کیا احاطہ کریں گے:
پیچنگ اور نمائش کا انتظام: کیا فرق ہے؟
یہ دیکھنے سے پہلے کہ AI کس طرح خطرے کے ردعمل کو تبدیل کر رہا ہے، دو اہم تصورات کو سمجھنا مددگار ہے: پیچنگ اور نمائش کا انتظام۔
پیچ کیا ہیں؟
پیچنگ موجودہ مسائل کو حل کرنے کے لیے سافٹ ویئر کو اپ ڈیٹ کرنے کا عمل ہے، بشمول سیکیورٹی کے خطرات، کیڑے، یا استحکام کے مسائل۔ اس میں معلوم کمزوریوں کے ساتھ لائبریریوں کو اپ گریڈ کرنا، آپریٹنگ سسٹم میں سیکیورٹی اپ ڈیٹس کا اطلاق کرنا، یا ایسی ایپلی کیشنز کی نئی ریلیز کا استعمال کرنا شامل ہوسکتا ہے جن میں کمزوریاں ٹھیک ہیں۔
مثال کے طور پر، اگر آپ کی ایپلیکیشن کسی خاص لائبریری کا استعمال کرتی ہے جس میں سیکیورٹی کے خطرات معلوم ہوتے ہیں، تو پیچ ورژن جاری ہونے پر آپ لائبریری کو اپ گریڈ کر سکتے ہیں۔ اس کے بعد آپ کو اپ ڈیٹ کی جانچ کرنی ہوگی، اس بات کو یقینی بنانا ہوگا کہ آپ کی ایپلیکیشن حسب منشا کام کرتی رہے، اور اپ گریڈ شدہ ورژن کو پروڈکشن میں جاری کریں۔
لہذا پیچ کرنا صرف زیربحث پیکیج کے تازہ ترین ورژن کو انسٹال کرنے کے بارے میں نہیں ہے۔ انحصار اپ ڈیٹس API، کچھ خصوصیات، یا دیگر منحصر پیکجوں کو توڑ سکتے ہیں۔ یہی وجہ ہے کہ ٹیمیں عام طور پر پیچ مینجمنٹ کی حکمت عملی استعمال کرتی ہیں جب کمزوریوں کی نشاندہی کرتے ہوئے، فیصلوں کو اپ ڈیٹ کرتے ہوئے، جانچ، تعیناتی، اور پیچ کے کام کو یقینی بناتے ہوئے۔
نمائش کا انتظام کیا ہے؟
اگرچہ خطرے کا انتظام بنیادی طور پر کمزوریوں کی شناخت سے متعلق ہے، نمائش کا انتظام زیادہ وسیع پیمانے پر اس بات پر توجہ مرکوز کرتا ہے کہ آیا یہ کمزوریاں واقعی حملے کے لیے ایک حقیقت پسندانہ ویکٹر پیش کر سکتی ہیں۔
مثال کے طور پر، ایک کمزور لائبریری جس کا استعمال ترقیاتی نظاموں تک محدود ہے، ڈیٹا بیس تک رسائی کے ساتھ انٹرنیٹ کا سامنا کرنے والے سسٹم پر استعمال ہونے والی اسی طرح کی کمزور لائبریری کے مقابلے میں کم فوری خطرہ ہے۔
غور کرنے کے لیے کچھ پہلوؤں میں نیٹ ورک پر رسائی، اثاثوں کی نمائش، کمزور کوڈ کے راستے، شناخت اور رسائی کے کنٹرول، کلاؤڈ ماحول، اور سسٹمز اور ڈیٹا کی حساسیت شامل ہیں۔
سیدھے الفاظ میں، خطرے کے انتظام کا تعلق کمزوریوں کو دریافت کرنے اور ان کا سراغ لگانے سے ہے، جب کہ نمائش کا انتظام اس بات کا تعین کرنے پر توجہ مرکوز کرتا ہے کہ ان میں سے کون سی کمزوریوں کو حقیقی یا زیادہ خطرہ لاحق ہے۔
موجودہ پیچ مینجمنٹ ورک فلو وقت پر بنائے جاتے ہیں۔
خطرے میں کمی کے عمومی عمل میں مرحلہ وار اقدامات شامل تھے۔
-
CVE دریافت ہوا۔
-
سیکورٹی ٹیم کی طرف سے شدت کا اندازہ
-
دیکھ بھال کرنے والے اپ اسٹریم پیچ جاری کرتے ہیں۔
-
ڈویلپر انحصار کو اپ ڈیٹ کرتا ہے۔
-
CI/CD پائپ لائن ریگریشن ٹیسٹ چلاتی ہے۔
-
پیداوار کی تعیناتی
-
قرارداد کی تصدیق ہو گئی۔
یہ عمل فطری طور پر ناقص نہیں تھا، لیکن اس نے اس مضمر بنیاد پر کام کیا کہ محافظوں کو ہر مرحلے میں پینتریبازی کرنے کے لیے کافی جگہ دی گئی تھی۔
مشق کے لیے، آئیے انحصار کے خطرے کی ایک مثال لیتے ہیں۔ جب خودکار اسکینرز مقبول یوٹیلیٹی پیکجوں میں کمزوریوں کا پتہ لگاتے ہیں جیسے: لوڈشیانجینئرز پروڈکشن میں انحصاری ورژن کو فوری طور پر تبدیل نہیں کرتے ہیں۔ آپ کو یہ چیک کرنا چاہیے کہ آیا آپ کا ایپلیکیشن کوڈ کسی بھی کمزور خصوصیات کا فائدہ اٹھاتا ہے، اپ گریڈ کے بعد کسی بھی بڑی API تبدیلیوں کو چیک کریں، اور انٹیگریشن ٹیسٹ کے ذریعے بلڈ توثیق چلائیں۔
ہر حفاظتی پیچ بنیادی طور پر کوڈ کی تبدیلی ہے اور اسے ترقی اور تعیناتی کے پورے دور میں محفوظ طریقے سے لاگو کیا جانا چاہیے۔
AI ‘دریافت’ اور ‘خطرے’ کے درمیان وقت کو کم کر رہا ہے۔
پہلے موجود کمزوریوں کی دریافت اور استحصال کے درمیان موجود بفر کو ہٹایا جا رہا ہے۔ اس کی وجہ یہ ہے کہ خودکار پروگرام کوڈبیس کو اسکین کر سکتے ہیں، تصور کے ثبوت پیدا کر سکتے ہیں، اور ایج کیسز دریافت کر سکتے ہیں۔
جدید AI سسٹمز محققین اور حملہ آور دونوں کو کاموں کو انجام دینے میں مدد کرتے ہیں جیسے کہ جامد بائنریز کا تجزیہ کرنا، کمزوریوں کا پتہ لگانا، استحصالی پے لوڈز بنانا، اور پیچیدہ سافٹ ویئر ڈیزائنز میں منطقی مسائل تلاش کرنا۔
DARPA کے آرٹیفیشل انٹیلی جنس سائبر چیلنج (AIxCC) جیسے پروگرام یہ ظاہر کرتے ہیں کہ پیچیدہ اوپن سورس سافٹ ویئر میں خودکار طور پر کمزوریوں کو تلاش کرنے اور پیچ کرنے کے لیے AI سسٹمز کو کس طرح استعمال کیا جا سکتا ہے۔ 2024 کے سیمی فائنل مقابلے میں، خود مختار سائبر انفرنس سسٹمز کا تجربہ حقیقی دنیا کے سافٹ ویئر پر مبنی پروجیکٹس جیسے جینکنز، لینکس کرنل، Nginx، SQLite3، اور Apache Tika کے خلاف کیا گیا۔ اس نظام نے 22 منفرد مصنوعی کمزوریاں دریافت کیں اور ان میں سے 15 کو کامیابی کے ساتھ پیچ کیا۔ انہوں نے SQLite3 میں ایک حقیقی بگ کی بھی نشاندہی کی جس کا ذمہ داری سے انکشاف کیا گیا تھا۔
حقیقی ترقی کے عمل کے تناظر میں، پیچنگ کے عمل میں کچھ کام AI کے ذریعے انجام دیے جا سکتے ہیں۔ AI ممکنہ کمزوریوں کا پتہ لگانے کے لیے کوڈ کا تجزیہ اور انحصار کا تجزیہ کر سکتا ہے۔ یہ آپ کو کمزور خصوصیات کے استعمال کو ٹریک کرنے، کوڈ اور انحصار میں تبدیلیوں کی تجویز کرنے، اور اس بات کو یقینی بنانے کے لیے ٹیسٹ بنانے میں بھی مدد کر سکتا ہے کہ مجوزہ پیچ موجودہ فعالیت کو توڑ نہ دیں۔ سیکورٹی ٹیمیں پیٹرن کا پتہ لگانے کے لیے بھی AI کا استعمال کر سکتی ہیں۔
جیسا کہ AI ٹولز سافٹ ویئر کا اندازہ لگانے اور کمزوریوں کا پتہ لگانے کے زیادہ قابل ہو جاتے ہیں، خطرے کا پتہ لگانے اور تخفیف کے درمیان وقت کا فرق چھوٹا اور زیادہ نازک ہوتا جاتا ہے۔ یہ پیراڈائم شفٹ اس بات پر بھی اثر ڈالے گا کہ سیکیورٹی پروفیشنل کس طرح AI اور ایکسپوژر مینجمنٹ سے رجوع کرتے ہیں۔ یہ خاص طور پر درست ہے کیونکہ ایکسپلائیٹ ونڈوز چھوٹی ہوتی جاتی ہیں اور کمزوریوں کو مناسب طریقے سے ترجیح دینے کی ضرورت ہوتی ہے۔
AI خطرے سے متعلق معلومات کو اس ماحول سے جوڑ کر جس میں کمزور سافٹ ویئر چلتا ہے ایکسپوژر مینجمنٹ کو بھی سپورٹ کر سکتا ہے۔ مثال کے طور پر، ایک AI سے چلنے والا سیکیورٹی سسٹم کمزور انحصار کو انٹرنیٹ کا سامنا کرنے والی ایپلی کیشنز، نیٹ ورک کنکشنز، کلاؤڈ پرمیشنز، اور قابل رسائی ڈیٹا یا خدمات سے منسلک کر سکتا ہے۔ یہ سیکیورٹی ٹیموں کو صرف یہ پوچھنے سے آگے بڑھنے کی اجازت دیتا ہے کہ آیا کوئی خطرہ موجود ہے، یہ پوچھنا: ایک حملہ آور اس کے ذریعے حقیقتاً کیا حاصل کر سکتا ہے۔.
کیوں "پیچ سب کچھ” پیمانے پر کام نہیں کرتا ہے۔
جب آپ کی تنظیم کے سکینر متعدد مائیکرو سروسز میں پھیلی ہوئی 500 کمزوریوں کی فہرست تیار کرتے ہیں، تو ہر خطرے کا فوری جواب دینا ناممکن معلوم ہونے لگتا ہے۔ ڈویلپرز الرٹ تھکاوٹ کا شکار ہیں اور بہت آسانی سے مغلوب ہو سکتے ہیں۔
کامن ولنریبلٹی اسکورنگ سسٹم (CVSS) ایک معیاری فریم ورک ہے جو کمزوریوں کی شدت کو بیان کرنے کے لیے استعمال ہوتا ہے۔ CVSS v3.1 درج ذیل شدت کی حدود کا استعمال کرتا ہے:
|
CVSS سکور |
شدت |
|
0.0 |
موجود نہیں ہے |
|
0.1~3.9 |
کم |
|
4.0–6.9 |
درمیانی |
|
7.0~8.9 |
اعلی |
|
9.0~10.0 |
تنقیدی |
CVSS کارآمد ہے کیونکہ یہ ڈویلپرز اور سیکیورٹی ٹیموں دونوں کو کسی خطرے کی شدت کو بیان کرنے کے لیے ایک مشترکہ زبان فراہم کرتا ہے۔ بہر حال، جب کہ درجہ بندی کمزوری کو بیان کرتی ہے، لیکن یہ اس ماحول کی وضاحت نہیں کرتی جس میں یہ خطرہ ظاہر ہوتا ہے۔ یعنی، CVSS آپ کو یہ نہیں بتاتا ہے کہ آیا کمزوری جس فعالیت پر انحصار کرتی ہے وہ درحقیقت ایپلیکیشن استعمال کرتی ہے یا متاثرہ سسٹم انٹرنیٹ کے سامنے ہے۔
یہ دیکھنے کے لیے کہ کیوں ہمیشہ CVSS ہی کافی نہیں ہوتا، آئیے فرض کریں کہ تنظیم کے ماحول میں دو فرضی کمزوریاں ہیں۔
-
کمزوری A: یہ اہم ریموٹ کوڈ پر عمل درآمد کا خطرہ ایک الگ تھلگ ٹیسٹ ٹول یا صرف ترقی کے انحصار کا حصہ ہے جو کبھی بھی پیداواری ماحول کا حصہ نہیں ہوتا ہے اور اس کے پاس بیرونی نیٹ ورک تک رسائی نہیں ہوتی ہے۔
-
کمزوری بی: ایک انٹرنیٹ کا سامنا کرنے والے API گیٹ وے میں ایک اعلی شدت کے ان پٹ کی توثیق کے خطرے کا پتہ چلا ہے جو صارف کے نقصان دہ ان پٹ پر کارروائی کرتا ہے اور اسے کسٹمر کی معلومات پر مشتمل بیک اینڈ ڈیٹا بیس تک رسائی حاصل ہے۔
صرف CVSS سکور کو دیکھتے ہوئے، ٹیم کو Vulnerability B سے پہلے Vulnerability A پر توجہ دینی چاہیے۔ تاہم، یہ واضح ہے کہ Vulnerability B آپریشنز کے لیے زیادہ خطرہ ہے۔ حفاظتی تحقیق سے پتہ چلتا ہے کہ ایک بار معلوم ہونے والی کمزوریوں کا شاذ و نادر ہی استحصال کیا جاتا ہے۔ CISA KEV کیٹلاگ سے ٹیلی میٹری ڈیٹا واضح طور پر اس بات کی نشاندہی کرتا ہے کہ حملہ آور کمزوریوں کے ذیلی سیٹ پر توجہ مرکوز کر رہے ہیں جن کا حقیقی استحصال کا راستہ ہے۔
عملی طور پر، ٹیموں کو یہ فیصلہ کرتے وقت مختلف حالات کے عوامل کے علاوہ CVSS اسکورز پر بھی غور کرنا چاہیے۔ اگر درج ذیل شرائط درست ہیں تو کچھ کمزوریوں کو زیادہ ترجیح دی جا سکتی ہے:
-
انٹرنیٹ سے منسلک پیداواری نظام کو متاثر کرتا ہے۔
-
اس کمزوری کے لیے معروف کارنامے ہیں۔
-
حساس معلومات سامنے آگئیں،
-
اہم کاروباری افعال کو متاثر کرتا ہے؛
-
متبادل طور پر، یہ حملہ آور کو دوسرے مراعات یافتہ نظاموں تک رسائی حاصل کرنے کا ذریعہ فراہم کرتا ہے۔
تاہم، کمزوریاں جو صرف ترقی کے دوران پیدا ہوتی ہیں یا کسی بھی وجہ سے ناقابل رسائی ہوتی ہیں، انہیں فوری طور پر حل کرنے کی ضرورت نہیں ہے۔
خطرے کی اہمیت کا تعین کرنے کا بہترین طریقہ چند آسان سوالات پوچھنا ہے۔ کیا آپ کو کمزور نظاموں تک رسائی حاصل ہے؟ کیا آپ کو کمزور کوڈ تک رسائی حاصل ہے؟ کیا اس کمزوری سے فائدہ اٹھانے کا کوئی طریقہ ہے؟ متاثرہ سروسز کے پاس کیا اجازتیں ہیں؟ کمزوری کا فائدہ اٹھانے کے بعد حملہ آور کو کس چیز تک رسائی حاصل ہوگی؟
تمام انتباہات کو یکساں ترجیحی سطح تفویض کرنے سے ان کمزوریوں پر انجینئرنگ کی کوششیں ضائع ہو جاتی ہیں جن سے بہت کم یا کوئی خطرہ لاحق ہو سکتا ہے۔
نمائش کا انتظام: خرابی کی گنتی سے متعلقہ خطرے کی طرف بڑھنا
نمائش کا انتظام صرف جامد کمزوریوں کی درجہ بندی کرنے سے کسی تنظیم کے حقیقی آپریشنل خطرے کی کرنسی کا اندازہ لگانے کی طرف توجہ مرکوز کرتا ہے۔
یہ پوچھنے کے بجائے کہ، "میرے ذخیرے میں کتنے CVEs ہیں؟”، ایکسپوژر مینجمنٹ پوچھتی ہے، "کون سے کمزور اجزاء، غلط کنفیگریشنز، اور قابل رسائی نیٹ ورک کے راستے چلتے ہوئے اثاثوں میں ایک فائدہ مند خطرہ لاحق ہیں؟”
یہ دیکھ کر اختلافات کو دیکھنا آسان ہے کہ ہر نقطہ نظر کا فوکس کیا ہے۔
|
طول و عرض |
روایتی خطرے کا انتظام |
نمائش کا انتظام |
|
بنیادی سوالات |
کون سے سافٹ ویئر کیڑے اور CVE موجود ہیں؟ |
حساس اثاثوں تک رسائی کے لیے حملہ آور کون سے راستے استعمال کر سکتا ہے؟ |
|
ڈیٹا کی حد |
الگ تھلگ انحصار دریافت اور جامد خطرے کا ڈیٹا بیس |
کوڈ ریپوزٹری، کلاؤڈ رن ٹائم، نیٹ ورک روٹنگ، اور IAM اجازتیں۔ |
|
ترجیحی میٹرکس |
CVSS بیس اسکور اور جامد شدت کی درجہ بندی |
رسائی، استحصال، اثاثہ کی حساسیت، اور ماحولیاتی تناظر |
|
بنیادی آپریشنز |
اپ اسٹریم پیکیج اپ گریڈ اور براہ راست سافٹ ویئر پیچ |
رسک پر مبنی ٹرائیج: نیٹ ورکس کو الگ تھلگ کریں، کنفیگریشنز کو تبدیل کریں، یا ٹارگٹڈ پیچ لاگو کریں۔ |
جب آپ کے پاس انجینئرنگ ماحول میں 10,000 کلاؤڈ اثاثوں کا انتظام ہوتا ہے اور 1,000 کمزور لائبریریوں کو انحصار سکینر کے ذریعے دریافت کیا جاتا ہے، تو مشترکہ نمبر اصل سیکورٹی کی صورتحال کی نمائندگی نہیں کرتے ہیں۔ خطرے کی مناسب سطح پر توجہ مرکوز کرنے کے لیے اس سیاق و سباق کا علم درکار ہوتا ہے جس میں ان میں سے ہر ایک کمزوری موجود ہے۔
-
کیا آپ کا کنٹینر انٹرنیٹ کے سامنے ہے؟ یا یہ اندرونی لوڈ بیلنس کے پیچھے چھپا ہوا ہے؟
-
کیا آپ کا کوڈ درحقیقت خطرناک علامتوں یا لائبریری کے افعال کو کال کر رہا ہے؟
-
کون سی شناخت کی اجازتیں، کلاؤڈ رولز، اور ڈیٹا بیسز کمزور سروس کے ذریعے قابل رسائی ہیں؟
اس ڈینومینیٹر کو سمجھنا (اثاثوں کی کل تعداد جسے ایک خاص پیچ حاصل کرنے کی ضرورت ہے) آپ کی ٹیم کو ان نمائشوں کی نشاندہی کرنے میں مدد کر سکتی ہے جو درحقیقت ایک خطرہ ہیں، جس سے انجینئرنگ کا وقت ایسے مسائل کو حل کرنے میں صرف کیا جا سکتا ہے جو پروڈکشن ڈیٹا کو متاثر کرتے ہیں۔
ایک حملے کی سطح کے طور پر انحصار کا درخت
جدید سافٹ ویئر ڈیلیوری ملٹی لیئر پیکجز جیسے npm، PyPI، Maven، NuGet، بیس آپریٹنگ سسٹم لیئر پیکجز، GitHub ایکشنز، اور تھرڈ پارٹی APIs پر انحصار کرتی ہے۔ ایپلیکیشن کی منطق ڈویلپر کے ذریعہ لکھی گئی ہے، لیکن حتمی رن ٹائم سافٹ ویئر میں پیکیجنگ کے مختلف درجے شامل ہیں۔
ایپلیکیشن منطق → براہ راست انحصار (مینی فیسٹ میں اعلان کردہ) → عبوری انحصار (خودکار طور پر درآمد شدہ) → بیس OS سسٹم پیکجز → بیس کنٹینر امیج/کلاؤڈ رن ٹائم۔
اگر کوئی کمزوری عارضی انحصار سے تین درجے نیچے ہے اور عبوری انحصار برقرار نہیں ہے بلکہ بیرونی ان پٹ کے ذریعے قابل رسائی ہے، تو یہ ایپلیکیشن اٹیک سطح کا ایک لازمی حصہ ہے۔
اسی لیے سافٹ ویئر ڈویلپمنٹ ٹیموں نے سافٹ ویئر بل آف میٹریلز (SBOM) کا استعمال شروع کیا۔ SBOM سافٹ ویئر کے اجزاء کی انوینٹری ہے جو سافٹ ویئر یا ایپلیکیشن بناتے ہیں۔ SBOM بنانے کے لیے استعمال ہونے والی ٹیکنالوجی پر منحصر ہے، مختلف معلومات دستیاب ہیں، بشمول اجزاء کے نام، ورژن، انحصار، اور پیکیج IDs۔
جب نئی کمزوریوں کی نشاندہی کی جاتی ہے تو یہ مفید ہے۔ مثال کے طور پر، اگر لوڈاش کے مخصوص ورژن میں کوئی کمزوری دریافت ہوتی ہے، تو سیکیورٹی ٹیمیں متاثرہ ورژن پر مشتمل ایپلیکیشن یا کنٹینر امیج کی شناخت کے لیے SBOM کا استعمال کر سکتی ہیں۔ اس کے بعد آپ اس بات کی تحقیق کر سکتے ہیں کہ آیا استحصالی نمائشیں ہیں۔
اکیلے SBOM آپ کی درخواست کے لیے سیکیورٹی فراہم نہیں کرتا ہے۔ اس کی اہمیت ڈویلپرز اور سیکیورٹی اہلکاروں کو ان کی ایپلی کیشنز میں موجود چیزوں کو زیادہ سے زیادہ مرئیت فراہم کرنے میں ہے۔
ڈویلپرز کے لیے عملی مضمرات
یہ اصول آپ کی ٹیم کے روزمرہ کی ترقی کے عمل میں شامل ہونے پر مزید متعلقہ ہو جاتے ہیں۔ یہاں کچھ عملی طریقے ہیں جن سے آپ اور آپ کی ٹیم ان بہترین طریقوں اور حکمت عملیوں سے فائدہ اٹھا سکتی ہے۔
عبوری انحصار آڈیٹنگ
سب سے پہلے آپ کو یہ طے کرنے کی ضرورت ہے کہ آپ کی درخواست میں کیا انحصار شامل ہے۔ جب یہ عبوری انحصار کی بات آتی ہے تو یہ بہت مفید ہے۔ کیونکہ دوسرے پیکجوں کو براہ راست انسٹال کرتے وقت یہ انحصار خود بخود شامل ہو سکتے ہیں۔
Node.js ایپلی کیشنز کے لیے، درج ذیل کمانڈ npm ls انحصار کا درخت دکھایا گیا ہے۔ ازگر کے پروگرامرز استعمال کر سکتے ہیں: pipdeptreeMaven کا استعمال کرتے ہوئے بنائے گئے جاوا پروگرام استعمال کر سکتے ہیں: mvn dependency:tree حکم یہ کمانڈز آپ کو یہ سمجھنے میں مدد کر سکتے ہیں کہ ایک پیکج کہاں سے آتا ہے اور کون سی براہ راست انحصار آپ کے پروجیکٹ میں کمزور عبوری انحصار متعارف کرواتے ہیں۔
کوڈ تک رسائی کی جانچ کریں۔
انحصار میں کمزوری تلاش کرنے کا خود بخود یہ مطلب نہیں ہے کہ آپ اسے اپنی درخواست میں استعمال کر رہے ہیں۔ ہر خطرے کی رپورٹ کو پیداوار میں بڑے خلل کے طور پر نہ دیکھیں۔ اس کے بجائے، آپ کو اس بات کی جانچ کرنی چاہئے کہ آیا متاثرہ فعالیت آپ کی درخواست تک واقعی قابل رسائی ہے۔
ہم کہتے ہیں کہ آپ کو لائبریری کے کسی خاص فنکشن میں کمزوری معلوم ہوتی ہے۔ اس صورت میں، آپ کو اس فنکشن کے استعمال کے لیے اپنے کوڈ بیس کو دیکھنے کی ضرورت ہے اور یہ معلوم کرنے کی ضرورت ہے کہ آیا صارف کے زیر کنٹرول ڈیٹا کو فنکشن میں منتقل کرنے کا کوئی امکان ہے۔ آپ اپنے IDE کے ذریعہ فراہم کردہ سرچ فنکشن یا کمانڈ لائن یوٹیلیٹی جیسے grep استعمال کرسکتے ہیں۔
اگر یہ بیرونی افعال سے استعمال یا قابل رسائی نہیں ہے، تو نتائج کی فوری ضرورت کم ہو جاتی ہے۔ تاہم، اس کا خود بخود یہ مطلب نہیں ہے کہ اسے نظر انداز کر دیا جائے۔
CI/CD سے SBOM بنائیں
آپ اس کا استعمال کرتے ہوئے ایک سافٹ ویئر BOM بھی بنا سکتے ہیں: CI/CD پائپ لائن. SBOM بنانے سے سافٹ ویئر میں استعمال ہونے والے اجزاء کی شناخت میں مدد ملتی ہے اور کمزوری دریافت ہونے کے بعد متاثرہ اجزاء کی شناخت کرنا آسان ہوجاتا ہے۔
مثال کے طور پر، Syft کا استعمال کرتے ہوئے، آپ درج ذیل کمانڈ کو چلا کر کنٹینر امیج سے SBOM بنا سکتے ہیں۔ syft my-app:latest -o cyclonedx-json > sbom.json.
یہ ایک CycloneDX JSON فائل تیار کرتا ہے جس میں کنٹینر امیج کے اندر موجود اجزاء کے بارے میں معلومات ہوتی ہیں۔ اس SBOM کو پھر تعمیراتی نمونوں کے ساتھ محفوظ کیا جاتا ہے۔ جب کسی خاص پیکج ورژن میں کسی نئے خطرے کی نشاندہی کی جاتی ہے، تو سیکیورٹی ٹیمیں آسانی سے دیکھ سکتی ہیں کہ کون سی ایپلیکیشنز اور کنٹینر امیجز میں یہ خاص جز ہے۔
جب پیچ تیار نہ ہو تو معاوضہ کا کنٹرول استعمال کریں۔
کبھی کبھی کوئی پیچ دستیاب نہیں ہوسکتے ہیں یا انہیں فوری طور پر لاگو کرنا بہت خطرناک ہوسکتا ہے۔ اس کی وجہ یہ ہے کہ ایسا کرنے سے تبدیلیاں ٹوٹ سکتی ہیں جن کے لیے اضافی جانچ کی ضرورت ہوتی ہے۔ ان صورتوں میں، آپ اپنی درخواست کی نمائش کو کم کرنے کے لیے معاوضہ کے کنٹرولز کا استعمال کر سکتے ہیں جب تک کہ اسے صحیح طریقے سے پیچ نہ کیا جائے۔
آپ کے ماحول پر منحصر ہے، اس میں کمزور اجزاء تک نیٹ ورک کی رسائی کو محدود کرنا، حساس وسائل سے کام کے بوجھ کو الگ کرنا، سمجھوتہ شدہ خصوصیات کو غیر فعال کرنا، یا درخواست کی اجازتوں کو کم کرنا شامل ہو سکتا ہے۔
یہ کنٹرول حفاظتی پیچ کی جگہ نہیں لیتے ہیں، لیکن پیچ کے نفاذ تک صرف استحصال کے خطرے کو کم کرتے ہیں۔
رن ٹائم پر کم از کم استحقاق نافذ کریں۔
آخر میں، رن ٹائم کے وقت آپ کی درخواست تک رسائی کی مقدار کو محدود کریں۔ اگر کوئی استحصال نقصان کا باعث بنتا ہے، تو یہ خلاف ورزی کو دوسرے ایپلیکیشنز یا سسٹمز میں پھیلنے سے روکتا ہے۔
کنٹینر پر مبنی ایپلی کیشنز کو تعینات کرتے وقت، آپ نہ صرف پڑھنے کے لیے فائل سسٹم کا فائدہ اٹھا سکتے ہیں، بلکہ ان خصوصیات کو بھی ہٹا سکتے ہیں جن کی لینکس کے لیے ضرورت نہیں ہے۔ مثال کے طور پر، Docker استعمال کرنے کا اختیار فراہم کرتا ہے: --read-only اور --cap-drop=ALL کنٹینر چلاتے وقت۔
کلاؤڈ ایپلی کیشنز کو بھی IAM اجازتوں کے استعمال کو یقینی بنا کر اور صرف درخواست کی ضرورت کے مطابق رسائی دے کر اسی تصور کو اپنانا چاہیے۔
مقصد آسان ہے۔ اگر ایک عنصر سے سمجھوتہ کیا جاتا ہے، تو حملہ آور کو ارد گرد کے ماحول کے کم سے کم اجزاء تک رسائی حاصل کرنے کے قابل ہونا چاہیے۔
سافٹ ویئر سیکیورٹی کا مستقبل اس بات پر منحصر نہیں ہے کہ تنظیمیں بنیادی وجوہات کو جانے بغیر کتنی جلدی پیکجز کو اپ ڈیٹ کر سکتی ہیں۔ چونکہ آٹومیشن خطرے کی نشاندہی کو زیادہ موثر بناتا ہے، مؤثر تخفیف رن ٹائم کے وقت سورس کوڈ، اس کے انحصار اور انفراسٹرکچر کے درمیان تعلق کے علم پر انحصار کرتی ہے۔
یہاں مقصد صرف نئی کمزوریوں کو تلاش کرنا نہیں ہے، بلکہ ان کو پہچاننا ہے جو آپ کی درخواست کے لیے حقیقی خطرات لاحق ہیں۔
ختم
مصنوعی ذہانت ٹیموں کو کمزوریوں کا تیزی سے پتہ لگانے میں مدد کر رہی ہے، لیکن جدید ایپلی کیشنز سافٹ ویئر کی متعدد پرتوں پر تیزی سے انحصار کرتی رہیں۔ اس کا مطلب یہ نہیں ہے کہ پیچ غیر ضروری ہو جاتے ہیں۔ اس کا مطلب یہ ہے کہ تمام کمزوریوں کو یکساں فوری توجہ کی ضرورت نہیں ہے۔
ڈویلپرز کو یہ بھی چھان بین کرنی چاہیے کہ یہ کمزوریاں کہاں موجود ہیں، آیا حملہ آور ان تک رسائی حاصل کر سکتے ہیں، اور وہ کیا متاثر کر سکتے ہیں۔ جیسے جیسے کسی خطرے کا پتہ لگانے اور اس کے استحصال کے درمیان کا وقت بدلتا رہتا ہے، سمجھنا بھی اتنا ہی اہم ہو گیا ہے جتنا کہ خود پیچ۔