</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

فصل ۲: مدل‌های تهدید (STRIDE/DREAD)

آموزش مدل‌سازی تهدید با چارچوب STRIDE و ارزیابی ریسک با DREAD، معرفی PASTA و درخت حمله، با تمرین عملی روی یک وب‌اپلیکیشن.

مقدماتی۱۲ دقیقه مطالعهآخرین بروزرسانی: ۸ تیر ۱۴۰۵ویرایش در گیت‌هاب

مدل‌سازی تهدید چیست؟#

مدل‌سازی تهدید (Threat Modeling) فرایندی ساختاریافته برای شناسایی، دسته‌بندی و اولویت‌بندی تهدیدات احتمالی علیه یک سیستم است. به‌جای صبر کردن تا وقوع حمله، تیم امنیت در مرحلهٔ طراحی، نقاط ورود، جریان داده و دارایی‌های ارزشمند را نقشه‌برداری می‌کند و سپس می‌پرسد: «چه کسی می‌تواند از کدام مسیر، به چه چیزی آسیب بزند؟»

شروع مدل‌سازی تهدید در فاز طراحی می‌تواند تا ۱۰۰ برابر ارزان‌تر از رفع آسیب‌پذیری در فاز تولید باشد. طبق اصل DevSecOps، امنیت باید Shift-Left یعنی به سمت چپِ مرحلهٔ توسعه منتقل شود تا در همان ابتدا کشف و رفع گردد.

مدل‌سازی تهدید یک‌باره نیست

بسیاری از سازمان‌ها مدل تهدید را یک‌بار در آغاز پروژه می‌سازند و سپس فراموش می‌کنند. هر تغییر معماری بزرگ (افزودن سرویس جدید، تغییر احراز هویت، انتقال به کلاد) باید منجر به به‌روزرسانی مدل تهدید شود.

مراحل چهارگانهٔ مدل‌سازی تهدید#

۱. شناسایی دارایی‌ها: چه چیزی ارزش محافظت دارد؟ (دادهٔ کاربر، کلیدها، سرویس‌ها) ۲. نقشه‌برداری معماری: دیاگرام جریان داده (DFD) رسم کنید. ۳. شناسایی تهدیدات: با چارچوب‌هایی مانند STRIDE تهدیدات را پیدا کنید. ۴. اولویت‌بندی و کاهش: با DREAD ریسک را امتیازدهی کرده و کنترل‌ها را تعیین کنید.

چارچوب STRIDE#

STRIDE که توسط مایکروسافت توسعه یافته، شش دستهٔ تهدید را پوشش می‌دهد. هر حرف نمایانگر یک دسته است:

حرفدستهنقض کدام اصل CIAمثال
SSpoofingمحرمانگی/اصالتسرست session cookie برای جعل هویت
TTamperingیکپارچگیتغییر پارامتر قیمت در فرم سفارش
RRepudiationعدم‌انکارکاربر خریدی را انکار کند چون لاگ ندارد
IInformation Disclosureمحرمانگیپیام خطای دیتابیس رمز را فاش کند
DDenial of Serviceدر دسترس‌بودنSYN flood برای قطع وب‌سایت
EElevation of Privilegeاصالت/کنترل دسترسیکاربر عادی با باگ به admin تبدیل شود

مثال برای هر دسته#

S — Spoofing: یک ایمیل فیشینگ با آدرس admin@paypa1.com (با عدد ۱ به‌جای حرف l) کاربر را گول می‌زند. پیشگیری: SPF، DKIM، DMARC و آموزش کاربر.

T — Tampering: مهاجم با ابزار Burp Suite مقدار price=999 را در درخواست POST به price=1 تغییر می‌دهد. پیشگیری: اعتبارسنجی سمت سرور و امضای دیجیتال روی مقادیر حساس.

R — Repudiation: کاربری مبالغ را از کیف پول برداشت می‌کند ولی چون تراکنش لاگ نشده، انکار می‌کند. پیشگیری: لاگ‌نویسی append-only با timestamp و امضای HMAC.

I — Information Disclosure: صفحهٔ ورود خطای «رمز اشتباه است برای کاربر admin» می‌دهد و به مهاجم می‌فهماند این کاربر وجود دارد. پیشگیری: پیام‌های خطای عمومی و مدیریت استثنا.

D — Denial of Service: حملات UDP reflection با تقویت DNS سرور را غرق می‌کنند. پیشگیری: rate limiting، CDN و فایروال‌های Anti-DDoS.

E — Elevation of Privilege: آسیب‌پذیری IDOR به کاربر عادی اجازه می‌دهد با تغییر user_id به ۱، پروفایل مدیر را ویرایش کند. پیشگیری: بررسی مجوز در هر درخواست (Authorization سمت سرور).

چارچوب DREAD برای اولویت‌بندی#

پس از شناسایی تهدید با STRIDE، از DREAD برای امتیازدهی استفاده می‌کنیم. هر معیار از ۱ تا ۱۰ امتیاز می‌گیرد و میانگین، ریسک کلی را نشان می‌دهد.

