Files

12 KiB
Raw Blame History

مشخصات درس‌نامه: مدیریت 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):
        npm audit
        npm audit fix
        
      • macOS (Terminal):
        npm audit
        npm audit fix
        
      • Linux (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 گنجانده شود.