এনপিএম দুর্বলতাগুলি ম্যানুয়ালি কীভাবে ঠিক করবেন?


95

আমি যখন npm installএটি চালায় found 33 vulnerabilities (2 low, 31 moderate) run `npm audit fix` to fix them, or `npm audit` for details

তবে npm audit fixআউটপুটসup to date in 11s fixed 0 of 33 vulnerabilities in 24653 scanned packages 33 vulnerabilities required manual review and could not be updated

এর reviewঅর্থ কি এটি ব্যবহারকারীর দ্বারা স্থির করার কথা নয়?

আমি যখন চালনা npm auditকরি তখন এটি আমাকে অনুরূপ সারণীগুলির তালিকা দেয়:

┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low           │ Prototype Pollution                                          │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package       │ lodash                                                       │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in    │ >=4.17.5                                                     │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ browser-sync [dev]                                           │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path          │ browser-sync > easy-extender > lodash                        │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info     │ https://nodesecurity.io/advisories/577                       │
└───────────────┴──────────────────────────────────────────────────────────────┘

এই উদাহরণে লিঙ্কযুক্ত পৃষ্ঠার প্রতিকার বিভাগ বলছে Update to version 4.17.5 or later.। তবে, /node_modules/browser-sync/package.jsonলাইন রয়েছে:

"devDependencies": {
    "lodash-cli": "4.17.5",
}

এবং আর কোনও লোডাস নির্ভরতা নেই। সুতরাং এটি ইতিমধ্যে v4.17.5 হওয়া উচিত। /node_modules/lodash/lodash.jsonকোনটি var VERSION = '4.17.10';লাইন আছে তাও আমি পরীক্ষা করেছিলাম । ইন /node_modules/lodash/package.jsonএই লাইন আছে:

  "_from": "lodash@^4.17.4",
  "_id": "lodash@4.17.10",

আমি বিশ্বাস করি যে সংস্করণটি "_id" এ দেখানো হয়েছে, "_ফর্ম" থেকে নয়, সুতরাং সংস্করণগুলি সঠিক তবে দুর্বলতা এখনও নিরীক্ষণের তালিকায় উপস্থিত রয়েছে।

আমি এখনও নোড.জেজে নতুন এবং সেই বার্তাগুলি আমাকে অনেকটা বিভ্রান্ত করে। এটিকে ম্যানুয়ালি সংশোধন করার বা সেই বার্তাগুলি থেকে মুক্তি পাওয়ার কোনও উপায় আছে, আমি এর সাথে কিছুই করতে পারি না?


উত্তর:


33

lodash-cliমধ্যে devDependenciesকোনো প্রভাব পড়ে না কিভাবে browser-syncআপনার প্রকল্পের মধ্যে কাজ, devDependenciesযখন একটি প্যাকেজ নির্ভরশীলতা রূপে ইনস্টল করা উপেক্ষা করা হয়।

কি auditরিপোর্ট বলে easy-extenderযে এটি lodashনির্ভরতা আছে:

browser-sync > easy-extender > lodash        

এটা তোলে Lodash 3 উপর নির্ভর করে , যখন সমস্যা Lodash 4. সমস্যা সংশোধন করা হয়েছে forking দ্বারা নির্ধারিত করা যেতে পারে easy-extender, এটা আপডেট করা এবং NPM পাবলিক রেজিস্ট্রি থেকে প্যাকেজের পরিবর্তে এটি ইনস্টল করার। তবে এই নির্ভরতা নিয়ে কোনও আসল সমস্যা নেই।

auditরিপোর্ট গুরুত্ব ম্যানুয়ালি মূল্যায়ন করা উচিত। এমনকি নেস্টেড নির্ভরতাতে নিরাপত্তা ঝুঁকি থাকলেও, এর অর্থ এই নয় যে এই ঝুঁকিটি প্রবর্তন করে এমন কোনও বৈশিষ্ট্য ব্যবহৃত হয়েছিল। এর অর্থ এই নয় যে এটি ব্যবহার করা হলেও এটি কীভাবে এটি ব্যবহার করে তার কারণে এটি প্রকৃত ঝুঁকিটি প্রবর্তন করে।

browser-syncহ'ল বিকাশ সরঞ্জাম যা উত্পাদনে ব্যবহৃত হয় না, এমন অনেক পরিস্থিতি নেই যেখানে এর দুর্বলতাগুলি কাজে লাগানো যেতে পারে। এবং প্রোটোটাইপ দূষণ মোটেও দুর্বলতা নয়, কেবলমাত্র একটি বিজ্ঞপ্তি যে কোনও প্যাকেজটি ভাল অভ্যাসগুলি অনুসরণ করে না, এটিকে এড়ানো যায়।

