پیری انحصار کنفیوژن حملوں کے لیے سافٹ ویئر سپلائی چین کی حکمت عملی

پیری انحصار کنفیوژن حملوں کے لیے سافٹ ویئر سپلائی چین کی حکمت عملی

Software Supply Chain Strategies to Parry Dependency Confusion Attacks PlatoBlockchain Data Intelligence. Vertical Search. Ai.

“What’s in a name? That which we call a rose By any other name would smell as sweet.” When Shakespeare wrote these words (Romeo and Juliet, Act 2, Scene 2) in 1596, he was saying that a name is just a convention. It has no intrinsic meaning. Juliet loves Romeo for who he is, not for his name.

But without knowing it, Shakespeare was also describing dependency confusion attacks.

انحصار کی الجھن اس وقت ہوتی ہے جب آپ اپنے کوڈ میں جو پیکیج استعمال کر رہے ہیں وہ آپ کے نہیں ہوتے ہیں۔ ان کا ایک ہی نام ہے، لیکن یہ آپ کا کوڈ نہیں ہے جو پروڈکشن میں چل رہا ہے۔ ایک ہی نام، لیکن ایک پیکج گلاب کی طرح مہک رہا ہے اور دوسرے سے بدبو آ رہی ہے۔

Recent research reports estimate that 41% to 49% of organizations are at risk for dependency confusion attacks. New research from OX Security shows that when an organization is at risk for a dependency confusion attack, 73% of its assets are vulnerable. The research focused on midsize and large organizations (1K+, 8K+، 80K+ employees) across a wide range of sectors — finance, gaming, technology, and media — and found the risk in every sector across organizations of all sizes. The research also found that almost all applications with more than 1 billion users are using dependencies that are vulnerable to dependency confusion.

اس مضمون کا مقصد آپ کو انحصار کی الجھنوں اور اسے روکنے کے طریقے کو سمجھنے میں مدد کرنا ہے۔

ڈبل، ڈبل

Dependencies (also called packages) are the building blocks of your software. Typically these pieces of software, whether developed by entire communities or within a company, perform a common and necessary task.

Package managers are frequently used to install dependencies and keep them updated. They scan public and private registries for the name of the package and, all other things being equal, select the highest version number. Attackers take advantage of this by placing a “dummy” package on the public registry with the same name but higher version.

When a package manager comes across two identical packages, one in a public registry and one in a private registry, it causes confusion — hence the name “dependency confusion.” Since the two packages are identical, the manager will automatically choose to install the one with a higher version - in this case, the attacker’s malicious package.

یہ ہائی جیکرز کو آپ کے سافٹ ویئر میں ایک پچھلا دروازہ فراہم کرتا ہے۔ اس مقام سے، وہ ڈیٹا کی خلاف ورزیوں کو انجام دے سکتے ہیں، املاک دانش کی چوری کر سکتے ہیں، اور بصورت دیگر سافٹ ویئر سپلائی چین آف ٹرسٹ سے سمجھوتہ کر سکتے ہیں۔ وہ تعمیل کی خلاف ورزیوں کو بھی متعارف کرا سکتے ہیں جو سخت ریگولیٹری جرمانے کو متحرک کریں گے۔

محنت اور پریشانی

انحصار کنفیوژن حملے کے مختلف طریقے ہیں۔

  • نام کی جگہ۔ ایک عوامی رجسٹری میں بدنیتی پر مبنی سافٹ ویئر لائبریری کو اپ لوڈ کرکے — جیسے Python Package Index (PyPI) یا JavaScript's این پی ایم رجسٹری - یہ ہے کہ اسی طرح کا نام دیا ایک قابل اعتماد، اندرونی طور پر استعمال شدہ لائبریری میں، وہ سسٹم جو نام کی جگہ/URL چیک کو چھوڑ دیتے ہیں یا نجی رجسٹری سے بازیافت کرنے پر مجبور نہیں کرتے ہیں، غلطی سے نقصان دہ کوڈ کو کھینچ سکتے ہیں۔ دی PyTorch انحصار کنفیوژن کا حالیہ واقعہ ایسی ہی ایک مثال ہے۔
  • DNS سپوفنگ۔ DNS سپوفنگ جیسی تکنیک کا استعمال کرتے ہوئے، سسٹمز کو ہدایت کی جا سکتی ہے کہ وہ نقصان دہ ذخیروں سے انحصار کو کھینچیں جبکہ یہ ظاہر کرتے ہوئے کہ جائز داخلی URLs/راستوں جیسا دکھائی دیتا ہے۔
  • سکرپٹ By modifying build/install scripts or continuous integration/continuous delivery (CI/CD) pipeline configurations, systems can be tricked into downloading software dependencies from a malicious source rather than a local repository.

