12 KiB
12 KiB
مشخصات درسنامه: مدیریت 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):
- داستان واقعی پوشه
node_modules: شهری شلوغ از کدهای دیگران:- شما ۵ خط کد برای ارسال پیامک مینویسید، اما پشت صحنه ۵۰ پکیج مختلف برای پردازش شبکه و رمزنگاری نصب میشوند.
- پدیده وحشتناک پکیجهای توهمی (Package Hallucination):
- سازوکار حمله: ایجنت در حین نوشتن کد، نام یک پکیج خیالی (مثلاً
next-supabase-sms-helper) را اختراع کرده و پیشنهادnpm installمیدهد. - هکرها با تحلیل لاگهای چت یا حدس توهمهای رایج مدلها، پکیجی با همان نام در سایت npm ثبت میکنند که حاوی کدهای سرقت کلیدهای محرمانه است!
- سازوکار حمله: ایجنت در حین نوشتن کد، نام یک پکیج خیالی (مثلاً
- چکلیست ۳ مرحلهای وایب کدر پیش از تایید
npm install:- گام ۱: باز کردن صفحه پکیج در
npmjs.com. - گام ۲: بررسی تعداد دانلود هفتگی (Weekly Downloads)؛ آیا هزاران نفر از آن استفاده میکنند یا فقط ۲۰ دانلود دارد؟
- گام ۳: بررسی پیوند مخزن گیتهاب و تاریخ آخرین آپدیت.
- گام ۱: باز کردن صفحه پکیج در
- ممیزی خودکار آسیبپذیریها با
npm audit:- سطوح مختلف شدت خطر: Low, Moderate, High, Critical.
- اجرای دستور
npm audit fixبرای ارتقای خودکار نسخههای دارای باگ بدون شکستن پروژه.
- نقش حیاتی فایل قفل
package-lock.json:- چرا این فایل شناسنامه دقیق با هشدارهای درهمسازی (Hash/Checksum) هر پکیج است و نباید پاک شود.
- دستورات چندسکویی اجرای ممیزی و پاکسازی وابستگیها:
- دستورات در منوهای کشویی ویندوز، مک و لینوکس:
npm auditnpm audit fix
- دستورات در منوهای کشویی ویندوز، مک و لینوکس:
- کالاوتهای آموزشی و هشدار کوئرا:
- کالاوت بنفش (
<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/ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
- تصویر کاور درس:
images/cover.png- موضوع: اسکنر امنیتی اشعه آبی که کانتینرهای باربری دیجیتال پکیجها را بررسی کرده و جعبههای مشکوک حاوی بدافزار قرمز را مهر باطل میزند.
- آناتومی خطر توهم پکیج توسط هوش مصنوعی:
images/ai-package-hallucination-flow.png- موضوع: اینفوگرافیک گامبهگام: ۱) ایجنت پکیج خیالی پیشنهاد میدهد
\rightarrow۲) هکر قبلاً آن را در npm ثبت کرده\rightarrow۳) توسعهدهنده ناآگاه نصب میکند\rightarrow۴) سرقت سکرتها.
- موضوع: اینفوگرافیک گامبهگام: ۱) ایجنت پکیج خیالی پیشنهاد میدهد
- خروجی دستور
npm auditدر ترمینال:images/npm-audit-terminal-output.png- موضوع: اسکرینشات از پنجره ترمینال ادیتور با نمایش تعداد باگهای Moderate و High و اجرای موفق دستور
npm audit fix.
- موضوع: اسکرینشات از پنجره ترمینال ادیتور با نمایش تعداد باگهای Moderate و High و اجرای موفق دستور
- چکلیست ۳ گانه اصالتسنجی پکیج در سایت npm:
images/npm-verification-checklist.png- موضوع: تصویر گرافیکی از صفحه یک پکیج در npmjs.com با کادرهای نئونی دور آمار دانلود هفتگی، لایسنس و تاریخ آپدیت.
۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (README.md)
- تیتر اصلی:
# مدیریت Dependencyها، امنیت زنجیره تأمین و پکیجهای توهمی هوش مصنوعی - مقدمه: وقتی دستور
npm installرا میزنید، دقیقاً به چه کسانی در آن سوی کره زمین اجازه میدهید روی کامپیوتر شما کد اجرا کنند؟ - جدول کاور درس
- استعاره قطعات یدکی خودرو و کارخانههای تقلبی:
- نصب هر پکیج شبیه تعویض لنت ترمز است؛ قطعه باکیفیت استاندارد میخواهید یا قطعه بدون شناسنامه از یک دستفروش ناشناس؟
- شبح تازه در دنیای وایب کدینگ: توهم پکیج (Package Hallucination):
- چطور مدلهای زبانی پکیجهایی را که وجود خارجی ندارند از خود میسازند و هکرها چگونه در کمین نشستهاند.
- روش ۳ مرحلهای اعتبارسنجی پکیج قبل از تایید پیشنهاد ایجنت:
- بررسی در npmjs.com، چک کردن حجم دانلودها، و ستارههای ریپازیتوری.
- اجرای چکاپ سلامت پروژهها با
npm audit:- درک سطوح آسیبپذیری و تفاوت میان هشدارهای سطحی با رخنههای بحرانی (Critical).
- تعمیر خودکار آسیبپذیریها با دستور
npm audit fix:- ارتقای امن بدون خراب شدن کدهای سازگار.
- چرا نباید هرگز
package-lock.jsonرا به عنوان راهحل پاک کرد؟- اهمیت پایداری بیلدهای آینده و ممانعت از نصب نسخههای تغییریافته.
- دستورات چندسکویی برای ممیزی سلامت پکیجها:
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- Windows (PowerShell):
npm audit npm audit fix - macOS (Terminal):
npm audit npm audit fix - Linux (Bash):
npm audit npm audit fix
- Windows (PowerShell):
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- باکس نکته Quera (
<details class="violet">): اهمیت مفهوم Least Dependency؛ همیشه به ایجنت بگویید: «آیا میتوانیم این کار را با توابع داخلی جاوااسکریپت بدون نصب پکیج جدید انجام دهیم؟» - باکس هشدار Quera (
<details class="red">): خطر پکیجهای تایپاسکواتینگ (نامهای شبیه و گمراهکننده)؛ همیشه املای کلمات را بازبینی کنید. - باکس رضایتبخش Quera (
<details class="green">): اجرای موفقnpm auditو دیدن پیام شیرینfound 0 vulnerabilities. - جمعبندی درسنامه: مهار کامل زنجیره تأمین نرمافزار؛ ورود به مبحث حیاتی جلوگیری از حملات منع سرویس با Rate Limiting در درس بعدی.
۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- مفهوم امنیت زنجیره تأمین و خطرات پکیجهای متفرقه تبیین شود.
- پدیده نوین توهم پکیج توسط هوش مصنوعی با مثالهای عینی تشریح گردد.
- دستورات
npm auditوnpm audit fixدر قالب تبهای چندسکویی ارائه شود. - چکلیست ۳ مرحلهای اعتبارسنجی پکیجها در سایت npm گنجانده شود.