123 lines
12 KiB
Markdown
123 lines
12 KiB
Markdown
# مشخصات درسنامه: مدیریت 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. **کالاوتهای آموزشی و هشدار کوئرا:**
|
||
* کالاوت بنفش (`<details class="violet">`): حمله مشهور event-stream در تاریخ اکوسیستم جاوااسکریپت و چرایی اهمیت نظارت بر وابستگیها.
|
||
* کالاوت سبز (`<details class="green">`): پایبندی به پکیجهای رسمی و مطرح (نظیر Lucide Icons, Zod, Radix UI) به جای پکیجهای متفرقه و گمنام.
|
||
* کالاوت قرمز (`<details class="red">`): هرگز به ایجنت اجازه اجرای دستورات ترمینال با پارامتر `--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 (`<details class="violet">`):** اهمیت مفهوم Least Dependency؛ همیشه به ایجنت بگویید: «آیا میتوانیم این کار را با توابع داخلی جاوااسکریپت بدون نصب پکیج جدید انجام دهیم؟»
|
||
12. **باکس هشدار Quera (`<details class="red">`):** خطر پکیجهای تایپاسکواتینگ (نامهای شبیه و گمراهکننده)؛ همیشه املای کلمات را بازبینی کنید.
|
||
13. **باکس رضایتبخش Quera (`<details class="green">`):** اجرای موفق `npm audit` و دیدن پیام شیرین `found 0 vulnerabilities`.
|
||
14. **جمعبندی درسنامه:** مهار کامل زنجیره تأمین نرمافزار؛ ورود به مبحث حیاتی جلوگیری از حملات منع سرویس با Rate Limiting در درس بعدی.
|
||
|
||
---
|
||
|
||
## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
|
||
- [ ] مفهوم امنیت زنجیره تأمین و خطرات پکیجهای متفرقه تبیین شود.
|
||
- [ ] پدیده نوین توهم پکیج توسط هوش مصنوعی با مثالهای عینی تشریح گردد.
|
||
- [ ] دستورات `npm audit` و `npm audit fix` در قالب تبهای چندسکویی ارائه شود.
|
||
- [ ] چکلیست ۳ مرحلهای اعتبارسنجی پکیجها در سایت npm گنجانده شود.
|