# مشخصات درس‌نامه: مدیریت Dependencyها، امنیت زنجیره تأمین و پکیج‌های توهمی هوش مصنوعی - **شناسه در سیلابس:** `L11.7` - **فصل:** فصل ۱۱: امنیت و استفاده مسئولانه (Ch 11) - **نوع محتوا:** 📘 درس‌نامه متنی - **زمان تقریبی مطالعه:** ۱۵ دقیقه - **پیش‌نیازهای مستقیم:** `L11.6` (امنیت دیتابیس و پروتکل امن آپلود فایل) --- ## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy) دانشجو پس از مطالعهٔ این درس‌نامه باید بتواند: - [ ] **درک کند (Understand):** مفهوم امنیت زنجیره تأمین نرم‌افزار (Software Supply Chain Security) را شرح دهد و بداند چرا بیش از ۸۰٪ کدهای یک پروژه مدرن توسط دیگران نوشته شده است. - [ ] **تحلیل/ارزیابی کند (Evaluate):** پدیده نوظهور و خطرناک «توهم پکیج توسط هوش مصنوعی» (AI Package Hallucination) و ترفند بدافزارنویسان در رجیستر کردن پکیج‌های جعلی در npm را ارزیابی کند. - [ ] **به‌کار ببندد (Apply):** ابزارهای ممیزی امنیت بسته‌ها (`npm audit` و `npm audit fix`) را برای کشف و ترمیم آسیب‌پذیری‌های کتابخانه‌ها در پروژه اجرا نماید. - [ ] **ایجاد کند (Create):** یک چک‌لیست ۳ معیاره سریع (دانلود هفتگی، ستاره‌های گیت‌هاب و تاریخ آخرین انتشار) برای اعتبارسنجی هر کتابخانه قبل از موافقت با نصب آن توسط ایجنت به کار گیرد. --- ## ۲. محدوده و مرزهای محتوا (Scope & Boundaries) ### آنچه باید پوشش داده شود (In-Scope): 1. **داستان واقعی پوشه `node_modules`: شهری شلوغ از کدهای دیگران:** * شما ۵ خط کد برای ارسال پیامک می‌نویسید، اما پشت صحنه ۵۰ پکیج مختلف برای پردازش شبکه و رمزنگاری نصب می‌شوند. 2. **پدیده وحشتناک پکیج‌های توهمی (Package Hallucination):** * سازوکار حمله: ایجنت در حین نوشتن کد، نام یک پکیج خیالی (مثلاً `next-supabase-sms-helper`) را اختراع کرده و پیشنهاد `npm install` می‌دهد. * هکرها با تحلیل لاگ‌های چت یا حدس توهم‌های رایج مدل‌ها، پکیجی با همان نام در سایت npm ثبت می‌کنند که حاوی کدهای سرقت کلیدهای محرمانه است! 3. **چک‌لیست ۳ مرحله‌ای وایب کدر پیش از تایید `npm install`:** * گام ۱: باز کردن صفحه پکیج در `npmjs.com`. * گام ۲: بررسی تعداد دانلود هفتگی (Weekly Downloads)؛ آیا هزاران نفر از آن استفاده می‌کنند یا فقط ۲۰ دانلود دارد؟ * گام ۳: بررسی پیوند مخزن گیت‌هاب و تاریخ آخرین آپدیت. 4. **ممیزی خودکار آسیب‌پذیری‌ها با `npm audit`:** * سطوح مختلف شدت خطر: Low, Moderate, High, Critical. * اجرای دستور `npm audit fix` برای ارتقای خودکار نسخه‌های دارای باگ بدون شکستن پروژه. 5. **نقش حیاتی فایل قفل `package-lock.json`:** * چرا این فایل شناسنامه دقیق با هشدارهای درهم‌سازی (Hash/Checksum) هر پکیج است و نباید پاک شود. 6. **دستورات چندسکویی اجرای ممیزی و پاک‌سازی وابستگی‌ها:** * دستورات در منوهای کشویی ویندوز، مک و لینوکس: - `npm audit` - `npm audit fix` 7. **کال‌اوت‌های آموزشی و هشدار کوئرا:** * کال‌اوت بنفش (`
`): حمله مشهور event-stream در تاریخ اکوسیستم جاوااسکریپت و چرایی اهمیت نظارت بر وابستگی‌ها. * کال‌اوت سبز (`
`): پایبندی به پکیج‌های رسمی و مطرح (نظیر Lucide Icons, Zod, Radix UI) به جای پکیج‌های متفرقه و گمنام. * کال‌اوت قرمز (`
`): هرگز به ایجنت اجازه اجرای دستورات ترمینال با پارامتر `--force` در هنگام نصب پکیج ندهید. ### آنچه نباید وارد آن شویم (Out-of-Scope): - راه‌اندازی رجیستری‌های پکیج اختصاصی سازمانی (Verdaccio / Nexus). - بازرسی بایت‌کد و مهندسی معکوس کدهای باینری پکیج‌ها. --- ## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms) | اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یک‌خطی ساده | | :--- | :--- | :--- | | Supply Chain Attack | حمله زنجیره تأمین | رخنه امنیتی ناشی از آلوده‌سازی کتابخانه‌ها یا پکیج‌های شخص ثالثی که پروژه‌ها به آن‌ها وابسته‌اند | | Package Hallucination | توهم پکیج | تولید نام یک کتابخانه ناموجود توسط مدل زبانی که پتانسیل سوءاستفاده توسط هکرها را دارد | | Typosquatting | غلط‌نام‌گذاری فریبکارانه | ثبت پکیجی مخرب با نامی بسیار شبیه به یک پکیج مشهور (مثلاً lodsh به جای lodash) | | npm audit | ممیزی بسته‌های ان‌پی‌ام | ابزار خط فرمان برای اسکن تمام پکیج‌های پروژه و مقایسه آن‌ها با پایگاه داده آسیب‌پذیری‌های جهانی | | Package Lockfile | فایل قفل وابستگی‌ها | سندی که ساختار درختی و نسخه‌های دقیق تک‌تک کتابخانه‌ها و اثر انگشت دیجیتال آن‌ها را ثبت می‌کند | --- ## ۴. جایگاه‌های تصاویر و نمودارها (Visual & Diagram Placeholders) > **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تک‌خانه‌ای وسط‌چین درج شوند: 1. **تصویر کاور درس:** `images/cover.png` * **موضوع:** اسکنر امنیتی اشعه آبی که کانتینرهای باربری دیجیتال پکیج‌ها را بررسی کرده و جعبه‌های مشکوک حاوی بدافزار قرمز را مهر باطل می‌زند. 2. **آناتومی خطر توهم پکیج توسط هوش مصنوعی:** `images/ai-package-hallucination-flow.png` * **موضوع:** اینفوگرافیک گام‌به‌گام: ۱) ایجنت پکیج خیالی پیشنهاد می‌دهد $\rightarrow$ ۲) هکر قبلاً آن را در npm ثبت کرده $\rightarrow$ ۳) توسعه‌دهنده ناآگاه نصب می‌کند $\rightarrow$ ۴) سرقت سکرت‌ها. 3. **خروجی دستور `npm audit` در ترمینال:** `images/npm-audit-terminal-output.png` * **موضوع:** اسکرین‌شات از پنجره ترمینال ادیتور با نمایش تعداد باگ‌های Moderate و High و اجرای موفق دستور `npm audit fix`. 4. **چک‌لیست ۳ گانه اصالت‌سنجی پکیج در سایت npm:** `images/npm-verification-checklist.png` * **موضوع:** تصویر گرافیکی از صفحه یک پکیج در npmjs.com با کادرهای نئونی دور آمار دانلود هفتگی، لایسنس و تاریخ آپدیت. --- ## ۵. بخش‌بندی و ساختار محتوایی پیشنهادی درس‌نامه (`README.md`) 1. **تیتر اصلی:** `# مدیریت Dependencyها، امنیت زنجیره تأمین و پکیج‌های توهمی هوش مصنوعی` 2. **مقدمه:** وقتی دستور `npm install` را می‌زنید، دقیقاً به چه کسانی در آن سوی کره زمین اجازه می‌دهید روی کامپیوتر شما کد اجرا کنند؟ 3. **جدول کاور درس** 4. **استعاره قطعات یدکی خودرو و کارخانه‌های تقلبی:** * نصب هر پکیج شبیه تعویض لنت ترمز است؛ قطعه باکیفیت استاندارد می‌خواهید یا قطعه بدون شناسنامه از یک دستفروش ناشناس؟ 5. **شبح تازه در دنیای وایب کدینگ: توهم پکیج (Package Hallucination):** * چطور مدل‌های زبانی پکیج‌هایی را که وجود خارجی ندارند از خود می‌سازند و هکرها چگونه در کمین نشسته‌اند. 6. **روش ۳ مرحله‌ای اعتبارسنجی پکیج قبل از تایید پیشنهاد ایجنت:** * بررسی در npmjs.com، چک کردن حجم دانلودها، و ستاره‌های ریپازیتوری. 7. **اجرای چکاپ سلامت پروژه‌ها با `npm audit`:** * درک سطوح آسیب‌پذیری و تفاوت میان هشدارهای سطحی با رخنه‌های بحرانی (Critical). 8. **تعمیر خودکار آسیب‌پذیری‌ها با دستور `npm audit fix`:** * ارتقای امن بدون خراب شدن کدهای سازگار. 9. **چرا نباید هرگز `package-lock.json` را به عنوان راه‌حل پاک کرد؟** * اهمیت پایداری بیلدهای آینده و ممانعت از نصب نسخه‌های تغییریافته. 10. **دستورات چندسکویی برای ممیزی سلامت پکیج‌ها:** * منوی کشویی سه‌گانه برای ویندوز، مک و لینوکس: - Windows (PowerShell): ```powershell npm audit npm audit fix ``` - macOS (Terminal): ```bash npm audit npm audit fix ``` - Linux (Bash): ```bash npm audit npm audit fix ``` 11. **باکس نکته Quera (`
`):** اهمیت مفهوم Least Dependency؛ همیشه به ایجنت بگویید: «آیا می‌توانیم این کار را با توابع داخلی جاوااسکریپت بدون نصب پکیج جدید انجام دهیم؟» 12. **باکس هشدار Quera (`
`):** خطر پکیج‌های تایپ‌اسکواتینگ (نام‌های شبیه و گمراه‌کننده)؛ همیشه املای کلمات را بازبینی کنید. 13. **باکس رضایت‌بخش Quera (`
`):** اجرای موفق `npm audit` و دیدن پیام شیرین `found 0 vulnerabilities`. 14. **جمع‌بندی درس‌نامه:** مهار کامل زنجیره تأمین نرم‌افزار؛ ورود به مبحث حیاتی جلوگیری از حملات منع سرویس با Rate Limiting در درس بعدی. --- ## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer) - [ ] مفهوم امنیت زنجیره تأمین و خطرات پکیج‌های متفرقه تبیین شود. - [ ] پدیده نوین توهم پکیج توسط هوش مصنوعی با مثال‌های عینی تشریح گردد. - [ ] دستورات `npm audit` و `npm audit fix` در قالب تب‌های چندسکویی ارائه شود. - [ ] چک‌لیست ۳ مرحله‌ای اعتبارسنجی پکیج‌ها در سایت npm گنجانده شود.