معیارسوال۱۱۰
Damageمیزان خسارتبدون خسارتفلج کامل
Reproducibilityتکرارپذیریسختهمیشه
Exploitabilityسهولت استثمارنیاز به متخصصکاربر مبتدی
Affected Usersکاربران تحت تأثیرهیچ‌کسهمه
Discoverabilityکشف‌پذیریپنهانبدیهی

نمونهٔ امتیازدهی#

فرض کنید تهدید «SQL Injection در صفحهٔ ورود» را شناسایی کرده‌ایم:

Damage          : 10  (سرقت همهٔ رمزهای عبور)
Reproducibility : 9   (همیشه با URL تکرار می‌شود)
Exploitability  : 8   (ابزار sqlmap خودکار است)
Affected Users  : 10  (تمام کاربران)
Discoverability : 7   (اسکنرها به‌راحتی پیدا می‌کنند)
------------------------------------
Average         : 8.8  (بحرانی)

امتیاز بالای ۷ یعنی باید قبل از Release اصلاح شود.

DREAD انتقادی است

انتقاد رایج به DREAD این است که امتیازدهی ذهنی است و دو تحلیل‌گر می‌توانند امتیازهای متفاوت بدهند. در عمل، با CVSS (Common Vulnerability Scoring System) که فرمول‌محور است ترکیبش کنید.

چارچوب PASTA#

PASTA (Process for Attack Simulation and Threat Analysis) یک روش هفت‌مرحله‌ای و risk-centric است:

۱. تعریف هدف کسب‌وکار ۲. تعریف scope فنی ۳. تجزیهٔ اپلیکیشن ۴. تحلیل تهدید ۵. تحلیل آسیب‌پذیری ۶. شبیه‌سازی حمله ۷. تحلیل ریسک و کاهش

PASTA نسبت به STRIDE زمان‌برتر اما برای سیستم‌های بحرانی مانند بانکداری مناسب‌تر است.

درخت حمله (Attack Tree)#

درخت حمله روشی بصری است که ریشهٔ درخت، هدف مهاجم (مثلاً «دزدی دیتابیس کاربران») و فرزندان، روش‌های دستیابی به آن هستند. هر گره با AND/OR به فرزندانش متصل می‌شود و می‌توان هزینه یا احتمال موفقیت را به هر مسیر نسبت داد.

دزدی دیتابیس کاربران
├── SQL Injection در فرم جستجو
│   ├── پیدا کردن پارامتر آسیب‌پذیر
│   └── دور زدن WAF
├── سرقت بک‌آپ
│   ├── دسترسی به S3 عمومی
│   └── فیشینگ ادمین DevOps
└── نفوذ داخلی
    ├── malware روی لپ‌تاپ DBA
    └── misuse دسترسی root

این روش به مدیران کمک می‌کند کنترل‌هایی را طراحی کنند که مسیرهای ارزشمند را قطع کنند.

تمرین عملی: مدل‌سازی تهدید یک وب‌اپلیکیشن#

فرض کنید یک اپلیکیشن فروشگاهی با معماری زیر داریم:

  • فرانت‌اند React
  • بک‌اند Node.js با Express
  • پایگاه‌داده PostgreSQL
  • احراز هویت JWT
  • آپلود فایل برای عکس کالا
  • پرداخت با درگاه شخص ثالث

مراحل مدل‌سازی:

۱. دارایی‌ها: دادهٔ کاربر (نام، آدرس، کارت)، حساب کاربری، موجودی انبار، کدهای تخفیف.

۲. DFD: کاربر به CDN، CDN به API Gateway، API Gateway به Express، Express به PostgreSQL/Redis و درگاه پرداخت.

۳. STRIDE: حداقل شش تهدید شناسایی کنید:

  • S: جعل JWT با کلید ضعیف
  • T: دستکاری مقدار مبلغ در درخواست پرداخت
  • R: انکار سفارش به‌دلیل نبود لاگ
  • I: نشت پیام خطای SQL
  • D: آپلود فایل حجیم برای پر کردن دیسک
  • E: IDOR برای ویرایش سفارش دیگران

۴. DREAD: هر کدام را امتیازدهی و سه تهدید با بالاترین امتیاز را برای رفع در اسرع وقت انتخاب کنید.

اشتباهات رایج مدل‌سازی

سه اشتباه متداول: الف) تمرکز فقط روی تهدیدات خارجی و فراموش‌کردن insider threat. ب) نادیده‌گرفتن زنجیرهٔ تأمین (پکیج‌های npm مخرب). ج) فهرست تهدیدات طولانی بدون اولویت‌بندی که هیچ اقدامی انجام نمی‌شود.

خلاصه و گام بعدی#

مدل‌سازی تهدید با STRIDE و DREAD به شما کمک می‌کند پیش از کدنویسی، آسیب‌پذیری‌ها را شناسایی و اولویت‌بندی کنید. PASTA و Attack Tree برای سیستم‌های پیچیده‌تر مفید هستند. کلید موفقیت، تکرارپذیری فرایند و به‌روزرسانی مدل با هر تغییر معماری است.

در فصل بعد با رمزنگاری و رمزگذاری آشنا می‌شوید؛ پایه‌ای‌ترین ابزار محافظت از محرمانگی و یکپارچگی داده.

اشتراک‌گذاری:

این صفحه در تاریخ ۸ تیر ۱۴۰۵ به‌روزرسانی شده است.