ایک SBOM یہ ثابت کرتا ہے کہ آپ نے کیا انسٹال کیا ہے۔ یہ یہ ثابت نہیں کر سکتا کہ آپ کو وہ انسٹال کرنا چاہیے تھا۔
ایک SBOM ایک رسید کی طرح ہے۔ یہ آپ کو بتاتا ہے کہ آپ نے کیا انسٹال کیا ہے۔ یہ آپ کو یہ نہیں بتاتا کہ کیا اسے انسٹال کرنا آپ کا درست فیصلہ تھا۔
زیادہ تر ٹیمیں اپنے CI/CD پائپ لائنز میں SBOM اور CVE اسکینز کا استعمال کرتی ہیں۔ یہ ٹولز موجودہ پیکیجز میں معلوم کمزوریوں (vulnerabilities) کو تلاش کرنے کے لیے بہترین ہیں۔ لیکن جب AI کوڈنگ ایجنٹس کا استعمال کیا جاتا ہے، تو ان میں ایک بہت بڑا اندھا پن (blind spot) ہوتا ہے۔
ایک AI ایجنٹ ایک پیکیج کا نام تجویز کرتا ہے۔ وہ یہ کام اتنے ہی اعتماد کے ساتھ کرتا ہے چاہے وہ نام حقیقی ہو، ایک hallucination (خیالی تصور) ہو، یا typosquat (نام کی غلطی سے دھوکہ دہی) ہو۔
اگر کسی حملہ آور نے کل ہی ایک بدنیتی پر مبنی (malicious) پیکیج کا نام رجسٹر کیا ہے، تو اس کا ابھی تک کوئی CVE نہیں ہوگا۔ آپ کا post-install اسکین اسے دیکھے گا اور اسے صاف (clean) قرار دے دے گا۔ اسکین ایماندار ہے، لیکن اس نے غلط سوال کا جواب دیا۔ اس نے یہ بتانے کے بجائے کہ "کیا یہ نام ہمارے اسٹیک میں موجود ہونا چاہیے؟"، یہ جواب دیا کہ "کیا یہ معلوم ہے کہ یہ برا ہے؟"
جب تک ایک SBOM کسی بدنیتی پر مبنی پیکیج کو ریکارڈ کرتا ہے، نقصان ہو چکا ہوتا ہے۔ بدنیتی پر مبنی کوڈ اکثر install مرحلے کے دوران postinstall اسکرپٹس کے ذریعے چلتا ہے۔ یہ آپ کے اسکینر کے فائل ٹری کو دیکھنے سے پہلے ہی آپ کے environment variables اور CI secrets چرا سکتا ہے۔
آپ کو ضمنی اثر (side effect) سے پہلے ایک فیصلے (verdict) کی ضرورت ہے۔
میں نے اس مسئلے کو حل کرنے کے لیے ایک سادہ ٹول بنایا ہے۔ یہ ایک pre-install provenance gate ہے۔ یہ ایک اسکینر سے مختلف طریقے سے کام کرتا ہے:
• یہ npm install چلنے سے پہلے ناموں کو چیک کرتا ہے۔ • یہ ایک یقینی بنائے گئے (vouched) بیس لائن کے خلاف default-deny طریقہ کار استعمال کرتا ہے۔ • یہ مقبول پیکیجز سے edit distance کی پیمائش کر کے typosquats کی نشاندہی کرتا ہے۔ • یہ ان hallucinations کو پکڑتا ہے جو کسی بھی معلوم اچھے نام سے مطابقت نہیں رکھتے۔ • یہ آپ کے .npmrc کی تصدیق کرتا ہے تاکہ اس بات کو یقینی بنایا جا سکے کہ آپ کسی غیر قانونی (rogue) رجسٹری سے رابطہ نہیں کر رہے ہیں۔
یہ ٹول آف لائن، کلیدی (keyless) ہے، اور صرف Python standard library استعمال کرتا ہے۔ یہ نیٹ ورک سے منسلک نہیں ہوتا۔ یہ پیکیجز کو resolve نہیں کرتا۔ یہ صرف تجویز کردہ ناموں کو دیکھتا ہے اور پوچھتا ہے: "کیا ہم اس نام کی ضمانت دیتے ہیں؟"
اگر نام آپ کے vouched snapshot میں نہیں ہے اور نہ ہی کسی مقبول بیس لائن میں ہے، تو گیٹ DENY واپس کرتا ہے۔
صرف اس بات کے ریکارڈز پر بھروسہ کرنا چھوڑ دیں کہ کیا ہوا تھا۔ یہ فیصلہ کرنا شروع کریں کہ کیا ہونے کی اجازت ہے۔
Source: https://dev.to/alex_spinov/an-sbom-proves-what-you-installed-it-cant-prove-you-should-have-117c
Optional learning community: https://t.me/GyaanSetuAi