Things Done Well and With a Care

انحصار کی الجھنوں سے بچانے کے لیے، ان طریقوں کو قائم کریں۔

  • پیکیج مینیجر میں پالیسیاں مرتب کریں۔ پیکیج مینیجرز کو نجی پیکیج پر عوامی پیکیج کو ترجیح دینے سے منع کریں۔
  • ہمیشہ ایک .npmrc فائل شامل کریں۔ اگر آپ مقبول NPM کو بطور پیکیج مینیجر استعمال کر رہے ہیں، تو ہمیشہ ایک .npmrc فائل شامل کریں جو یہ بتاتی ہے کہ مخصوص تنظیم کے دائرہ کار کے تحت پیکجز کو کہاں سے لانا ہے۔
  • عوامی رجسٹری میں پیکیج کا نام محفوظ کریں۔ انحصار کنفیوژن حملوں سے بچانے کا ایک اور طریقہ یہ ہے کہ پیکیج کا نام عوامی رجسٹری میں محفوظ کر لیا جائے تاکہ ہائی جیکرز اسے استعمال نہ کر سکیں اور اس وجہ سے، پیکیج مینیجر کو ایک بدنیتی پر مبنی پیکج انسٹال کرنے کے لیے "ٹرک" نہ کر سکیں۔

انحصار کنفیوژن حملوں سے مکمل طور پر حفاظت کے لیے، تنظیموں کو ہمیشہ استعمال کرنا چاہیے۔ تمام داخلی پیکجوں کے لیے تنظیم کے دائرہ کاریہاں تک کہ جب آپ کی داخلی رجسٹری میں شائع ہو رہا ہو۔ تنظیم کے دائرہ کار کو NPM کی پبلک رجسٹری میں بھی رجسٹر کیا جانا چاہیے، اس طرح کسی کو بھی دائرہ کار کو ہائی جیک کرنے اور الجھن کا فائدہ اٹھانے سے روکا جائے۔

پیکیج کے نام بھی عوامی طور پر رجسٹر کیے جائیں۔ اگر کوئی تنظیم مقبول PIP کو Python کے انحصار کے لیے پیکیج مینیجر کے طور پر استعمال کر رہی ہے، مثال کے طور پر، اسے ایک سخت لاحقہ کے ساتھ اندرونی پیکجز بنانے چاہئیں جو قابل شناخت ہوں اور تمام پروجیکٹس پر کام کریں۔ اسی نام کے ساتھ ایک خالی پیکج پبلک رجسٹری PyPI پر بطور پلیس ہولڈر اپ لوڈ کریں۔

عوامی رجسٹری میں پیکیج کا نام محفوظ کرنے کی ایک اور وجہ یہ ہے کہ اگر کوئی اور اسے محفوظ رکھتا ہے (بد نیتی سے یا نہیں)، ڈویلپرز کو نجی رجسٹری میں پیکیج کے تمام ناموں کو تبدیل کرنا پڑے گا جو ابھی تک عوامی رجسٹری میں محفوظ ہونا باقی ہے۔ یہ ایک طویل اور تکلیف دہ عمل ہوسکتا ہے۔

یہ نوٹ کرنا ضروری ہے کہ تمام پیکج رجسٹریاں صارفین کو پیکیج کے نام محفوظ کرنے کی اجازت نہیں دیتی ہیں، اس لیے یقینی بنائیں کہ آپ کو ایسا کوئی مل جاتا ہے۔

باہر نکلیں، ریچھ کا تعاقب

انحصار کنفیوژن حملے عالمی سطح پر تنظیموں کے لیے ایک سنگین اور آسنن سائبر سیکیورٹی خطرہ ہیں۔ تمام تنظیموں میں سے تقریباً نصف خطرے میں ہیں، اور ان تنظیموں کے 73% اثاثے بے نقاب ہیں۔ اس بڑھتے ہوئے خطرے کا مقابلہ کرنے کے لیے، تنظیموں کو مضبوط حفاظتی اقدامات کو نافذ کرنا چاہیے اور سائبر سیکیورٹی کے بہترین طریقوں کو اپنانا چاہیے۔

Shakespeare’s roses may have presaged the risk of dependency confusion attacks by hundreds of years, but another quote from the Bard may hold some wisdom for protecting against them: “Let every eye negotiate for itself and trust no agent.” (Much Ado About Nothing, Act 2, Scene 1)

ٹائم اسٹیمپ:

سے زیادہ گہرا پڑھنا