সাধারণত, প্রতিবেদনিত দুর্বলতাগুলি ঠিক করার উপায় এটি:

  • একটি স্যানিটি চেক করুন
  • যদি এটি আসল সমস্যা হয় তবে বিদ্যমান সমস্যা এবং PR এর জন্য দুর্বল প্যাকেজের সংগ্রহস্থলটি পরীক্ষা করুন
  • যদি কিছুই না থাকে তবে একটি সমস্যা জমা দিন
  • একটি সংগ্রহস্থলটি কাঁটাচামচ করুন বা এনপিএম রিলিজে স্থির না হওয়া অবধি বিদ্যমান পিআর গিট নির্ভরতা হিসাবে ব্যবহার করুন
  • নেস্টেড নির্ভরতাগুলির ক্ষেত্রে, নীড়ের বিভিন্ন স্তরে এটি করুন

বেশিরভাগ সময় এটি প্রত্যাশা করা হয় যে আপনি স্যানিটি চেকের বাইরে অগ্রসর হবেন না।

patch-packageনেস্টেড নির্ভরশীলতাগুলিকে প্যাচ করতে সহায়তা করতে পারে তবে এটি auditপ্রতিবেদনকে প্রভাবিত করবে না ।


আমি পথ বিভাগে মনোযোগ দিই নি, এবং এটি সত্যই লোড্যাশ v3.10.1 ব্যবহার করে, ধন্যবাদ। তবে ব্রাউজার-সিঙ্ক হ'ল উদাহরণ, তালিকার শেষ একটি। সুতরাং, আমি 2 টি স্বল্প দুর্বলতা উপেক্ষা করতে পারি, তবে আমি কি 31 টি মধ্যপন্থী উপেক্ষা করতে পারি? আমি মনে করি যে আমার মধ্যে কোনও কিছু সংশোধন করা উচিত নয় node_modules, তাই কি কাঁটাচামচ করা এবং ফিক্সিং করা এগুলি থেকে মুক্তি পাওয়ার একমাত্র উপায়? এবং নতুন ব্যবহারকারী হিসাবে আমার এটি করার ক্ষমতা নেই? আমি কি তাদের সম্পর্কে প্যাকেজ বিকাশকারীদের ইস্যু করব?
জাকুপভ

4
তবে আমি কি 31 টি মধ্যপন্থীদের উপেক্ষা করতে পারি? - এই হল 'স্যানিটি চেক' যা আপনার রায়টি ব্যবহার করুন। এই প্রতিবেদনগুলি আসলে যা বলেছে তার প্রতি আপনি যত বেশি মনোযোগ দেবেন, আপনি তত উন্নত বিকাশকারী হয়ে উঠতে পারবেন, সুরক্ষিত। আমি কি তাদের সম্পর্কে প্যাকেজ বিকাশকারীদের ইস্যু করব? - আপনার সম্ভবত হওয়া উচিত (কমপক্ষে চুপ করে auditযাওয়া), উত্তরগুলি উত্তর দেয়। মানুষ npm auditকোনওরকম ছাড়া বাঁচত। অ্যাপ্লিকেশনটিতে তারা প্রকৃত সুরক্ষার সমস্যার কারণ হতে পারে এমন সম্ভাবনাগুলি খুব কম, তবে তারা কী এবং আপনার অ্যাপে কীভাবে ব্যবহৃত হয় তা না জেনে আমি তার গ্যারান্টি দিতে পারি না।
এস্টাস ফ্লাস্ক

ধন্যবাদ! মন্তব্য লেখার জন্য সময় নিয়েছে, তাই মন্তব্য করার আগে সম্পাদিত অংশটি দেখেনি।
জাকুপভ

5

আপনি যদি নিখুঁতভাবে নিশ্চিত হন যে আপনি নিরীক্ষণটি এড়াতে চান তবে আপনি - না-নিরীক্ষা যুক্ত করে এটি করতে পারেন

 npm install --no-audit

2

'এনপিএম অডিট ফিক্স' প্যাকেজ.জসনে নির্ভরতার সংস্করণ বৃদ্ধি করবে যা কোড ভঙ্গ করতে পারে। সুতরাং আরও ভাল উপায় হ'ল প্যাকেজ-লক.জসন খোলার এবং নির্ভরতা / উপ-নির্ভরতা সংস্করণগুলি প্রয়োজনীয় সংস্করণে আপডেট করা। সংগ্রহস্থলটিতে প্যাকেজ-লক.জসন বজায় রাখুন।

কখনও কখনও দুর্বলতাগুলি ডেভ প্যাকেজগুলি থেকে হয়, সেক্ষেত্রে সেই দুর্বলতাগুলিকে উপেক্ষা করুন কারণ সেগুলি উত্পাদনে উঠছে না।


-3

আমার সিস্টেমে সবচেয়ে বেশি সমস্যাটি হয়েছিল এনপিএম প্যাকেজের কারণে। আমি চেষ্টা করেছিলাম,

npm un npm

আপনাকে আর ইনস্টল করতে হবে না।

আবার প্রোগ্রাম চালান। এটা আমার জন্য কাজ করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.