diff --git a/2025/docs/fa/A01-2025 Broken Access Control.md b/2025/docs/fa/A01-2025 Broken Access Control.md new file mode 100644 index 000000000..ae1342b16 --- /dev/null +++ b/2025/docs/fa/A01-2025 Broken Access Control.md @@ -0,0 +1,95 @@ +# A01:2025 نقض کنترل دسترسی (Broken Access Control) + +این دسته به دلیل تأثیر شدید و شایع بودن آسیب‌پذیری‌های مرتبط با کنترل دسترسی، همچنان در جایگاه شماره ۱ در Top Ten قرار دارد. تمامی برنامه‌های آزمایش‌شده حداقل یک نوع از مشکلات مرتبط با کنترل دسترسی را داشتند و از نظر تعداد CVEهای مرتبط، این دسته رتبه دوم را بین سایر دسته‌ها دارد. + +CWEهای مهم در این دسته عبارتند از: +- [CWE-200](https://cwe.mitre.org/data/definitions/200.html): افشای اطلاعات حساس به کاربران یا نقش‌های غیرمجاز +- [CWE-201](https://cwe.mitre.org/data/definitions/201.html): افشای اطلاعات حساس از طریق داده‌های ارسال‌شده (مثل فرم یا API) +- [CWE-918](https://cwe.mitre.org/data/definitions/918.html): جعل درخواست سمت سرور (SSRF) +- [CWE-352](https://cwe.mitre.org/data/definitions/352.html): جعل درخواست بین‌سایتی (CSRF) + +## جدول امتیازدهی + +| تعداد CWEها | بیشینه نرخ وقوع | میانگین نرخ وقوع | بیشینه پوشش | میانگین پوشش | میانگین امتیاز Exploit | میانگین امتیاز Impact | کل وقوع‌ها | +|-------------|----------------|-----------------|-------------|---------------|------------------------|----------------------|-------------| +| 40 | 20.15% | 3.74% | 100% | 42.93% | 7.04 | 3.84 | 1,839,701 | + +## توضیحات + +کنترل دسترسی سیاست‌ها را اجرا می‌کند تا کاربران تنها به منابع و عملکردهایی دسترسی داشته باشند که مجاز هستند. شکست در این کنترل‌ها معمولاً منجر به افشای غیرمجاز اطلاعات، تغییر یا حذف داده‌ها، یا اجرای عملکرد کسب‌وکار خارج از مجوز کاربر می‌شود. + +### آسیب‌پذیری‌های رایج +- نقض اصل حداقل دسترسی (Deny by Default) +- دور زدن کنترل‌ها با تغییر URL، پارامترها، صفحات HTML یا درخواست‌های API +- اجازه دسترسی یا ویرایش حساب دیگران (IDOR) +- API بدون کنترل دسترسی برای متدهای POST، PUT و DELETE +- افزایش سطح دسترسی بدون مجوز +- دستکاری Metadata (JWT، کوکی‌ها، hidden field) +- تنظیم نادرست CORS +- Force Browsing: حدس URL صفحات احراز هویت‌شده یا صفحات با دسترسی بالا + +### روش‌های پیشگیری +- اعمال Deny by default برای تمام منابع به جز بخش‌های عمومی +- پیاده‌سازی کنترل دسترسی متمرکز و قابل استفاده مجدد +- مدل‌سازی دسترسی بر اساس مالکیت رکورد +- اعمال محدودیت‌های منطقی کسب‌وکار از طریق Domain Models +- غیرفعال کردن Directory Listing و حذف فایل‌های متادیتا و پشتیبان +- ثبت Log شکست‌های دسترسی و ارسال هشدار +- اعمال Rate Limit روی APIها +- ابطال شناسه‌های جلسه و تعیین زمان انقضای کوتاه برای JWTهای Stateless +- استفاده از toolkitها یا الگوهای معتبر برای کنترل دسترسی Declarative +- افزودن تست‌های کنترل دسترسی در Unit و Integration Tests + +### نمونه سناریوهای حمله +**سناریو ۱:** مهاجم پارامتر acct را تغییر داده و به حساب هر کاربری دسترسی پیدا می‌کند. +**سناریو ۲:** مهاجم URLهای مدیریتی را هدف قرار می‌دهد. اگر یک کاربر معمولی بتواند صفحات ادمین را ببیند یا بدون احراز هویت وارد شود، نقص امنیتی ایجاد می‌شود. +**سناریو ۳:** تمام کنترل‌ها در فرانت‌اند پیاده شده‌اند. مهاجم می‌تواند مستقیماً درخواست‌ها را به سرور ارسال کند و کنترل‌های دسترسی را دور بزند. + +### لیست CWEهای مرتبط + +- [CWE-22](https://cwe.mitre.org/data/definitions/22.html) محدودیت نادرست مسیر به دایرکتوری مجاز (Path Traversal) +- [CWE-23](https://cwe.mitre.org/data/definitions/23.html) مسیر نسبی نادرست (Relative Path Traversal) +- [CWE-36](https://cwe.mitre.org/data/definitions/36.html) مسیر مطلق نادرست (Absolute Path Traversal) +- [CWE-59](https://cwe.mitre.org/data/definitions/59.html) حل لینک نادرست قبل از دسترسی به فایل (Link Following) +- [CWE-61](https://cwe.mitre.org/data/definitions/61.html) دنبال کردن لینک نمادین UNIX (Symlink) +- [CWE-65](https://cwe.mitre.org/data/definitions/65.html) لینک سخت Windows +- [CWE-200](https://cwe.mitre.org/data/definitions/200.html) افشای اطلاعات حساس به کاربران یا نقش‌های غیرمجاز +- [CWE-201](https://cwe.mitre.org/data/definitions/201.html) افشای اطلاعات حساس از طریق داده‌های ارسال‌شده +- [CWE-219](https://cwe.mitre.org/data/definitions/219.html) ذخیره فایل با داده حساس زیر Web Root +- [CWE-276](https://cwe.mitre.org/data/definitions/276.html) مجوزهای پیش‌فرض نادرست +- [CWE-281](https://cwe.mitre.org/data/definitions/281.html) نگهداری نادرست مجوزها +- [CWE-282](https://cwe.mitre.org/data/definitions/282.html) مدیریت مالکیت نادرست +- [CWE-283](https://cwe.mitre.org/data/definitions/283.html) مالکیت تأییدنشده +- [CWE-284](https://cwe.mitre.org/data/definitions/284.html) کنترل دسترسی نادرست +- [CWE-285](https://cwe.mitre.org/data/definitions/285.html) مجوزدهی نادرست +- [CWE-352](https://cwe.mitre.org/data/definitions/352.html) جعل درخواست بین‌سایتی (CSRF) +- [CWE-359](https://cwe.mitre.org/data/definitions/359.html) افشای اطلاعات شخصی خصوصی به کاربران غیرمجاز +- [CWE-377](https://cwe.mitre.org/data/definitions/377.html) فایل موقت ناامن +- [CWE-379](https://cwe.mitre.org/data/definitions/379.html) ایجاد فایل موقت در دایرکتوری با مجوزهای ناامن +- [CWE-402](https://cwe.mitre.org/data/definitions/402.html) انتقال منابع خصوصی به حوزه جدید (Resource Leak) +- [CWE-424](https://cwe.mitre.org/data/definitions/424.html) محافظت نادرست مسیر جایگزین +- [CWE-425](https://cwe.mitre.org/data/definitions/425.html) درخواست مستقیم (Forced Browsing) +- [CWE-441](https://cwe.mitre.org/data/definitions/441.html) پراکسی یا واسطه ناخواسته (Confused Deputy) +- [CWE-497](https://cwe.mitre.org/data/definitions/497.html) افشای اطلاعات حساس سیستم به حوزه کنترل غیرمجاز +- [CWE-538](https://cwe.mitre.org/data/definitions/538.html) وارد کردن اطلاعات حساس به فایل یا دایرکتوری قابل دسترس خارجی +- [CWE-540](https://cwe.mitre.org/data/definitions/540.html) گنجاندن اطلاعات حساس در کد منبع +- [CWE-548](https://cwe.mitre.org/data/definitions/548.html) افشای اطلاعات از طریق فهرست‌گذاری دایرکتوری +- [CWE-552](https://cwe.mitre.org/data/definitions/552.html) فایل‌ها یا دایرکتوری‌های قابل دسترسی به طرف‌های خارجی +- [CWE-566](https://cwe.mitre.org/data/definitions/566.html) دورزدن مجوز از طریق کلید اولیه SQL کنترل‌شده توسط کاربر +- [CWE-601](https://cwe.mitre.org/data/definitions/601.html) هدایت URL به سایت غیرقابل اعتماد (Open Redirect) +- [CWE-615](https://cwe.mitre.org/data/definitions/615.html) گنجاندن اطلاعات حساس در نظرات کد منبع +- [CWE-639](https://cwe.mitre.org/data/definitions/639.html) دورزدن مجوز از طریق کلید کنترل‌شده توسط کاربر +- [CWE-668](https://cwe.mitre.org/data/definitions/668.html) افشای منابع به حوزه نادرست +- [CWE-732](https://cwe.mitre.org/data/definitions/732.html) تخصیص مجوز نادرست برای منابع حیاتی +- [CWE-749](https://cwe.mitre.org/data/definitions/749.html) متد یا تابع خطرناک افشا شده +- [CWE-862](https://cwe.mitre.org/data/definitions/862.html) مجوزدهی گم‌شده +- [CWE-863](https://cwe.mitre.org/data/definitions/863.html) مجوزدهی نادرست +- [CWE-918](https://cwe.mitre.org/data/definitions/918.html) جعل درخواست سمت سرور (SSRF) +- [CWE-922](https://cwe.mitre.org/data/definitions/922.html) ذخیره نادرست اطلاعات حساس +- [CWE-1275](https://cwe.mitre.org/data/definitions/1275.html) کوکی حساس با ویژگی SameSite نادرست + +### منابع +- [OWASP Top 10:2025 - A01 Broken Access Control](https://owasp.org/Top10/2025/A01_2025-Broken_Access_Control/) +- [OWASP Proactive Controls: C1: Implement Access Control](https://top10proactive.owasp.org) +- [OWASP Application Security Verification Standard: V8 Authorization](https://github.com/OWASP/ASVS) +- [CWE List](https://cwe.mitre.org/data/index.html) diff --git a/2025/docs/fa/A02-2025 Security Misconfiguration.md b/2025/docs/fa/A02-2025 Security Misconfiguration.md new file mode 100644 index 000000000..65d4b513f --- /dev/null +++ b/2025/docs/fa/A02-2025 Security Misconfiguration.md @@ -0,0 +1,69 @@ +# A02:2025 خطا در پیکربندی امنیتی (Security Misconfiguration) + +این ریسک در نسخه جدید از رتبه ۵ به رتبه ۲ صعود کرده است، چرا که در بررسی‌ها مشخص شد ۱۰۰٪ برنامه‌های آزمایش‌شده حداقل یک نوع پیکربندی نادرست داشته‌اند. میانگین نرخ بروز این ضعف ۳٪ بوده و بیش از ۷۱۹,۰۰۰ مورد از ضعف‌های مرتبط با CWE در این دسته شناسایی شده است. + +مهم‌ترین CWEهای مرتبط شامل [CWE-16](https://cwe.mitre.org/data/definitions/16.html) (Configuration) و [CWE-611](https://cwe.mitre.org/data/definitions/611.html) (Improper Restriction of XML External Entity Reference – XXE) هستند. + +## جدول امتیازدهی + +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | +|------------------------|----------------|-----------------|---------------|---------------|----------------------------|----------------------|-----------------| +| 16 | 27.70% | 3.00% | 100% | 52.35% | 7.96 | 3.97 | 719,084 | + +## توضیحات + +پیکربندی نادرست امنیتی زمانی رخ می‌دهد که سیستم، برنامه یا سرویس ابری از نظر امنیتی به‌درستی تنظیم نشده باشد و این مسئله باعث ایجاد آسیب‌پذیری شود. + +### موارد شایع +- فقدان تقویت امنیتی مناسب (Security Hardening) در بخش‌های مختلف یا مجوزهای نادرست سرویس‌های ابری +- فعال یا نصب بودن ویژگی‌ها و قابلیت‌های غیرضروری (پورت‌ها، سرویس‌ها، حساب‌ها، ابزارهای تست و…) +- استفاده از حساب‌ها و رمزهای عبور پیش‌فرض بدون تغییر +- عدم وجود پیکربندی مرکزی برای جلوگیری از نمایش پیام‌های خطای بیش از حد (Stack Trace یا پیام‌های اطلاعاتی) +- غیرفعال بودن یا پیکربندی نادرست ویژگی‌های امنیتی جدید در سیستم‌های ارتقا یافته +- اولویت بیش از حد به سازگاری با نسخه‌های قدیمی، ایجاد پیکربندی‌های ناامن +- سرور و فریم‌ورک‌ها، کتابخانه‌ها و دیتابیس‌ها روی مقادیر امن تنظیم نشده باشند +- عدم ارسال هدرها یا دستورات امنیتی یا پیکربندی نادرست آن‌ها + +### روش‌های پیشگیری +- پیاده‌سازی فرآیند سخت‌سازی تکرارپذیر برای محیط‌های Development، QA و Production با اعتبارنامه‌های متفاوت و ترجیحاً خودکار +- استفاده از پلتفرم حداقلی بدون ویژگی‌ها یا نمونه‌های غیرضروری +- بازبینی و به‌روزرسانی پیکربندی‌ها مطابق با security notes، patchها و به‌روزرسانی‌ها +- بررسی سطح دسترسی ذخیره‌سازهای ابری (مثل S3 Bucket) +- طراحی معماری بخش‌بندی‌شده (segmented) شامل segmentation، containerization و cloud security groups +- ارسال security directives به سمت کلاینت‌ها، مانند Security Headers +- پیاده‌سازی فرآیند خودکار یا حداقل سالی یک‌بار بررسی دستی اثربخشی تنظیمات امنیتی +- افزودن پیکربندی مرکزی برای جلوگیری از نمایش پیام‌های خطای بیش‌ازحد + +### مثال سناریوهای حمله +1. نمونه‌اپلیکیشن‌های حذف‌نشده از محیط تولید با ضعف‌های امنیتی شناخته‌شده. مهاجم می‌تواند از حساب‌ها و رمزهای پیش‌فرض برای کنترل سیستم استفاده کند. +2. Directory Listing غیرفعال نشده، مهاجم می‌تواند فایل‌ها را دانلود و با مهندسی معکوس کد را مشاهده کند. +3. پیام‌های خطای دقیق مانند stack trace به کاربر نمایش داده شود که اطلاعات حساس فاش شود. +4. ارائه‌دهنده خدمات ابری (CSP) سطح دسترسی پیش‌فرض را روی اینترنت باز گذاشته باشد، داده‌های حساس بدون محدودیت قابل دسترسی باشند. + +### لیست CWEهای مرتبط +- [CWE-5](https://cwe.mitre.org/data/definitions/5.html) J2EE Misconfiguration: Data Transmission Without Encryption +- [CWE-11](https://cwe.mitre.org/data/definitions/11.html) ASP.NET Misconfiguration: Creating Debug Binary +- [CWE-13](https://cwe.mitre.org/data/definitions/13.html) ASP.NET Misconfiguration: Password in Configuration File +- [CWE-15](https://cwe.mitre.org/data/definitions/15.html) External Control of System or Configuration Setting +- [CWE-16](https://cwe.mitre.org/data/definitions/16.html) Configuration +- [CWE-260](https://cwe.mitre.org/data/definitions/260.html) Password in Configuration File +- [CWE-315](https://cwe.mitre.org/data/definitions/315.html) Cleartext Storage of Sensitive Information in a Cookie +- [CWE-489](https://cwe.mitre.org/data/definitions/489.html) Active Debug Code +- [CWE-526](https://cwe.mitre.org/data/definitions/526.html) Exposure of Sensitive Information Through Environmental Variables +- [CWE-547](https://cwe.mitre.org/data/definitions/547.html) Use of Hard-coded, Security-relevant Constants +- [CWE-611](https://cwe.mitre.org/data/definitions/611.html) Improper Restriction of XML External Entity Reference +- [CWE-614](https://cwe.mitre.org/data/definitions/614.html) Sensitive Cookie in HTTPS Session Without 'Secure' Attribute +- [CWE-776](https://cwe.mitre.org/data/definitions/776.html) Improper Restriction of Recursive Entity References in DTDs (XML Entity Expansion) +- [CWE-942](https://cwe.mitre.org/data/definitions/942.html) Permissive Cross-domain Policy with Untrusted Domains +- [CWE-1004](https://cwe.mitre.org/data/definitions/1004.html) Sensitive Cookie Without 'HttpOnly' Flag +- [CWE-1174](https://cwe.mitre.org/data/definitions/1174.html) ASP.NET Misconfiguration: Improper Model Validation + +### منابع +- [OWASP Top 10:2025 - A02 Security Misconfiguration](https://owasp.org/Top10/2025/A02_2025-Security_Misconfiguration/) +- [OWASP Testing Guide: Configuration Management](https://owasp.org/www-project-web-security-testing-guide/) +- [OWASP Testing Guide: Testing for Error Codes](https://owasp.org/www-project-web-security-testing-guide/) +- [Application Security Verification Standard 5.0.0](https://owasp.org/www-project-application-security-verification-standard/) +- [NIST Guide to General Server Hardening](https://nvlpubs.nist.gov/) +- [CIS Security Configuration Guides / Benchmarks](https://www.cisecurity.org/cis-benchmarks/) +- [Amazon S3 Bucket Discovery and Enumeration](https://aws.amazon.com/) +- [ScienceDirect: Security Misconfiguration](https://www.sciencedirect.com/) diff --git a/2025/docs/fa/A03-2025 Software Supply Chain Failures.md b/2025/docs/fa/A03-2025 Software Supply Chain Failures.md new file mode 100644 index 000000000..1262cc4f3 --- /dev/null +++ b/2025/docs/fa/A03-2025 Software Supply Chain Failures.md @@ -0,0 +1,72 @@ +# A03:2025 خطاهای زنجیره تأمین نرم‌افزار (Software Supply Chain Failures) + +این دسته در آخرین نظرسنجی جامعه Top 10 در جایگاه اول قرار گرفت، به‌طوری که ۵۰٪ پاسخ‌دهندگان آن را رتبه 1 اعلام کردند. از زمان ورود این مورد به Top 10 سال ۲۰۱۳ با عنوان A9 – استفاده از مؤلفه‌های دارای آسیب‌پذیری شناخته‌شده، دامنه آن گسترش یافته و اکنون شامل تمام خطاهای زنجیره تأمین نرم‌افزار می‌شود، نه فقط مؤلفه‌های آسیب‌پذیر شناخته‌شده. + +با وجود این گسترش، شناسایی خطاهای زنجیره تأمین همچنان دشوار است و تنها ۱۱ عدد CVE مرتبط با CWEهای این دسته ثبت شده‌اند. داده‌های آزمایشی نشان می‌دهند که این دسته بالاترین نرخ وقوع متوسط را با ۵٫۱۹٪ دارد. + +## جدول امتیازدهی + +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | کل CVEها | +|------------------------|----------------|-----------------|---------------|---------------|----------------------------|----------------------|-----------------|-----------| +| 5 | 8.81% | 5.19% | 65.42% | 28.93% | 8.17 | 5.23 | 215,248 | 11 | + +## توضیحات + +شکست‌های زنجیره تأمین نرم‌افزار زمانی رخ می‌دهند که فرآیند ساخت، توزیع یا به‌روزرسانی نرم‌افزار دچار نقص شود. این مشکلات معمولاً ناشی از آسیب‌پذیری‌ها یا تغییرات مخرب در کدها، ابزارها یا وابستگی‌های شخص ثالثی است که سیستم به آن‌ها متکی است. + +### احتمال بروز مشکل +- ردیابی نسخه همه اجزا (مستقیم یا تو در تو) به دقت انجام نشود. +- نرم‌افزار آسیب‌پذیر، قدیمی یا پشتیبانی‌نشده باشد. +- اسکن آسیب‌پذیری و عضویت در خبرنامه‌های امنیتی مرتبط انجام نشود. +- فرآیند مدیریت تغییر و ردیابی تغییرات در زنجیره تأمین وجود نداشته باشد. +- سخت‌سازی سیستم‌ها و کنترل دسترسی اعمال نشده باشد. +- جداسازی وظایف (Separation of Duties) رعایت نشده باشد. +- توسعه‌دهندگان از منابع غیرقابل اعتماد در محیط تولید استفاده کنند. +- پلتفرم‌ها، فریم‌ورک‌ها و وابستگی‌ها به موقع و مبتنی بر ریسک به‌روزرسانی نشوند. +- تنظیمات سیستم‌ها امن نباشند ([رجوع شود به A02:2025-Security Misconfiguration](https://owasp.org/Top10/2025/A02_2025-Security_Misconfiguration/)). +- Pipelineهای CI/CD پیچیده بدون سخت‌سازی و پایش باشند. +- SBOM به‌صورت متمرکز مدیریت نشود و وابستگی‌های تو در تو ردیابی نشوند. +- اجزای غیرضروری حذف نشوند و موجودی نسخه‌ها پایش نشود. +- اجزا تنها از منابع معتبر و امن دریافت نشوند و نسخه‌ها بدون بررسی به‌روزرسانی شوند. + +### مدیریت تغییرات و سخت‌سازی سیستم‌ها +- فرآیند مدیریت تغییر باید شامل ثبت و پیگیری تغییرات در تنظیمات CI/CD، مخازن کد و نواحی Sandbox، محیط توسعه‌دهنده (IDE)، ابزارهای SBOM و آثار تولید شده، سیستم‌ها و لاگ‌های ثبت‌شده و یکپارچه‌سازی‌های شخص ثالث باشد. +- سیستم‌ها و منابع باید سخت‌افزاری و نرم‌افزاری تقویت شوند، شامل فعال کردن MFA و محدود کردن IAM: + - مخازن کد (عدم ذخیره اسرار در کد، محافظت از شاخه‌ها، پشتیبان‌گیری) + - ایستگاه‌های کاری توسعه‌دهندگان (به‌روزرسانی منظم، MFA، پایش) + - سرورهای ساخت و CI/CD (تفکیک وظایف، کنترل دسترسی، ساخت‌های امضا شده، لاگ‌های غیرقابل تغییر) + - آثار تولیدی (اثبات منبع، امضا، ارتقاء به جای بازسازی) + - مدیریت زیرساخت به‌عنوان کد (IaC) +- برنامه‌ای مداوم برای پایش، اولویت‌بندی و اعمال تغییرات پیکربندی داشته باشد. + +### مثال‌های سناریو حمله +1. فروشنده معتبر با بدافزار آلوده شده (مثل حمله SolarWinds 2019). +2. فروشنده معتبر تنها در شرایط خاص رفتار مخرب نشان می‌دهد (مثال: سرقت Bybit 2025). +3. حمله زنجیره تأمین GlassWorm 2025 علیه مارکت‌پلیس VS Code. +4. اجرای کامپوننت‌ها با همان سطح دسترسی برنامه، مثال‌ها: CVE‑2017‑5638، چالش‌های پچ‌کردن IoT، شناسایی با Shodan IoT. + +### لیست CWEهای مرتبط +- [CWE-477](https://cwe.mitre.org/data/definitions/477.html) Use of a Deprecated Function +- [CWE-1035](https://cwe.mitre.org/data/definitions/1035.html) Using Components with Known Vulnerabilities +- [CWE-1104](https://cwe.mitre.org/data/definitions/1104.html) Use of a Third-Party Component Without Maintainers +- [CWE-1329](https://cwe.mitre.org/data/definitions/1329.html) Dependence on Component with No Update Capability +- [CWE-1395](https://cwe.mitre.org/data/definitions/1395.html) Dependence on Vulnerable Third-Party Component + +### منابع +- [OWASP Top 10:2025 - A03 Software Supply Chain Failures](https://owasp.org/Top10/2025/A03_2025-Software_Supply_Chain_Failures/) +- [OWASP Application Security Verification Standard: V15 Secure Coding and Architecture](https://owasp.org/www-project-application-security-verification-standard/) +- [OWASP Cheat Sheet Series: Dependency Graph SBOM](https://cheatsheetseries.owasp.org/) +- [OWASP Cheat Sheet Series: Vulnerable Dependency Management](https://cheatsheetseries.owasp.org/) +- [OWASP Dependency-Track](https://dependencytrack.org/) +- [OWASP CycloneDX](https://cyclonedx.org/) +- [OWASP Application Security Verification Standard: V1 Architecture, Design and Threat Modelling](https://owasp.org/www-project-application-security-verification-standard/) +- [OWASP Dependency Check (Java & .NET)](https://owasp.org/www-project-dependency-check/) +- [OWASP Testing Guide - Map Application Architecture (OTG-INFO-010)](https://owasp.org/www-project-web-security-testing-guide/) +- [OWASP Virtual Patching Best Practices](https://owasp.org/) +- [MITRE CVE search](https://cve.mitre.org/) +- [National Vulnerability Database (NVD)](https://nvd.nist.gov/) +- [Retire.js (JavaScript)](https://retirejs.github.io/) +- [GitHub Advisory Database](https://github.com/advisories) +- [Ruby Libraries Security Advisory Database](https://rubysec.com/) +- [SAFECode Software Integrity Controls](https://safecode.org/) +- Glassworm & PhantomRaven supply chain attacks diff --git a/2025/docs/fa/A04-2025 Cryptographic Failures.md b/2025/docs/fa/A04-2025 Cryptographic Failures.md new file mode 100644 index 000000000..9a7a395f7 --- /dev/null +++ b/2025/docs/fa/A04-2025 Cryptographic Failures.md @@ -0,0 +1,111 @@ +# A04:2025 Cryptographic Failures (شکست‌های رمزنگاری) + +## Background +این ریسک در سال ۲۰۲۵ دو رتبه سقوط کرده و اکنون در جایگاه **شماره ۴** قرار دارد. این دسته شامل خطاهایی است که به دلیل عدم استفاده از رمزنگاری، استفاده از رمزنگاری ضعیف، نشت کلیدهای رمزنگاری، یا اشتباهات مرتبط با تولید اعداد تصادفی رخ می‌دهند. سه مورد از رایج‌ترین CWEها در این ریسک عبارت‌اند از: +- [CWE-327](https://cwe.mitre.org/data/definitions/327.html): Use of a Broken or Risky Cryptographic Algorithm +- [CWE-331](https://cwe.mitre.org/data/definitions/331.html): Insufficient Entropy +- [CWE-1241](https://cwe.mitre.org/data/definitions/1241.html): Use of Predictable Algorithm in Random Number Generator +- [CWE-338](https://cwe.mitre.org/data/definitions/338.html): Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) + +--- + +## جدول امتیازدهی + +| CWEs نگاشت‌شده | بیشترین نرخ وقوع | میانگین نرخ وقوع | بیشترین پوشش | میانگین پوشش | میانگین امتیاز Exploit (وزن‌دار) | میانگین امتیاز Impact (وزن‌دار) | کل وقوع‌ها | کل CVEها | +|---------------|------------------|------------------|----------------|----------------|-------------------------------|-----------------------------|----------------|-----------| +| 32 | 13.77% | 3.80% | 100.00% | 47.74% | 7.23 | 3.90 | 1,665,348 | 2,185 | + +--- + +## توضیحات + +رمزنگاری باید برای داده‌های حساس چه در حالت ذخیره (at rest) و چه در حالت انتقال (in transit) به درستی پیاده‌سازی شود. خطاهای رمزنگاری می‌توانند منجر به پیش‌بینی توکن‌ها، جعل نشست‌ها، شکستن رمزگذاری، یا بازیابی کلیدهای خصوصی شوند. + +### خطرات و اشتباهات معمول + +- استفاده از الگوریتم‌ها یا پروتکل‌های قدیمی یا ضعیف +- کلیدهای پیش‌فرض، ضعیف، دوباره‌استفاده‌شده یا عدم مدیریت کلید و چرخش +- ذخیره کلیدها یا داده حساس رمزنگاری‌شده در مخازن کد +- عدم اجبار رمزنگاری (TLS / HTTPS) +- نادیده گرفتن یا اشتباه در تولید IV یا nonce +- استفاده از توابع هش منسوخ یا padding الگوریتمی منسوخ (MD5، SHA‑1، PKCS#1 v1.5) +- استفاده از PRNG ضعیف یا قابل پیش‌بینی +- عدم استفاده از رمزنگاری احراز هویت‌شده +- امکان downgrade یا دور زدن پروتکل رمزنگاری +- پیام‌های خطای رمزنگاری یا کانال‌های جانبی قابل سوءاستفاده + +--- + +## چگونه جلوگیری کنیم + +- داده‌های حساس را طبقه‌بندی و برچسب‌گذاری کنید +- کلیدها را در HSM یا سرویس ابری امن ذخیره کنید +- از پیاده‌سازی‌های معتبر الگوریتم‌های رمزنگاری استفاده کنید +- داده‌های حساس را فقط در صورت نیاز ذخیره کنید؛ حذف یا توکنیزه نمایید +- رمزنگاری برای داده در حال انتقال و ذخیره را اعمال کنید +- از پروتکل‌های بدون رمزگذاری مانند FTP و SMTP استفاده نکنید +- توابع هش امن با نمک و تطبیقی استفاده شود (Argon2, bcrypt, scrypt, PBKDF2-HMAC-SHA-256) +- IV/nonce باید صحیح تولید و دوباره استفاده نشود +- از رمزنگاری احراز هویت‌شده استفاده شود +- توابع منسوخ یا paddingهای قدیمی استفاده نشود +- آماده‌سازی برای رمزنگاری پساکوانتومی (PQC) + +--- + +## مثال‌های سناریو حمله + +**سناریو #1**: سایت TLS را برای همه صفحات اعمال نمی‌کند یا TLS ضعیف پیکربندی شده — مهاجم اتصال را downgrade می‌کند، درخواست‌ها را رهگیری و کوکی نشست را دزدی می‌کند ([OWASP](https://owasp.org/Top10/2025/A04_2025-Cryptographic_Failures/)) + +**سناریو #2**: پایگاه داده رمزهای عبور هش ساده یا بدون نمک استفاده می‌کند، مهاجم دیتابیس را استخراج و هش‌ها را بازیابی می‌کند ([OWASP](https://owasp.org/Top10/2025/A04_2025-Cryptographic_Failures/)) + +--- + +## لیست CWEهای مرتبط + +- [CWE-261](https://cwe.mitre.org/data/definitions/261.html) Weak Encoding for Password +- [CWE-296](https://cwe.mitre.org/data/definitions/296.html) Improper Following of a Certificate’s Chain of Trust +- [CWE-319](https://cwe.mitre.org/data/definitions/319.html) Cleartext Transmission of Sensitive Information +- [CWE-320](https://cwe.mitre.org/data/definitions/320.html) Key Management Errors (Prohibited) +- [CWE-321](https://cwe.mitre.org/data/definitions/321.html) Use of Hard‑coded Cryptographic Key +- [CWE-322](https://cwe.mitre.org/data/definitions/322.html) Key Exchange Without Entity Authentication +- [CWE-323](https://cwe.mitre.org/data/definitions/323.html) Reusing a Nonce or Key Pair in Encryption +- [CWE-324](https://cwe.mitre.org/data/definitions/324.html) Use of a Key Past its Expiration Date +- [CWE-325](https://cwe.mitre.org/data/definitions/325.html) Missing Required Cryptographic Step +- [CWE-326](https://cwe.mitre.org/data/definitions/326.html) Inadequate Encryption Strength +- [CWE-327](https://cwe.mitre.org/data/definitions/327.html) Broken or Risky Cryptography +- [CWE-328](https://cwe.mitre.org/data/definitions/328.html) Reversible One‑Way Hash +- [CWE-329](https://cwe.mitre.org/data/definitions/329.html) Not Using a Random IV with CBC Mode +- [CWE-330](https://cwe.mitre.org/data/definitions/330.html) Use of Insufficiently Random Values +- [CWE-331](https://cwe.mitre.org/data/definitions/331.html) Insufficient Entropy +- [CWE-332](https://cwe.mitre.org/data/definitions/332.html) Insufficient Entropy in PRNG +- [CWE-334](https://cwe.mitre.org/data/definitions/334.html) Small Space of Random Values +- [CWE-335](https://cwe.mitre.org/data/definitions/335.html) Incorrect Usage of Seeds in PRNG +- [CWE-336](https://cwe.mitre.org/data/definitions/336.html) Same Seed in PRNG +- [CWE-337](https://cwe.mitre.org/data/definitions/337.html) Predictable Seed in PRNG +- [CWE-338](https://cwe.mitre.org/data/definitions/338.html) Cryptographically Weak PRNG +- [CWE-340](https://cwe.mitre.org/data/definitions/340.html) Predictable Numbers or IDs +- [CWE-342](https://cwe.mitre.org/data/definitions/342.html) Predictable Values Derived from Previous Values +- [CWE-347](https://cwe.mitre.org/data/definitions/347.html) Improper Verification of Cryptographic Signature +- [CWE-523](https://cwe.mitre.org/data/definitions/523.html) Unprotected Transport of Credentials +- [CWE-757](https://cwe.mitre.org/data/definitions/757.html) Weak Algorithm Choice in Negotiation +- [CWE-759](https://cwe.mitre.org/data/definitions/759.html) One-way Hash Without Salt +- [CWE-760](https://cwe.mitre.org/data/definitions/760.html) One-way Hash with Predictable Salt +- [CWE-780](https://cwe.mitre.org/data/definitions/780.html) RSA Without OAEP +- [CWE-916](https://cwe.mitre.org/data/definitions/916.html) Password Hashing With Insufficient Work Factor +- [CWE-1240](https://cwe.mitre.org/data/definitions/1240.html) Cryptographic Primitive with Risky Implementation +- [CWE-1241](https://cwe.mitre.org/data/definitions/1241.html) Predictable Algorithm in RNG + +--- + +## منابع + +- [OWASP Top 10:2025 – A04 Cryptographic Failures](https://owasp.org/Top10/2025/A04_2025-Cryptographic_Failures/) +- [OWASP Proactive Controls: C2 – Use Cryptography to Protect Data](https://owasp.org/www-project-proactive-controls/v4/) +- [OWASP ASVS – Cryptography & Secure Communication & Data Protection (V11, V12, V14)](https://owasp.org/www-project-application-security-verification-standard/) +- [OWASP Cheat Sheet: Transport Layer Protection](https://cheatsheetseries.owasp.org/cheatsheets/Transport_Layer_Protection_Cheat_Sheet.html) +- [OWASP Cheat Sheet: Password Storage](https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html) +- [OWASP Cheat Sheet: Encrypted Storage](https://cheatsheetseries.owasp.org/cheatsheets/Encrypted_Storage_Cheat_Sheet.html) +- [OWASP Cheat Sheet: HSTS](https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Strict_Transport_Security_Cheat_Sheet.html) +- [OWASP Testing Guide: Weak Cryptography](https://owasp.org/www-project-web-security-testing-guide/) +- [ENISA: Roadmap for Post-Quantum Cryptography](https://www.enisa.europa.eu/publications/post-quantum-cryptography) +- [NIST: Post-Quantum Cryptography Standards](https://csrc.nist.gov/projects/post-quantum-cryptography) diff --git a/2025/docs/fa/A05-2025 Injection.md b/2025/docs/fa/A05-2025 Injection.md new file mode 100644 index 000000000..3e24b400e --- /dev/null +++ b/2025/docs/fa/A05-2025 Injection.md @@ -0,0 +1,100 @@ +# [A05:2025 Injection](https://owasp.org/Top10/2025/A05_2025-Injection/) + +## پس‌زمینه +Injection در رتبه‌بندی سال ۲۰۲۵ دو پله سقوط کرده و از #3 به #5 رسیده است، و همچنان نسبت به A04:2025-Cryptographic Failures و A06:2025-Insecure Design در جایگاه خود باقی مانده است. +این دسته یکی از پرآزمایش‌ترین دسته‌هاست، به‌طوری که ۱۰۰٪ برنامه‌ها حداقل برای یک نوع injection بررسی شده‌اند. +Injection بیشترین تعداد CVE را در بین همه دسته‌ها دارد و شامل ۳۷ CWE است. +نمونه‌ها شامل Cross-site Scripting (XSS) با فرکانس بالا و تأثیر پایین (بیش از ۳۰k CVE) و SQL Injection با فرکانس پایین و تأثیر بالا (بیش از ۱۴k CVE) هستند. +تعداد زیاد CVEهای CWE-79 (Improper Neutralization of Input During Web Page Generation – 'Cross-site Scripting') میانگین weighted impact این دسته را کاهش می‌دهد. + +## جدول امتیازدهی + +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | +|-----------------------|-----------------|-----------------|---------------|---------------|----------------------------|----------------------|----------------| +| 37 | 13.77% | 3.08% | 100.00% | 42.93% | 7.15 | 4.32 | 1,404,249 | + +## توضیحات +Injection یک آسیب‌پذیری است که به مهاجم اجازه می‌دهد کد یا دستورات مخرب (مانند SQL یا shell code) را وارد فیلدهای ورودی برنامه کند و سیستم آن‌ها را به‌عنوان بخشی از سیستم اجرا کند. پیامدهای این نوع آسیب‌پذیری می‌تواند شدید باشد. + +یک برنامه زمانی آسیب‌پذیر است که: +- داده‌های ورودی کاربر توسط برنامه اعتبارسنجی، فیلتر یا sanitize نشده باشند +- کوئری‌ها یا فراخوانی‌های غیرپارامتری بدون escaping context-aware مستقیماً در interpreter استفاده شوند +- داده‌های unsanitized در پارامترهای ORM برای استخراج رکوردهای حساس استفاده شوند +- داده‌های مخرب مستقیم یا concatenated در query، command یا stored procedure استفاده شوند + +### انواع رایج Injection +- SQL, NoSQL, OS command, ORM, LDAP, Expression Language (EL) / OGNL +- تشخیص آسیب‌پذیری بهترین روش ترکیبی شامل بازبینی کد و تست اتوماتیک (fuzzing) تمام پارامترها، headers، URL، cookies، JSON، SOAP و XML است. ابزارهای SAST، DAST و IAST در CI/CD می‌توانند مفید باشند. +- Injection مشابهی در LLMها نیز رخ می‌دهد که در [OWASP LLM Top 10](https://genai.owasp.org) به‌ویژه [LLM01:2025 Prompt Injection](https://genai.owasp.org) پوشش داده شده است. + +## چگونه جلوگیری کنیم +- از API امن استفاده کنید یا از ORMها بهره ببرید تا داده از دستورات جدا شود. +- اگر جداسازی ممکن نیست: + - اعتبارسنجی مثبت سمت سرور انجام دهید + - برای کوئری‌های باقی‌مانده، کاراکترهای ویژه را با syntax مخصوص interpreter escape کنید + - توجه داشته باشید که ساختار SQL مانند table/column name را نمی‌توان escape کرد + +⚠️ هشدار: این تکنیک‌ها پیچیده هستند و در صورت تغییرات جزئی سیستم خطاپذیر می‌شوند. + +## نمونه سناریوهای حمله +**سناریو #1:** +```java +String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'"; +سناریو #2: +Query HQLQuery = session.createQuery("FROM accounts WHERE custID='" + request.getParameter("id") + "'"); +در هر دو، مهاجم مقدار id را به ' UNION SLEEP(10);-- تغییر می‌دهد: + +http://example.com/app/accountView?id=' UNION SELECT SLEEP(10);-- + +این باعث بازگرداندن همه رکوردها می‌شود. حملات خطرناک‌تر می‌توانند داده‌ها را تغییر دهند، حذف کنند یا stored procedure اجرا کنند. + +## منابع (References) +- [OWASP Proactive Controls: Secure Database Access](https://owasp.org/www-project-proactive-controls/v3/) +- [OWASP ASVS: V5 Input Validation and Encoding](https://owasp.org/ASVS/) +- [OWASP Testing Guide: SQL Injection, Command Injection, and ORM Injection](https://owasp.org/www-project-web-security-testing-guide/) +- [OWASP Cheat Sheet: Injection Prevention](https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet.html) +- [OWASP Cheat Sheet: SQL Injection Prevention](https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html) +- [OWASP Cheat Sheet: Injection Prevention in Java](https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_in_Java.html) +- [OWASP Cheat Sheet: Query Parameterization](https://cheatsheetseries.owasp.org/cheatsheets/Query_Parameterization_Cheat_Sheet.html) +- [OWASP Automated Threats to Web Applications – OAT-014](https://owasp.org/www-project-automated-threats-to-web-applications/) +- [PortSwigger: Server-side template injection](https://portswigger.net/web-security/template-injection) +- [Awesome Fuzzing: a list of fuzzing resources](https://github.com/awesome-fuzzing/awesome-fuzzing) + +## لیست CWEهای مرتبط (List of Mapped CWEs) +- [CWE-20](https://cwe.mitre.org/data/definitions/20.html) Improper Input Validation +- [CWE-74](https://cwe.mitre.org/data/definitions/74.html) Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') +- [CWE-76](https://cwe.mitre.org/data/definitions/76.html) Improper Neutralization of Equivalent Special Elements +- [CWE-77](https://cwe.mitre.org/data/definitions/77.html) Improper Neutralization of Special Elements used in a Command ('Command Injection') +- [CWE-78](https://cwe.mitre.org/data/definitions/78.html) Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') +- [CWE-79](https://cwe.mitre.org/data/definitions/79.html) Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') +- [CWE-80](https://cwe.mitre.org/data/definitions/80.html) Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS) +- [CWE-83](https://cwe.mitre.org/data/definitions/83.html) Improper Neutralization of Script in Attributes in a Web Page +- [CWE-86](https://cwe.mitre.org/data/definitions/86.html) Improper Neutralization of Invalid Characters in Identifiers in Web Pages +- [CWE-88](https://cwe.mitre.org/data/definitions/88.html) Improper Neutralization of Argument Delimiters in a Command ('Argument Injection') +- [CWE-89](https://cwe.mitre.org/data/definitions/89.html) Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') +- [CWE-90](https://cwe.mitre.org/data/definitions/90.html) Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection') +- [CWE-91](https://cwe.mitre.org/data/definitions/91.html) XML Injection (aka Blind XPath Injection) +- [CWE-93](https://cwe.mitre.org/data/definitions/93.html) Improper Neutralization of CRLF Sequences ('CRLF Injection') +- [CWE-94](https://cwe.mitre.org/data/definitions/94.html) Improper Control of Generation of Code ('Code Injection') +- [CWE-95](https://cwe.mitre.org/data/definitions/95.html) Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection') +- [CWE-96](https://cwe.mitre.org/data/definitions/96.html) Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection') +- [CWE-97](https://cwe.mitre.org/data/definitions/97.html) Improper Neutralization of Server-Side Includes (SSI) Within a Web Page +- [CWE-98](https://cwe.mitre.org/data/definitions/98.html) Improper Control of Filename for Include/Require Statement in PHP Program ('PHP Remote File Inclusion') +- [CWE-99](https://cwe.mitre.org/data/definitions/99.html) Improper Control of Resource Identifiers ('Resource Injection') +- [CWE-103](https://cwe.mitre.org/data/definitions/103.html) Struts: Incomplete validate() Method Definition +- [CWE-104](https://cwe.mitre.org/data/definitions/104.html) Struts: Form Bean Does Not Extend Validation Class +- [CWE-112](https://cwe.mitre.org/data/definitions/112.html) Missing XML Validation +- [CWE-113](https://cwe.mitre.org/data/definitions/113.html) Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting') +- [CWE-114](https://cwe.mitre.org/data/definitions/114.html) Process Control +- [CWE-115](https://cwe.mitre.org/data/definitions/115.html) Misinterpretation of Output +- [CWE-116](https://cwe.mitre.org/data/definitions/116.html) Improper Encoding or Escaping of Output +- [CWE-129](https://cwe.mitre.org/data/definitions/129.html) Improper Validation of Array Index +- [CWE-159](https://cwe.mitre.org/data/definitions/159.html) Improper Handling of Invalid Use of Special Elements +- [CWE-470](https://cwe.mitre.org/data/definitions/470.html) Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection') +- [CWE-493](https://cwe.mitre.org/data/definitions/493.html) Critical Public Variable Without Final Modifier +- [CWE-500](https://cwe.mitre.org/data/definitions/500.html) Public Static Field Not Marked Final +- [CWE-564](https://cwe.mitre.org/data/definitions/564.html) SQL Injection: Hibernate +- [CWE-610](https://cwe.mitre.org/data/definitions/610.html) Externally Controlled Reference to a Resource in Another Sphere +- [CWE-643](https://cwe.mitre.org/data/definitions/643.html) Improper Neutralization of Data within XPath Expressions ('XPath Injection') +- [CWE-644](https://cwe.mitre.org/data/definitions/644.html) Improper Neutralization of HTTP Headers for Scripting Syntax +- [CWE-917](https://cwe.mitre.org/data/definitions/917.html) Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection') diff --git a/2025/docs/fa/A06-2025 Insecure Design.md b/2025/docs/fa/A06-2025 Insecure Design.md new file mode 100644 index 000000000..8276dcfc6 --- /dev/null +++ b/2025/docs/fa/A06-2025 Insecure Design.md @@ -0,0 +1,93 @@ +# A06:2025 Insecure Design + +## پس‌زمینه +Insecure Design دو پله سقوط کرده و از #4 به #6 رسیده است، چرا که A02:2025-Security Misconfiguration و A03:2025-Software Supply Chain Failures از آن عبور کرده‌اند. این دسته در سال ۲۰۲۱ معرفی شد و پیشرفت‌های قابل توجهی در صنعت از نظر threat modeling و تمرکز بر طراحی امن مشاهده شده است. + +این دسته بر ریسک‌های مرتبط با طراحی و معماری نرم‌افزار تمرکز دارد، از جمله نقص در منطق کسب‌وکار برنامه، مثل عدم تعریف تغییرات وضعیت ناخواسته یا غیرمنتظره در برنامه. دسته‌بندی CWEها شامل CWE-256: Unprotected Storage of Credentials، CWE-269: Improper Privilege Management، CWE-434: Unrestricted Upload of File with Dangerous Type، CWE-501: Trust Boundary Violation، و CWE-522: Insufficiently Protected Credentials می‌شود. + +## جدول امتیازدهی +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | +|------------------------|----------------|-----------------|----------------|----------------|---------------------------|--------------------|----------------| +| 39 | 22.18% | 1.86% | 88.76% | 35.18% | 6.96 | 4.05 | 729,882 | + +## توضیحات +Insecure Design یک دسته گسترده است که ضعف‌های مختلف را در قالب “کنترل‌های طراحی ناقص یا ناکارآمد” نشان می‌دهد. توجه داشته باشید که بین Insecure Design و Insecure Implementation تفاوت وجود دارد: + +- طراحی امن ممکن است با باگ‌های پیاده‌سازی منجر به آسیب‌پذیری شود. +- طراحی ناامن با بهترین پیاده‌سازی هم قابل اصلاح نیست، زیرا کنترل‌های امنیتی مورد نیاز اصلاً ایجاد نشده‌اند. + +یکی از عوامل Insecure Design، نبود پروفایل ریسک کسب‌وکار در نرم‌افزار است و عدم تعیین سطح امنیت مورد نیاز برای طراحی. + +### سه بخش کلیدی طراحی امن +1. **Requirements and Resource Management:** جمع‌آوری و مذاکره بر سر نیازمندی‌های کسب‌وکار و امنیتی، مدیریت منابع و بودجه. +2. **Secure Design:** فرهنگ و روش‌شناسی که تهدیدها را ارزیابی و اطمینان از طراحی مقاوم کد فراهم می‌کند. استفاده از threat modeling در جلسات refinement و تحلیل assumptions و failure states. +3. **Secure Development Lifecycle:** شامل طراحی امن، الگوهای طراحی امن، کتابخانه کامپوننت‌های امن، ابزارهای مناسب، threat modeling، و post-mortem حوادث. + +## چگونه جلوگیری کنیم +- ایجاد و استفاده از Secure Development Lifecycle با همکاری AppSec +- استفاده از کتابخانه الگوهای طراحی امن یا paved-road components +- انجام Threat Modeling برای بخش‌های حیاتی برنامه (احراز هویت، access control، business logic) +- ادغام security language و controls در user stories +- اعتبارسنجی plausibility در هر tier برنامه (frontend تا backend) +- نوشتن unit و integration tests برای تمام critical flows +- جدا کردن tierها در لایه سیستم و شبکه بر اساس نیازهای محافظتی +- جداسازی robust tenants در تمام tiers + +## نمونه سناریوهای حمله +**سناریو #1:** +یک workflow بازیابی credential با “questions and answers” که طبق NIST 800-63b، OWASP ASVS و OWASP Top 10 ممنوع است. پاسخ‌ها قابل اعتماد نیستند و باید با طراحی امن‌تر جایگزین شوند. + +**سناریو #2:** +یک زنجیره سینمایی اجازه تخفیف گروهی می‌دهد و حداکثر ۱۵ نفر را قبل از نیاز به پیش‌پرداخت قبول می‌کند. مهاجم می‌تواند با بررسی منطق کسب‌وکار، ۶۰۰ صندلی و تمام سینماها را با چند درخواست رزرو کند و خسارت مالی ایجاد کند. + +**سناریو #3:** +وب‌سایت e-commerce یک خرده‌فروش، محافظت در برابر botها ندارد. scalperها کارت‌های گرافیک را خریداری و در سایت‌های مزایده می‌فروشند. طراحی ضد-bot و قوانین domain logic می‌توانند خریدهای غیرمجاز را شناسایی و رد کنند. + +## منابع (References) +- [OWASP Cheat Sheet: Secure Design Principles](https://cheatsheetseries.owasp.org/cheatsheets/Secure_Design_Principles_Cheat_Sheet.html) +- [OWASP SAMM: Design | Secure Architecture](https://owaspsamm.org/) +- [OWASP SAMM: Design | Threat Assessment](https://owaspsamm.org/) +- [NIST – Guidelines on Minimum Standards for Developer Verification of Software](https://csrc.nist.gov/publications) +- [The Threat Modeling Manifesto](https://www.threatmodelingmanifesto.org/) +- [Awesome Threat Modeling](https://github.com/irony/awesome-threat-modeling) + +## لیست CWEهای مرتبط (List of Mapped CWEs) +- [CWE-73](https://cwe.mitre.org/data/definitions/73.html) External Control of File Name or Path +- [CWE-183](https://cwe.mitre.org/data/definitions/183.html) Permissive List of Allowed Inputs +- [CWE-256](https://cwe.mitre.org/data/definitions/256.html) Unprotected Storage of Credentials +- [CWE-266](https://cwe.mitre.org/data/definitions/266.html) Incorrect Privilege Assignment +- [CWE-269](https://cwe.mitre.org/data/definitions/269.html) Improper Privilege Management +- [CWE-286](https://cwe.mitre.org/data/definitions/286.html) Incorrect User Management +- [CWE-311](https://cwe.mitre.org/data/definitions/311.html) Missing Encryption of Sensitive Data +- [CWE-312](https://cwe.mitre.org/data/definitions/312.html) Cleartext Storage of Sensitive Information +- [CWE-313](https://cwe.mitre.org/data/definitions/313.html) Cleartext Storage in a File or on Disk +- [CWE-316](https://cwe.mitre.org/data/definitions/316.html) Cleartext Storage of Sensitive Information in Memory +- [CWE-362](https://cwe.mitre.org/data/definitions/362.html) Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') +- [CWE-382](https://cwe.mitre.org/data/definitions/382.html) J2EE Bad Practices: Use of System.exit() +- [CWE-419](https://cwe.mitre.org/data/definitions/419.html) Unprotected Primary Channel +- [CWE-434](https://cwe.mitre.org/data/definitions/434.html) Unrestricted Upload of File with Dangerous Type +- [CWE-436](https://cwe.mitre.org/data/definitions/436.html) Interpretation Conflict +- [CWE-444](https://cwe.mitre.org/data/definitions/444.html) Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling') +- [CWE-451](https://cwe.mitre.org/data/definitions/451.html) User Interface (UI) Misrepresentation of Critical Information +- [CWE-454](https://cwe.mitre.org/data/definitions/454.html) External Initialization of Trusted Variables or Data Stores +- [CWE-472](https://cwe.mitre.org/data/definitions/472.html) External Control of Assumed-Immutable Web Parameter +- [CWE-501](https://cwe.mitre.org/data/definitions/501.html) Trust Boundary Violation +- [CWE-522](https://cwe.mitre.org/data/definitions/522.html) Insufficiently Protected Credentials +- [CWE-525](https://cwe.mitre.org/data/definitions/525.html) Use of Web Browser Cache Containing Sensitive Information +- [CWE-539](https://cwe.mitre.org/data/definitions/539.html) Use of Persistent Cookies Containing Sensitive Information +- [CWE-598](https://cwe.mitre.org/data/definitions/598.html) Use of GET Request Method With Sensitive Query Strings +- [CWE-602](https://cwe.mitre.org/data/definitions/602.html) Client-Side Enforcement of Server-Side Security +- [CWE-628](https://cwe.mitre.org/data/definitions/628.html) Function Call with Incorrectly Specified Arguments +- [CWE-642](https://cwe.mitre.org/data/definitions/642.html) External Control of Critical State Data +- [CWE-646](https://cwe.mitre.org/data/definitions/646.html) Reliance on File Name or Extension of Externally-Supplied File +- [CWE-653](https://cwe.mitre.org/data/definitions/653.html) Insufficient Compartmentalization +- [CWE-656](https://cwe.mitre.org/data/definitions/656.html) Reliance on Security Through Obscurity +- [CWE-657](https://cwe.mitre.org/data/definitions/657.html) Violation of Secure Design Principles +- [CWE-676](https://cwe.mitre.org/data/definitions/676.html) Use of Potentially Dangerous Function +- [CWE-693](https://cwe.mitre.org/data/definitions/693.html) Protection Mechanism Failure +- [CWE-799](https://cwe.mitre.org/data/definitions/799.html) Improper Control of Interaction Frequency +- [CWE-807](https://cwe.mitre.org/data/definitions/807.html) Reliance on Untrusted Inputs in a Security Decision +- [CWE-841](https://cwe.mitre.org/data/definitions/841.html) Improper Enforcement of Behavioral Workflow +- [CWE-1021](https://cwe.mitre.org/data/definitions/1021.html) Improper Restriction of Rendered UI Layers or Frames +- [CWE-1022](https://cwe.mitre.org/data/definitions/1022.html) Use of Web Link to Untrusted Target with window.opener Access +- [CWE-1125](https://cwe.mitre.org/data/definitions/1125.html) Excessive Attack Surface diff --git a/2025/docs/fa/A07-2025 Authentication Failures.md b/2025/docs/fa/A07-2025 Authentication Failures.md new file mode 100644 index 000000000..98aa5d44a --- /dev/null +++ b/2025/docs/fa/A07-2025 Authentication Failures.md @@ -0,0 +1,93 @@ +# A07:2025 Authentication Failures + +## پس‌زمینه +Authentication Failures موقعیت خود را در رتبه #7 حفظ کرده و نام آن کمی تغییر کرده تا دقیق‌تر منعکس‌کننده ۳۶ CWE در این دسته باشد. با وجود بهره‌مندی از فریم‌ورک‌های استاندارد، این دسته از سال ۲۰۲۱ رتبه خود را حفظ کرده است. + +CWEهای مهم شامل CWE-259: Use of Hard-coded Password، CWE-297: Improper Validation of Certificate with Host Mismatch، CWE-287: Improper Authentication، CWE-384: Session Fixation، و CWE-798: Use of Hard-coded Credentials می‌شوند. + +## جدول امتیازدهی +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | +|------------------------|----------------|-----------------|----------------|----------------|---------------------------|--------------------|----------------| +| 36 | 15.80% | 2.92% | 100.00% | 37.14% | 7.69 | 4.44 | 1,120,673 | + +## توضیحات +این آسیب‌پذیری زمانی رخ می‌دهد که مهاجم بتواند سیستم را فریب دهد تا یک کاربر نامعتبر یا اشتباه را به عنوان معتبر بشناسد. + +یک برنامه ممکن است آسیب‌پذیری احراز هویت داشته باشد اگر: + +- اجازه حملات خودکار مثل credential stuffing را بدهد، جایی که مهاجم از لیست نام‌های کاربری و رمز عبور لو رفته استفاده می‌کند. این حملات اخیراً شامل hybrid password attacks یا password spray attacks نیز شده‌اند. +- اجازه brute force یا سایر حملات اسکریپتی را بدهد که به سرعت مسدود نمی‌شوند. +- از رمزهای پیش‌فرض، ضعیف یا شناخته‌شده استفاده کند، مانند "Password1" یا کاربر "admin" با رمز "admin". +- کاربران بتوانند با credentials قبلاً لو رفته حساب جدید بسازند. +- فرآیندهای بازیابی رمز ضعیف یا ناکارآمد داشته باشد، مانند پاسخ‌های مبتنی بر دانش (knowledge-based answers). +- رمزها را به صورت plain text، رمزگذاری شده یا هش ضعیف ذخیره کند. +- MFA را به درستی پیاده‌سازی نکرده باشد یا fallback ضعیف برای MFA داشته باشد. +- شناسه نشست (session ID) را در URL، hidden field یا مکان ناامن دیگر افشا کند. +- همان شناسه نشست را پس از ورود مجدد استفاده کند. +- نشست کاربر یا توکن‌های احراز هویت (خصوصاً SSO) را هنگام logout یا عدم فعالیت به درستی باطل نکند. + +## چگونه جلوگیری کنیم +- MFA را پیاده‌سازی و اجباری کنید تا credential stuffing، brute force و reuse credentials جلوگیری شود. +- استفاده از password manager را تشویق کنید. +- هرگز با credentials پیش‌فرض منتشر یا مستقر نکنید، خصوصاً برای کاربران admin. +- بررسی کنید که رمزها در برابر لیست بدترین رمزها مقاوم باشند (top 10,000 worst passwords). +- در ایجاد حساب جدید یا تغییر رمز، از لیست credentials لو رفته اعتبارسنجی کنید (مثلاً [haveibeenpwned.com](https://haveibeenpwned.com)). +- سیاست طول و پیچیدگی رمز را مطابق NIST 800-63b بخش 5.1.1 اعمال کنید. +- از کاربران نخواهید رمزها را به‌صورت اجباری بچرخانند مگر در صورت شک به نفوذ. +- مسیرهای ثبت‌نام و بازیابی credential را در برابر account enumeration سخت کنید (استفاده از پیام یکسان برای تمام نتایج). +- تلاش‌های ورود ناموفق را محدود یا به تدریج تأخیر دهید، اما مراقب نباشید که DoS ایجاد شود. +- از server-side session manager امن استفاده کنید که پس از login شناسه نشست جدید با entropy بالا ایجاد کند. +- شناسه نشست در URL نباشد، در cookie امن ذخیره شود و پس از logout یا timeout باطل شود. +- اگر ممکن است، از سیستم آماده و معتبر برای مدیریت authentication، identity و session استفاده کنید تا ریسک منتقل شود. + +## نمونه سناریوهای حمله +**سناریو #1:** +Credential stuffing: مهاجمان از لیست‌های نام کاربری و رمز استفاده می‌کنند و اخیراً با تغییرات انسانی مانند افزایش اعداد یا تغییر سال‌ها، حملات hybrid credential یا password spray انجام می‌دهند. در صورت نبود defenses، برنامه می‌تواند به oracle رمز تبدیل شود و دسترسی غیرمجاز ایجاد کند. + +**سناریو #2:** +اکثر حملات موفق به دلیل تکیه تنها بر رمز اتفاق می‌افتد. سیاست‌های قدیمی rotation و complexity باعث می‌شود کاربران رمزهای ضعیف یا تکراری استفاده کنند. توصیه می‌شود این روش‌ها متوقف و MFA اجباری شود. + +**سناریو #3:** +Timeout و logout صحیح جلسات پیاده‌سازی نشده است. کاربر روی کامپیوتر عمومی مرورگر را می‌بندد بدون logout. اگر SSO قابل logout نباشد، مهاجم می‌تواند پس از کاربر وارد حساب شود. + +## منابع (References) +- [OWASP Authentication Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html) +- [OWASP Secure Coding Practices](https://cheatsheetseries.owasp.org/cheatsheets/Secure_Coding_Practices_Checklist.html) + +## لیست CWEهای مرتبط (List of Mapped CWEs) +- [CWE-258](https://cwe.mitre.org/data/definitions/258.html) Empty Password in Configuration File +- [CWE-259](https://cwe.mitre.org/data/definitions/259.html) Use of Hard-coded Password +- [CWE-287](https://cwe.mitre.org/data/definitions/287.html) Improper Authentication +- [CWE-288](https://cwe.mitre.org/data/definitions/288.html) Authentication Bypass Using an Alternate Path or Channel +- [CWE-289](https://cwe.mitre.org/data/definitions/289.html) Authentication Bypass by Alternate Name +- [CWE-290](https://cwe.mitre.org/data/definitions/290.html) Authentication Bypass by Spoofing +- [CWE-291](https://cwe.mitre.org/data/definitions/291.html) Reliance on IP Address for Authentication +- [CWE-293](https://cwe.mitre.org/data/definitions/293.html) Using Referer Field for Authentication +- [CWE-294](https://cwe.mitre.org/data/definitions/294.html) Authentication Bypass by Capture-replay +- [CWE-295](https://cwe.mitre.org/data/definitions/295.html) Improper Certificate Validation +- [CWE-297](https://cwe.mitre.org/data/definitions/297.html) Improper Validation of Certificate with Host Mismatch +- [CWE-298](https://cwe.mitre.org/data/definitions/298.html) Improper Validation of Certificate with Host Mismatch +- [CWE-299](https://cwe.mitre.org/data/definitions/299.html) Improper Validation of Certificate with Host Mismatch +- [CWE-300](https://cwe.mitre.org/data/definitions/300.html) Channel Accessible by Non-Endpoint +- [CWE-302](https://cwe.mitre.org/data/definitions/302.html) Authentication Bypass by Assumed-Immutable Data +- [CWE-303](https://cwe.mitre.org/data/definitions/303.html) Incorrect Implementation of Authentication Algorithm +- [CWE-304](https://cwe.mitre.org/data/definitions/304.html) Missing Critical Step in Authentication +- [CWE-305](https://cwe.mitre.org/data/definitions/305.html) Authentication Bypass by Primary Weakness +- [CWE-306](https://cwe.mitre.org/data/definitions/306.html) Missing Authentication for Critical Function +- [CWE-307](https://cwe.mitre.org/data/definitions/307.html) Improper Restriction of Excessive Authentication Attempts +- [CWE-308](https://cwe.mitre.org/data/definitions/308.html) Use of Single-factor Authentication +- [CWE-309](https://cwe.mitre.org/data/definitions/309.html) Use of Password System for Primary Authentication +- [CWE-346](https://cwe.mitre.org/data/definitions/346.html) Origin Validation Error +- [CWE-350](https://cwe.mitre.org/data/definitions/350.html) Reliance on Reverse DNS Resolution for a Security-Critical Action +- [CWE-384](https://cwe.mitre.org/data/definitions/384.html) Session Fixation +- [CWE-521](https://cwe.mitre.org/data/definitions/521.html) Weak Password Requirements +- [CWE-613](https://cwe.mitre.org/data/definitions/613.html) Insufficient Session Expiration +- [CWE-620](https://cwe.mitre.org/data/definitions/620.html) Unverified Password Change +- [CWE-640](https://cwe.mitre.org/data/definitions/640.html) Weak Password Recovery Mechanism for Forgotten Password +- [CWE-798](https://cwe.mitre.org/data/definitions/798.html) Use of Hard-coded Credentials +- [CWE-940](https://cwe.mitre.org/data/definitions/940.html) Improper Verification of Source of a Communication Channel +- [CWE-941](https://cwe.mitre.org/data/definitions/941.html) Incorrectly Specified Destination in a Communication Channel +- [CWE-1390](https://cwe.mitre.org/data/definitions/1390.html) Weak Authentication +- [CWE-1391](https://cwe.mitre.org/data/definitions/1391.html) Use of Weak Credentials +- [CWE-1392](https://cwe.mitre.org/data/definitions/1392.html) Use of Default Credentials +- [CWE-1393](https://cwe.mitre.org/data/definitions/1393.html) Use of Default Password diff --git a/2025/docs/fa/A08-2025 Software or Data Integrity Failures.md b/2025/docs/fa/A08-2025 Software or Data Integrity Failures.md new file mode 100644 index 000000000..452964b0a --- /dev/null +++ b/2025/docs/fa/A08-2025 Software or Data Integrity Failures.md @@ -0,0 +1,66 @@ +# A08:2025 Software or Data Integrity Failures + +## پس‌زمینه +Software or Data Integrity Failures در رتبه #8 باقی مانده و نام آن کمی تغییر کرده تا دقیق‌تر از قبل منعکس‌کننده تمرکز روی integrity نرم‌افزار و داده باشد. این دسته روی بررسی و حفظ trust boundaries و صحت نرم‌افزار، کد و داده‌ها در سطح پایین‌تر از Software Supply Chain Failures تمرکز دارد. ضعف‌های رایج شامل فرضیات اشتباه درباره بروزرسانی نرم‌افزار و داده‌های حساس بدون اعتبارسنجی integrity آن‌ها است. + +CWEهای مهم شامل CWE-829: Inclusion of Functionality from Untrusted Control Sphere، CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes و CWE-502: Deserialization of Untrusted Data می‌شوند. + +## جدول امتیازدهی +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | +|------------------------|----------------|-----------------|----------------|----------------|---------------------------|--------------------|----------------| +| 14 | 8.98% | 2.75% | 78.52% | 45.49% | 7.11 | 4.79 | 501,327 | + +## توضیحات +این دسته مربوط به نرم‌افزار و زیرساخت‌هایی است که نمی‌توانند از اجرای کد یا دریافت داده‌ی غیرمعتبر یا غیرقابل اعتماد جلوگیری کنند. + +### نمونه‌ها +- برنامه‌ای که به پلاگین‌ها، کتابخانه‌ها یا ماژول‌های ناشناس از منابع غیرقابل اعتماد، repositoryها یا CDNها اعتماد می‌کند. +- CI/CD pipeline ناامن که صحت کد و artifacts را قبل از اجرا یا انتشار بررسی نمی‌کند. +- قابلیت auto-update که بروزرسانی‌ها را بدون بررسی integrity دانلود و اعمال می‌کند. +- داده‌هایی که سریالایز شده‌اند و attacker می‌تواند آن‌ها را تغییر دهد (insecure deserialization). + +## چگونه جلوگیری کنیم +- از digital signature یا مکانیسم مشابه برای اطمینان از صحت و منبع نرم‌افزار و داده استفاده کنید. +- اطمینان حاصل کنید که کتابخانه‌ها و dependencyها فقط از repositoryهای قابل اعتماد مصرف می‌شوند. در محیط‌های پرریسک، internal known-good repository ایجاد کنید. +- یک فرآیند بررسی (review) برای تغییرات کد و پیکربندی داشته باشید تا از وارد شدن کد مخرب جلوگیری شود. +- CI/CD pipeline را با segregation، پیکربندی و کنترل دسترسی مناسب مدیریت کنید تا integrity کد حفظ شود. +- داده‌های سریالایز نشده یا بدون encryption از clients غیرقابل اعتماد دریافت نشود و در صورت دریافت، بررسی integrity انجام شود. + +## نمونه سناریوهای حمله +**سناریو #1: Inclusion of Web Functionality from an Untrusted Source** +یک شرکت از سرویس‌دهنده خارجی برای functionality پشتیبانی استفاده می‌کند و DNS mapping می‌زند تا `support.myCompany.com` را به `myCompany.SupportProvider.com` وصل کند. این باعث می‌شود تمام cookies، از جمله authentication cookies، به سرویس‌دهنده خارجی ارسال شود و مهاجم بتواند نشست کاربران را hijack کند. + +**سناریو #2: Update بدون امضا** +مودم‌ها، ست‌تاپ‌باکس‌ها و firmware دستگاه‌ها ممکن است بروزرسانی‌های unsigned دریافت کنند. مهاجم می‌تواند firmware مخرب را توزیع کند. + +**سناریو #3: دانلود package از منبع غیرمعتبر** +یک توسعه‌دهنده package مورد نیاز خود را از سایت آنلاین دانلود می‌کند، package unsigned و شامل کد مخرب است. + +**سناریو #4: Insecure Deserialization** +یک اپ React داده‌های user state را سریالایز می‌کند و بین microserviceها رد و بدل می‌کند. مهاجم signature object را تشخیص داده و با ابزار Java Deserialization Scanner کد از راه دور اجرا می‌کند. + +## منابع (References) +- [OWASP Cheat Sheet: Software Supply Chain Security](https://cheatsheetseries.owasp.org/cheatsheets/Software_Supply_Chain_Security_Cheat_Sheet.html) +- [OWASP Cheat Sheet: Infrastructure as Code](https://cheatsheetseries.owasp.org/cheatsheets/Infrastructure_as_Code_Cheat_Sheet.html) +- [OWASP Cheat Sheet: Deserialization](https://cheatsheetseries.owasp.org/cheatsheets/Deserialization_Cheat_Sheet.html) +- [SAFECode Software Integrity Controls](https://safecode.org/) +- [A 'Worst Nightmare' Cyberattack: The Untold Story Of The SolarWinds Hack](https://www.solarwinds.com/securityadvisory) +- [CodeCov Bash Uploader Compromise](https://about.codecov.com/security-update/) +- [Securing DevOps by Julien Vehent](https://www.amazon.com/Securing-DevOps-Security-Continuous-Delivery/dp/1492054386) +- [Insecure Deserialization by Tenendo](https://www.tenendo.com/blog/insecure-deserialization/) + +## لیست CWEهای مرتبط (List of Mapped CWEs) +- [CWE-345](https://cwe.mitre.org/data/definitions/345.html) Insufficient Verification of Data Authenticity +- [CWE-353](https://cwe.mitre.org/data/definitions/353.html) Missing Support for Integrity Check +- [CWE-426](https://cwe.mitre.org/data/definitions/426.html) Untrusted Search Path +- [CWE-427](https://cwe.mitre.org/data/definitions/427.html) Uncontrolled Search Path Element +- [CWE-494](https://cwe.mitre.org/data/definitions/494.html) Download of Code Without Integrity Check +- [CWE-502](https://cwe.mitre.org/data/definitions/502.html) Deserialization of Untrusted Data +- [CWE-506](https://cwe.mitre.org/data/definitions/506.html) Embedded Malicious Code +- [CWE-509](https://cwe.mitre.org/data/definitions/509.html) Replicating Malicious Code (Virus or Worm) +- [CWE-565](https://cwe.mitre.org/data/definitions/565.html) Reliance on Cookies without Validation and Integrity Checking +- [CWE-784](https://cwe.mitre.org/data/definitions/784.html) Reliance on Cookies without Validation and Integrity Checking in a Security Decision +- [CWE-829](https://cwe.mitre.org/data/definitions/829.html) Inclusion of Functionality from Untrusted Control Sphere +- [CWE-830](https://cwe.mitre.org/data/definitions/830.html) Inclusion of Web Functionality from an Untrusted Source +- [CWE-915](https://cwe.mitre.org/data/definitions/915.html) Improperly Controlled Modification of Dynamically-Determined Object Attributes +- [CWE-926](https://cwe.mitre.org/data/definitions/926.html) Improper Export of Android Application Components diff --git a/2025/docs/fa/A09-2025 Logging & Alerting Failures.md b/2025/docs/fa/A09-2025 Logging & Alerting Failures.md new file mode 100644 index 000000000..4f9deda48 --- /dev/null +++ b/2025/docs/fa/A09-2025 Logging & Alerting Failures.md @@ -0,0 +1,70 @@ +# A09:2025 Logging & Alerting Failures + +## پس‌زمینه +Logging & Alerting Failures در رتبه #9 باقی مانده است و نام آن کمی تغییر کرده تا عملکرد alerting و نیاز به اقدام در رویدادهای ثبت‌شده را بهتر نشان دهد. این دسته همیشه در داده‌ها کم‌نمایش است و با 723 CVE نمایه بسیار محدودی دارد، اما اهمیت بالایی در دیدپذیری، پاسخ سریع به حوادث و forensic دارد. CWEهای شاخص شامل CWE-117: Improper Output Neutralization for Logs، CWE-532: Insertion of Sensitive Information into Log File و CWE-778: Insufficient Logging می‌شوند. + +## جدول امتیازدهی +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | +|------------------------|----------------|-----------------|----------------|----------------|---------------------------|--------------------|----------------| +| 5 | 11.33% | 3.91% | 85.96% | 46.48% | 7.19 | 2.65 | 260,288 | + +## توضیحات +عدم ثبت و پایش رویدادها، و فقدان alerting مناسب، تشخیص حملات و واکنش به حوادث را دشوار می‌کند. نمونه موارد این ضعف‌ها شامل موارد زیر است: + +- رویدادهای قابل audit مانند login، failed login و تراکنش‌های حساس، یا ثبت نمی‌شوند یا ناقص ثبت می‌شوند. +- پیام‌های خطا و warning ناکافی، مبهم یا غیرقابل استفاده هستند. +- صحت و یکپارچگی logs محافظت نمی‌شود و ممکن است tamper شود. +- logs برنامه‌ها و APIها برای فعالیت‌های مشکوک پایش نمی‌شوند. +- logs فقط به صورت محلی ذخیره شده و backup مناسب ندارند. +- آستانه‌های مناسب alert و فرآیند escalation موجود نیست یا کارآمد نیست. +- تست‌های penetration و ابزارهای DAST (مانند Burp یا ZAP) هشدار تولید نمی‌کنند. +- سیستم قادر به تشخیص و alert به حملات فعال در زمان واقعی یا نزدیک به واقعی نیست. +- logging و alerting ممکن است اطلاعات حساس (PII/PHI) را به مهاجم یا کاربر نشان دهد. +- امکان injection یا حمله به سیستم‌های logging در صورت عدم کدگذاری صحیح وجود دارد. +- خطاها و شرایط استثنایی مدیریت نمی‌شوند و بنابراین سیستم از وقوع مشکل مطلع نمی‌شود. +- use-caseهای لازم برای alert ناقص یا قدیمی هستند. +- وجود false positive زیاد باعث می‌شود alertهای مهم نادیده گرفته شوند. + +## چگونه جلوگیری کنیم +- تمام شکست‌ها و رویدادهای مربوط به login، access control و server-side validation را ثبت کنید و context کافی برای forensic داشته باشید. +- همه بخش‌های نرم‌افزار که کنترل امنیتی دارند، چه موفق و چه شکست‌خورده، log شوند. +- فرمت logها باید قابل استفاده برای log management باشد. +- داده‌های log به درستی کدگذاری شوند تا از injection جلوگیری شود. +- تمام تراکنش‌ها باید audit trail با integrity controls داشته باشند، مانند append-only tables. +- تراکنش‌هایی که خطا می‌دهند باید rollback شوند و always fail closed باشند. +- در صورت رفتار مشکوک کاربران یا برنامه، alert ایجاد کنید. +- تیم‌های DevSecOps و امنیت use-case و playbookهای موثر برای alert ایجاد کنند. +- از honeytokenها برای شناسایی دسترسی غیرمجاز استفاده کنید. +- تحلیل رفتار و هوش مصنوعی می‌تواند نرخ false positive را کاهش دهد. +- برنامه incident response و recovery مانند NIST 800-61r2 را ایجاد و آموزش دهید. + +## ابزارها و محصولات مفید +- OWASP ModSecurity Core Rule Set +- ELK Stack (Elasticsearch, Logstash, Kibana) +- ابزارهای observability تجاری برای پاسخ سریع یا بلوکه کردن حملات + +## نمونه سناریوهای حمله +**سناریو #1:** +یک ارائه‌دهنده خدمات سلامت کودکان، نفوذ را تشخیص نداد و مهاجم به داده‌های حساس بیش از ۳.۵ میلیون کودک دسترسی پیدا کرد. به دلیل نبود logging و monitoring، این نفوذ می‌توانست از سال ۲۰۱۳ ادامه داشته باشد. + +**سناریو #2:** +یک شرکت هواپیمایی هندی دچار breach داده شد که بیش از ده سال اطلاعات مسافران شامل پاسپورت و کارت اعتباری را تحت تأثیر قرار داد. breach توسط یک cloud provider ثالث کشف شد. + +**سناریو #3:** +یک شرکت هواپیمایی اروپایی به دلیل ضعف‌های امنیتی پرداخت، بیش از ۴۰۰ هزار رکورد مشتری را از دست داد و جریمه ۲۰ میلیون پوندی شد. + +## منابع (References) +- [OWASP Proactive Controls: C9: Implement Logging and Monitoring](https://owasp.org/www-project-proactive-controls/v3/en/c9-logging-monitoring/) +- [OWASP ASVS: V16 Security Logging and Error Handling](https://owasp.org/www-project-application-security-verification-standard/) +- [OWASP Cheat Sheet: Application Logging Vocabulary](https://cheatsheetseries.owasp.org/cheatsheets/Application_Logging_Vocabulary_Cheat_Sheet.html) +- [OWASP Cheat Sheet: Logging](https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html) +- [Data Integrity: Recovering from Ransomware and Other Destructive Events](https://www.cisecurity.org/) +- [Data Integrity: Identifying and Protecting Assets Against Ransomware and Other Destructive Events](https://www.cisecurity.org/) +- [Data Integrity: Detecting and Responding to Ransomware and Other Destructive Events](https://www.cisecurity.org/) + +## لیست CWEهای مرتبط (List of Mapped CWEs) +- [CWE-117](https://cwe.mitre.org/data/definitions/117.html) Improper Output Neutralization for Logs +- [CWE-221](https://cwe.mitre.org/data/definitions/221.html) Information Loss of Omission +- [CWE-223](https://cwe.mitre.org/data/definitions/223.html) Omission of Security-relevant Information +- [CWE-532](https://cwe.mitre.org/data/definitions/532.html) Insertion of Sensitive Information into Log File +- [CWE-778](https://cwe.mitre.org/data/definitions/778.html) Insufficient Logging diff --git a/2025/docs/fa/A10-2025 Mishandling of Exceptional Conditions.md b/2025/docs/fa/A10-2025 Mishandling of Exceptional Conditions.md new file mode 100644 index 000000000..2f7f8c694 --- /dev/null +++ b/2025/docs/fa/A10-2025 Mishandling of Exceptional Conditions.md @@ -0,0 +1,92 @@ +# A10:2025 Mishandling of Exceptional Conditions + +## پس‌زمینه +Mishandling of Exceptional Conditions یک دسته‌بندی جدید در سال ۲۰۲۵ است. این دسته شامل ۲۴ CWE است و تمرکز آن روی مدیریت نامناسب خطاها، اشتباهات منطقی، «fail open» و سناریوهای مشابه ناشی از شرایط غیرمعمول در سیستم است. برخی از CWEهای این دسته قبلاً با کیفیت پایین کد مرتبط بودند، اما این دسته‌بندی جدید راهنمایی دقیق‌تری ارائه می‌دهد. + +### CWEهای شاخص +- CWE-209: Generation of Error Message Containing Sensitive Information +- CWE-234: Failure to Handle Missing Parameter +- CWE-274: Improper Handling of Insufficient Privileges +- CWE-476: NULL Pointer Dereference +- CWE-636: Not Failing Securely ('Failing Open') + +## جدول امتیازدهی +| تعداد CWEهای نگاشت‌شده | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین امتیاز بهره‌برداری | میانگین امتیاز تأثیر | تعداد کل رخدادها | +|------------------------|----------------|-----------------|----------------|----------------|---------------------------|--------------------|----------------| +| 24 | 20.67% | 2.95% | 100.00% | 37.95% | 7.11 | 3.81 | 769,581 | + +## توضیحات +Mishandling exceptional conditions زمانی رخ می‌دهد که برنامه‌ها نتوانند شرایط غیرمعمول یا غیرقابل پیش‌بینی را پیش‌بینی، شناسایی یا پاسخ دهند. این موضوع می‌تواند باعث crash، رفتار غیرمنتظره و ایجاد آسیب‌پذیری شود. + +### دلایل شایع mishandling +- اعتبارسنجی ناقص یا دیرهنگام ورودی‌ها +- مدیریت خطا در سطح بالا به جای محل وقوع خطا +- شرایط محیطی غیرمنتظره (مثل حافظه، دسترسی‌ها، شبکه) +- استثناهای مدیریت‌نشده یا inconsistent handling + +این ضعف می‌تواند منجر به آسیب‌پذیری‌های مختلف امنیتی شود، از جمله: +- باگ‌های منطقی +- overflowها +- race condition +- مشکلات تراکنشی، حافظه، state، منابع، زمان‌بندی، احراز هویت و مجوز + +## چگونه جلوگیری کنیم +- برای هر خطا یا استثنا، مدیریت مستقیم در محل وقوع آن ایجاد کنید. +- مدیریت خطا باید شامل موارد زیر باشد: + - ارائه پیام خطای قابل فهم برای کاربر + - ثبت log + - ایجاد alert در صورت لزوم +- از global exception handler برای مدیریت موارد از دست رفته استفاده کنید. +- از ابزارهای نظارت و observability برای شناسایی الگوهای تکرارشونده استفاده کنید. +- تراکنش‌ها در صورت بروز خطا باید rollback شوند (Fail Closed). +- محدودیت‌های منابع، rate limiting و throttling را اعمال کنید تا از وقوع exceptional conditions جلوگیری شود. +- اعتبارسنجی دقیق ورودی‌ها، sanitization و escaping برای کاراکترهای خطرناک را اعمال کنید. +- مدیریت خطا و استثناها باید به صورت متمرکز و یکسان در کل سازمان انجام شود. +- در طول طراحی پروژه، از secure design review و threat modeling استفاده کنید. +- بررسی کد، تحلیل ایستا، تست فشار، تست عملکرد و تست نفوذ را اجرا کنید. + +## نمونه سناریوهای حمله +**سناریو #1: Resource Exhaustion / DoS** +اگر فایل‌ها هنگام upload استثناء تولید کنند اما منابع آزاد نشوند، هر خطا باعث قفل شدن منابع می‌شود تا همه منابع مصرف شوند. + +**سناریو #2: Sensitive Data Exposure** +پیام خطای کامل پایگاه داده به کاربر نشان داده شود و مهاجم با ادامه تولید خطا، اطلاعات حساس سیستم را جمع‌آوری کرده و از آن برای حمله SQL Injection استفاده کند. + +**سناریو #3: State Corruption در تراکنش‌های مالی** +یک تراکنش چندمرحله‌ای شامل debit، credit و log است. اگر خطایی در وسط تراکنش رخ دهد و rollback کامل انجام نشود، مهاجم می‌تواند حساب کاربر را خالی کند یا تراکنش را چندباره ارسال کند. + +## منابع (References) +- [OWASP MASVS‑RESILIENCE](https://owasp.org/) +- [OWASP Cheat Sheet: Logging](https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html) +- [OWASP Cheat Sheet: Error Handling](https://cheatsheetseries.owasp.org/cheatsheets/Error_Handling_Cheat_Sheet.html) +- [OWASP ASVS: V16.5 Error Handling](https://owasp.org/www-project-application-security-verification-standard/) +- [OWASP Testing Guide: 4.8.1 Testing for Error Handling](https://owasp.org/www-project-web-security-testing-guide/) +- [Best Practices for Exceptions (Microsoft, .Net)](https://learn.microsoft.com/) +- [Clean Code and the Art of Exception Handling (Toptal)](https://www.toptal.com/) +- [General Error Handling Rules (Google for Developers)](https://developers.google.com/) + +## لیست CWEهای مرتبط (List of Mapped CWEs) +- [CWE-209](https://cwe.mitre.org/data/definitions/209.html) Generation of Error Message Containing Sensitive Information +- [CWE-215](https://cwe.mitre.org/data/definitions/215.html) Insertion of Sensitive Information Into Debugging Code +- [CWE-234](https://cwe.mitre.org/data/definitions/234.html) Failure to Handle Missing Parameter +- [CWE-235](https://cwe.mitre.org/data/definitions/235.html) Improper Handling of Extra Parameters +- [CWE-248](https://cwe.mitre.org/data/definitions/248.html) Uncaught Exception +- [CWE-252](https://cwe.mitre.org/data/definitions/252.html) Unchecked Return Value +- [CWE-274](https://cwe.mitre.org/data/definitions/274.html) Improper Handling of Insufficient Privileges +- [CWE-280](https://cwe.mitre.org/data/definitions/280.html) Improper Handling of Insufficient Permissions or Privileges +- [CWE-369](https://cwe.mitre.org/data/definitions/369.html) Divide By Zero +- [CWE-390](https://cwe.mitre.org/data/definitions/390.html) Detection of Error Condition Without Action +- [CWE-391](https://cwe.mitre.org/data/definitions/391.html) Unchecked Error Condition +- [CWE-394](https://cwe.mitre.org/data/definitions/394.html) Unexpected Status Code or Return Value +- [CWE-396](https://cwe.mitre.org/data/definitions/396.html) Declaration of Catch for Generic Exception +- [CWE-397](https://cwe.mitre.org/data/definitions/397.html) Declaration of Throws for Generic Exception +- [CWE-460](https://cwe.mitre.org/data/definitions/460.html) Improper Cleanup on Thrown Exception +- [CWE-476](https://cwe.mitre.org/data/definitions/476.html) NULL Pointer Dereference +- [CWE-478](https://cwe.mitre.org/data/definitions/478.html) Missing Default Case in Multiple Condition Expression +- [CWE-484](https://cwe.mitre.org/data/definitions/484.html) Omitted Break Statement in Switch +- [CWE-550](https://cwe.mitre.org/data/definitions/550.html) Server-generated Error Message Containing Sensitive Information +- [CWE-636](https://cwe.mitre.org/data/definitions/636.html) Not Failing Securely ('Failing Open') +- [CWE-703](https://cwe.mitre.org/data/definitions/703.html) Improper Check or Handling of Exceptional Conditions +- [CWE-754](https://cwe.mitre.org/data/definitions/754.html) Improper Check for Unusual or Exceptional Conditions +- [CWE-755](https://cwe.mitre.org/data/definitions/755.html) Improper Handling of Exceptional Conditions +- [CWE-756](https://cwe.mitre.org/data/definitions/756.html) Missing Custom Error Page diff --git a/2025/docs/fa/About OWASP.md b/2025/docs/fa/About OWASP.md new file mode 100644 index 000000000..56c272890 --- /dev/null +++ b/2025/docs/fa/About OWASP.md @@ -0,0 +1,43 @@ +# پروژه OWASP + +پروژه **Open Worldwide Application Security Project (OWASP)** یک پروژه جهانی مبتنی بر مشارکت آزاد است که هدف آن توانمندسازی سازمان‌ها برای توسعه، خرید و نگه‌داری برنامه‌ها و APIهایی قابل اطمینان است. + +در OWASP می‌توانید به مجموعه‌ای از منابع رایگان و متن‌باز دسترسی داشته باشید، از جمله: + +- ابزارها و استانداردهای امنیت برنامه +- پژوهش‌های پیشرفته +- کنترل‌ها و کتابخانه‌های استاندارد امنیتی +- کتاب‌های کامل در زمینه تست امنیت، توسعه امن و بازبینی کد +- ارائه‌ها و ویدئوها +- Cheat Sheets برای بسیاری از موضوعات رایج +- جلسات Chapters در سراسر جهان و به‌صورت آنلاین +- رویدادها، آموزش‌ها و کنفرانس‌ها +- Google Groups + +برای اطلاعات بیشتر به [OWASP.org](https://owasp.org) مراجعه کنید. + +--- + +تمام ابزارها، اسناد، ویدئوها، ارائه‌ها و بخش‌های مختلف OWASP رایگان بوده و برای همه علاقه‌مندان به امنیت در دسترس است. +OWASP امنیت برنامه را یک مسئله انسانی، فرایندی و تکنولوژیک می‌داند؛ زیرا مؤثرترین راه‌حل‌ها نیازمند بهبود همزمان هر سه حوزه هستند. + +OWASP یک سازمان متفاوت است؛ نبود فشارهای تجاری این امکان را فراهم می‌کند که اطلاعات کاربردی، بی‌طرفانه و مقرون‌به‌صرفه درباره امنیت برنامه ارائه دهد. +این سازمان وابسته به هیچ شرکت فناوری نیست، گرچه از استفاده آگاهانه از فناوری‌های امنیتی تجاری پشتیبانی می‌کند. + +تولید محتوای OWASP به‌صورت **مشارکتی، شفاف و باز** انجام می‌شود. بنیاد OWASP نهاد **غیرانتفاعی** پشتیبان پروژه است که موفقیت بلندمدت آن را تضمین می‌کند. تقریباً همه افراد فعال در OWASP داوطلب هستند؛ از جمله: + +- هیئت‌مدیره +- رهبران چپترها +- مدیران پروژه‌ها +- اعضای پروژه + +این بنیاد با اعطای کمک‌هزینه و ارائه زیرساخت، از پژوهش‌های نوآورانه در حوزه امنیت پشتیبانی می‌کند. +**به ما بپیوندید!** + +--- + +## حق نشر و مجوز + +- **Copyright © 2003–2025 The OWASP® Foundation, Inc.** +- این سند تحت مجوز **Creative Commons Attribution Share-Alike 4.0** منتشر شده است. +- برای هرگونه استفاده یا توزیع مجدد، لازم است شرایط این مجوز را به روشنی برای دیگران توضیح دهید. diff --git a/2025/docs/fa/Establishing a Modern Application Security Program.md b/2025/docs/fa/Establishing a Modern Application Security Program.md new file mode 100644 index 000000000..cdece5d21 --- /dev/null +++ b/2025/docs/fa/Establishing a Modern Application Security Program.md @@ -0,0 +1,168 @@ +# ایجاد یک برنامه امنیت برنامه مدرن (Establishing a Modern Application Security Program) + +لیست‌های OWASP Top Ten اسناد آگاهی‌بخشی هستند که هدفشان جلب توجه به مهم‌ترین ریسک‌ها در حوزه امنیت برنامه است. این لیست‌ها فهرست کامل نیستند و صرفاً نقطه شروع محسوب می‌شوند. نسخه‌های قبلی نشان داده‌اند که شروع یک برنامه امنیت برنامه بهترین راه برای کاهش این ریسک‌ها و دیگر خطرات مرتبط است. + +در این بخش، نحوه شروع و ساخت یک برنامه امنیت برنامه مدرن توضیح داده می‌شود. + +--- + +## ارزیابی بلوغ موجود + +اگر از قبل برنامه امنیت برنامه دارید، می‌توانید با استفاده از: + +- [OWASP SAMM (Software Assurance Maturity Model)](https://owasp.org/www-project-samm/) +- [DSOMM (DevSecOps Maturity Model)](https://owasp.org/www-project-devsecops-maturity-model/) + +بلوغ برنامه خود را ارزیابی کنید. این مدل‌ها جامع هستند و به شما کمک می‌کنند تمرکز خود را برای توسعه و بلوغ برنامه مشخص کنید. توجه داشته باشید که اجرای تمام موارد SAMM یا DSOMM لازم نیست؛ این مدل‌ها صرفاً راهنما هستند و گزینه‌های متعددی ارائه می‌دهند. + +اگر برنامه امنیت را از صفر شروع می‌کنید یا SAMM/DSOMM فعلاً برای تیم شما سنگین هستند، توصیه‌های زیر را دنبال کنید: + +--- + +## 1. اتخاذ رویکرد مبتنی بر پرتفوی ریسک (Risk-Based Portfolio Approach) + +- شناسایی نیازهای حفاظتی برنامه‌ها از منظر کسب‌وکار، با توجه به قوانین حفظ حریم خصوصی و مقررات داده‌ها. +- ایجاد مدل ارزیابی ریسک مشترک با مجموعه‌ای ثابت از عوامل احتمال و تأثیر که بازتاب‌دهنده میزان تحمل ریسک سازمان باشد. +- اندازه‌گیری و اولویت‌بندی تمام برنامه‌ها و APIها و افزودن نتایج به **Configuration Management Database (CMDB)**. +- تعیین دستورالعمل‌های اطمینان (**Assurance Guidelines**) برای تعریف پوشش و سطح سخت‌گیری لازم. + +--- + +## 2. ایجاد پایه قوی (Enable with a Strong Foundation) + +- تدوین سیاست‌ها و استانداردهای متمرکز برای ایجاد خط پایهٔ امنیت برنامه برای تیم‌های توسعه. +- تعریف کنترل‌های امنیتی قابل استفاده مجدد که این سیاست‌ها را تکمیل کرده و راهنمای طراحی و توسعه ارائه دهند. +- ایجاد برنامه‌های آموزشی امنیت برنامه برای نقش‌های مختلف توسعه و موضوعات مرتبط. + +--- + +## 3. ادغام امنیت در فرایندهای موجود (Integrate Security into Existing Processes) + +- تعریف و ادغام فعالیت‌های امنیتی در فرایندهای توسعه و عملیاتی موجود. +- فعالیت‌ها شامل: مدل‌سازی تهدید، طراحی امن، بازبینی طراحی، برنامه‌نویسی امن، بازبینی کد، تست نفوذ و رفع آسیب‌پذیری. +- ارائه کارشناسان موضوعی و خدمات پشتیبانی برای موفقیت تیم‌های توسعه و پروژه. +- مرور چرخه حیات توسعه سیستم فعلی و تمام فعالیت‌ها، ابزارها، سیاست‌ها و مستندسازی آن‌ها. +- برای نرم‌افزار جدید، یک یا چند فعالیت امنیتی به هر فاز **SDLC** اضافه کنید. +- برای نرم‌افزار موجود (Legacy)، برنامه نگهداری رسمی داشته باشید. + +--- + +## 4. آموزش امنیت برنامه (Application Security Education) + +- راه‌اندازی برنامه **Security Champion** یا آموزش عمومی امنیت برای توسعه‌دهندگان جهت آگاهی کامل از ریسک‌ها. +- OWASP از طریق [OWASP Security Champions Guide](https://owasp.org/www-project-security-champions/) پشتیبانی می‌کند. +- پروژه [OWASP Education Project](https://owasp.org/www-project-education/) منابع آموزشی ارائه می‌دهد. +- پروژه‌های عملی: + - [OWASP Juice Shop](https://owasp.org/www-project-juice-shop/) + - [OWASP WebGoat](https://owasp.org/www-project-webgoat/) +- شرکت در کنفرانس‌ها و آموزش‌های OWASP: + - [OWASP AppSec Conference](https://owasp.org/events/) + - [OWASP Conference Training](https://owasp.org/events/) + - [OWASP Chapter Meetings](https://owasp.org/chapters/) + +--- + +## 5. فراهم کردن دید مدیریتی (Provide Management Visibility) + +- ارائه **Metrics** برای تصمیم‌گیری‌های بهبود و تخصیص بودجه بر اساس داده‌ها و تحلیل‌ها. +- معیارها شامل رعایت فرآیندهای امنیتی، آسیب‌پذیری‌های ایجاد و رفع شده، پوشش برنامه‌ها، چگالی خطاها و تعداد نمونه‌ها هستند. +- تحلیل داده‌ها برای شناسایی ریشه‌های آسیب‌پذیری و بهبود راهبردی در سازمان. +- یادگیری از اشتباهات و ارائه مشوق‌های مثبت برای بهبود مستمر. + +--- + +## ایجاد و استفاده از فرآیندهای امنیتی تکرارشونده و کنترل‌های استاندارد + +### مرحله مدیریت نیازمندی‌ها و منابع (Requirements and Resource Management Phase) + +- جمع‌آوری و مذاکره نیازمندی‌های کسب‌وکار، شامل حفاظت از حریم خصوصی، اصالت، یکپارچگی و دسترسی دارایی‌ها. +- تدوین نیازمندی‌های فنی شامل امنیت عملکردی و غیرعملکردی، با استفاده از [OWASP ASVS](https://owasp.org/www-project-application-security-verification-standard/) به‌عنوان راهنما. +- برنامه‌ریزی و مذاکره بودجه که تمام مراحل طراحی، ساخت، تست و عملیات امنیتی را پوشش دهد. +- افزودن فعالیت‌های امنیتی به برنامه زمانی پروژه. +- معرفی خود به عنوان نماینده امنیت در آغاز پروژه. + +### درخواست پیشنهادات (RFP) و قراردادها + +- مذاکره نیازمندی‌ها با توسعه‌دهندگان داخلی یا خارجی، شامل SDLC و بهترین شیوه‌های امنیتی. +- ارزیابی تحقق نیازمندی‌های فنی در فاز برنامه‌ریزی و طراحی. +- استفاده از قالب‌ها و چک‌لیست‌ها، مانند **OWASP Secure Software Contract Annex**. + - توجه: این پیوست براساس قوانین قرارداد آمریکا است؛ پیش از استفاده، مشاوره حقوقی دریافت کنید. + +### مرحله برنامه‌ریزی و طراحی (Planning and Design Phase) + +- مذاکره برنامه‌ریزی و طراحی با توسعه‌دهندگان و سهامداران، مانند متخصصین امنیت. +- تعریف معماری امنیت، کنترل‌ها، اقدامات متقابل و بازبینی طراحی با پشتیبانی متخصصین. +- طراحی امنیت از ابتدا بسیار به‌صرفه‌تر است؛ از [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/) و [OWASP Proactive Controls](https://owasp.org/www-project-proactive-controls/) به‌عنوان نقطه شروع استفاده کنید. +- انجام **مدل‌سازی تهدید (Threat Modeling)**. +- آموزش مفاهیم و الگوهای طراحی امن به معماران نرم‌افزار. +- بررسی جریان‌های داده با توسعه‌دهندگان. +- افزودن **Security User Stories** همراه با دیگر User Stories. + +### چرخه توسعه امن (Secure Development Lifecycle) + +- استفاده از [OWASP SAMM](https://owasp.org/www-project-samm/) برای بهبود فرآیند سازمان در ساخت برنامه‌ها و APIها. +- آموزش کدنویسی امن و ارائه ابزارهای امنیتی به توسعه‌دهندگان: + - Static Analysis + - Software Composition Analysis + - Secret Management + - IaC Scanners +- ایجاد Guardrails برای تصمیم‌گیری امن، تنظیمات پیش‌فرض امن و ایجاد Paved Roads. +- بهره‌گیری از OWASP Cheat Sheets و کنترل‌های امنیتی استاندارد در فریم‌ورک‌های مدرن. +- ارائه پلاگین‌های امنیتی IDE و ابزارهای مدیریت Secret و مستندات. +- ارائه AI خصوصی با سرور RAG برای فراخوانی ابزارهای امنیتی سازمان و آموزش استفاده ایمن از آن. + +### ایجاد تست امنیتی مداوم (Continuous Application Security Testing) + +- تست عملکردهای فنی و یکپارچگی با معماری IT. +- ایجاد **test cases** از دیدگاه فنی و کسب‌وکار. +- مدیریت تست‌ها طبق فرآیندهای داخلی، نیازمندی‌های حفاظتی و سطح تهدید. +- ارائه ابزارهای تست امنیتی (Fuzzers، DAST و غیره) و آموزش نحوه استفاده از آن‌ها. +- در صورت نیاز، انجام penetration test رسمی و تست‌های استرس و عملکرد. +- همکاری با توسعه‌دهندگان برای رفع مشکلات گزارش‌شده. + +### راه‌اندازی برنامه (Rollout) + +- قرار دادن برنامه در عملیات و مهاجرت از برنامه‌های قبلی در صورت نیاز. +- نهایی‌سازی مستندات شامل CMDB و معماری امنیت. + +### عملیات و مدیریت تغییر (Operations and Change Management) + +- ارائه دستورالعمل‌های مدیریت امنیت مانند Patch Management. +- افزایش آگاهی امنیتی کاربران و مدیریت تضاد بین امنیت و قابلیت استفاده. +- برنامه‌ریزی و مدیریت تغییرات، ثبت همه برنامه‌ها در Inventory و به‌روزرسانی مستندات. +- اجرای Logging، Monitoring و Alerting برای همه برنامه‌ها. +- تعریف SLA برای رفع باگ‌های امنیتی. +- ایجاد تیم پاسخ به حادثه آموزش‌دیده. +- اجرای ابزارهای Blocking یا Shielding، سخت‌سازی پیکربندی‌ها و تست نفوذ سالانه. +- به‌روزرسانی برنامه‌های Continuity و Disaster Recovery. + +### بازنشستگی سیستم‌ها (Retiring Systems) + +- آرشیو داده‌های ضروری و پاکسازی امن داده‌های غیرضروری. +- بازنشستگی امن برنامه، شامل حذف حساب‌ها، نقش‌ها و دسترسی‌های بلااستفاده. +- به‌روزرسانی وضعیت برنامه در CMDB به "بازنشسته". + +--- + +## استفاده از OWASP Top 10 به‌عنوان استاندارد + +- OWASP Top 10 عمدتاً سند آگاهی‌بخشی است، اما بسیاری از سازمان‌ها از آن به‌عنوان استاندارد عملیاتی AppSec استفاده کرده‌اند. +- این سند نقطه شروع و حداقل استاندارد است. برخی ریسک‌ها (مثل **A06:2025-Insecure Design**) ممکن است فراتر از قابلیت تست ابزارهای استاندارد باشند. + +| معیار | سطح توصیه شده | توضیحات | +|-------|---------------|---------| +| Awareness | Yes | – | +| Training | Entry level | Comprehensive | +| Design & architecture | Occasionally | Yes | +| Coding standard | Bare minimum | Yes | +| Secure Code review | Bare minimum | Yes | +| Peer review checklist | Bare minimum | Yes | +| Unit testing | Occasionally | Yes | +| Integration testing | Occasionally | Yes | +| Penetration testing | Bare minimum | Yes | +| Tool support | Bare minimum | Yes | +| Secure Supply Chain | Occasionally | Yes | +| Awareness | Yes | – | + +- توصیه می‌شود برای استانداردسازی امنیت برنامه از [OWASP ASVS](https://owasp.org/www-project-application-security-verification-standard/) استفاده کنید. +- ASVS تنها استاندارد قابل قبول برای تولیدکنندگان ابزار است؛ ابزارها نمی‌توانند تمام OWASP Top 10 را شناسایی یا محافظت کنند. OWASP هرگونه ادعای پوشش کامل را نادرست می‌داند. diff --git a/2025/docs/fa/Introduction.md b/2025/docs/fa/Introduction.md new file mode 100644 index 000000000..9dfa23117 --- /dev/null +++ b/2025/docs/fa/Introduction.md @@ -0,0 +1,115 @@ +# به OWASP Security Top 10 – 2025 خوش آمدید! + +از همه‌ی دوستانی که در نظرسنجی مشارکت کردند و داده‌ها و دیدگاه‌های ارزشمندشان را در اختیار ما گذاشتند، صمیمانه تشکر می‌کنیم. بدون حضور و همراهی شما، تهیه‌ی این نسخه ممکن نبود. قدردان‌تان هستیم. + +--- + +## معرفی OWASP Top 10:2025 + +- **A01:2025 - Broken Access Control** +- **A02:2025 - Security Misconfiguration** +- **A03:2025 - Software Supply Chain Failures** +- **A04:2025 - Cryptographic Failures** +- **A05:2025 - Injection** +- **A06:2025 - Insecure Design** +- **A07:2025 - Authentication Failures** +- **A08:2025 - Software or Data Integrity Failures** +- **A09:2025 - Logging & Alerting Failures** +- **A10:2025 - Mishandling of Exceptional Conditions** + +--- + +## تغییرات Top 10 در نسخه 2025 + +در نسخه 2025 دو دسته جدید اضافه شده و یک مورد نیز ادغام شده است. +تلاش شده تمرکز بر ریشه‌های اصلی آسیب‌پذیری‌ها حفظ شود. ایجاد ده دسته کاملاً مجزا و بدون همپوشانی عملاً غیرممکن است. + +### نگاشت دسته‌ها + +- **A01:2025 Broken Access Control** + جایگاه نخست، جدی‌ترین ریسک امنیتی. میانگین ۳.۷۳٪ برنامه‌ها شامل یکی از ۴۰ CWE مرتبط. SSRF نیز در این دسته ادغام شده است. + +- **A02:2025 Security Misconfiguration** + از رتبه ۵ (۲۰۲۱) به رتبه ۲ (۲۰۲۵) صعود کرده است. ۳٪ برنامه‌ها دست‌کم یکی از ۱۶ CWE این دسته را دارند. + +- **A03:2025 Software Supply Chain Failures** + توسعه‌یافته از A06:2021. دامنه گسترده ضعف‌ها در اکوسیستم وابستگی‌های نرم‌افزار. اثرگذاری بالا با تعداد CWE کم. + +- **A04:2025 Cryptographic Failures** + از رتبه ۲ به ۴ سقوط کرده است. ۳.۸٪ برنامه‌ها حداقل یکی از ۳۲ CWE مرتبط را دارند. معمولاً منجر به افشای داده‌های حساس یا نفوذ می‌شود. + +- **A05:2025 Injection** + دو رتبه کاهش، جایگاه پنجم. شامل Cross-Site Scripting و SQL Injection. XSS شیوع بیشتر، SQL Injection اثرگذاری بالاتر. + +- **A06:2025 Insecure Design** + از رتبه ۴ به ۶ کاهش. از سال ۲۰۲۱ معرفی شده، تمرکز بر مدل‌سازی تهدید و طراحی امن. + +- **A07:2025 Authentication Failures** + جایگاه هفتم، نام به‌روزرسانی جزئی. شامل ۳۶ CWE. فریم‌ورک‌های استاندارد باعث کاهش خطاها شده‌اند. + +- **A08:2025 Software or Data Integrity Failures** + رتبه هشتم، تمرکز بر مرزهای اعتماد و اعتبارسنجی نرم‌افزار، کد و داده‌ها. + +- **A09:2025 Logging & Alerting Failures** + جایگاه نهم، نام به‌روزرسانی جزئی برای تأکید بر اهمیت هشداردهی. + +- **A10:2025 Mishandling of Exceptional Conditions** + جدید، شامل ۲۴ CWE، تمرکز بر مدیریت نادرست خطاها، خطاهای منطقی و شرایط غیرعادی سیستم. + +--- + +## متدولوژی (Methodology) + +نسخه جدید OWASP Top 10 هنوز بر داده‌ها تکیه دارد، اما نه صرفاً عددمحور. +۱۲ دسته بر اساس داده‌های جمع‌آوری‌شده رتبه‌بندی شدند و دو دسته بر اساس نتایج نظرسنجی جامعه برجسته شدند. + +### نحوه استفاده از داده‌ها برای انتخاب دسته‌ها + +- داده‌های CVE برای سنجش Exploitability و Technical Impact استفاده شدند. +- ابزار OWASP Dependency Check امتیازهای CVSS مرتبط را استخراج و بر اساس CWE گروه‌بندی کرده است. +- CVEها دارای CVSSv2 و برخی CVSSv3 و CVSSv4 هستند. میانگین Exploit و Impact بر اساس گروه‌بندی CWEها و وزن‌دهی نسخه‌ها محاسبه شده است. + +### چرا از نظرسنجی جامعه استفاده می‌کنیم؟ + +- داده‌ها محدود به مواردی هستند که ابزارهای خودکار می‌توانند آزمایش کنند. +- برخی ریسک‌ها هنوز در داده‌ها قابل مشاهده نیستند. +- تنها ۸ دسته بر اساس داده‌ها انتخاب شدند، ۲ دسته دیگر از طریق نظرسنجی جامعه تعیین شدند. + +--- + +## قدردانی از تمامی مشارکت‌کنندگان + +سازمان‌های زیر (و چندین اهداکننده ناشناس) داده‌های بیش از ۲.۸ میلیون برنامه را ارائه کردند: + +- Accenture (Prague) +- Anonymous (multiple) +- Bugcrowd +- Contrast Security +- CyptoNet Labs +- Intuitor SoftTech Services +- Orca Security +- Probley +- Semgrep +- Sonar +- usd AG +- Veracode +- Wallarm + +--- + +## نویسندگان اصلی + +- Andrew van der Stock — X: @vanderaj +- Brian Glas — X: @infosecdad +- Neil Smithline — X: @appsecneil +- Tanya Janca — X: @shehackspurple +- Torsten Gigler — Mastodon: @torsten_gigler@infosec.exchange + +نسخه کاندید انتشار (Release Candidate) در تاریخ ۶ نوامبر ۲۰۲۵ منتشر شد. + +--- + +## لینک‌های پروژه + +- [Homepage](https://owasp.org/) +- [GitHub Repository](https://github.com/OWASP) diff --git a/2025/docs/fa/Next Steps.md b/2025/docs/fa/Next Steps.md new file mode 100644 index 000000000..fae5e2021 --- /dev/null +++ b/2025/docs/fa/Next Steps.md @@ -0,0 +1,175 @@ +# Next Steps + +OWASP Top 10 طراحی‌شده تا ۱۰ ریسک مهم‌ترین و فراگیرترین تهدیدها را برجسته کند. با این حال، همیشه تعدادی ریسک "در لبه" وجود دارند که بررسی و شناسایی آنها ارزشمند است، اما در نهایت به دلیل کمبود فراوانی یا تأثیر کمتر در لیست ۱۰ ریسک اصلی قرار نگرفتند. + +دو مورد زیر برای سازمان‌هایی که به بلوغ در برنامه امنیت نرم‌افزار (AppSec) می‌رسند، مشاوران امنیتی، یا ابزارهای امنیتی که می‌خواهند پوشش خود را گسترش دهند، اهمیت ویژه دارند: + +--- + +## X01:2025 Lack of Application Resilience + +### پس‌زمینه +این دسته‌بندی بازنامی از 2021’s Denial of Service است. تمرکز آن روی ضعف‌هایی است که به مشکلات مقاومت (resilience) نرم‌افزار مربوط می‌شوند. امتیازدهی این دسته‌بندی با A10:2025 Mishandling of Exceptional Conditions نزدیک بوده است. :contentReference[oaicite:1]{index=1} + +### CWEهای شاخص +- [CWE-400](https://cwe.mitre.org/data/definitions/400.html) Uncontrolled Resource Consumption +- [CWE-409](https://cwe.mitre.org/data/definitions/409.html) Improper Handling of Highly Compressed Data (Data Amplification) +- [CWE-674](https://cwe.mitre.org/data/definitions/674.html) Uncontrolled Recursion +- [CWE-835](https://cwe.mitre.org/data/definitions/835.html) Loop with Unreachable Exit Condition ('Infinite Loop') + +### جدول امتیازدهی + +| تعداد CWEها | بیشترین نرخ بروز | میانگین نرخ بروز | بیشترین پوشش | میانگین پوشش | میانگین وزن بهره‌برداری | میانگین وزن اثر | کل رخدادها | +|------------|------------------|------------------|----------------|----------------|--------------------------|------------------|--------------| +| 16 | 20.05% | 4.55% | 86.01% | 41.47% | 7.92 | 3.49 | 865,066 | + +### توضیحات +ضعف در مقاومت نرم‌افزار زمانی رخ می‌دهد که برنامه نتواند تحت فشار، خطاها یا شرایط غیرمنتظره، به درستی عمل کند یا از آن‌ها بازیابی شود. نتایج معمول شامل: + +- اختلال در دسترسی (Availability) +- فساد داده‌ها +- افشای اطلاعات حساس +- اثرات زنجیره‌ای روی سیستم‌ها +- دور زدن کنترل‌های امنیتی :contentReference[oaicite:2]{index=2} + +### راهکارهای پیشگیری +- اعمال محدودیت‌ها، quotaها و قابلیت failover +- شناسایی عملیات پرمصرف و محدود کردن دسترسی کاربران ناشناس +- اعتبارسنجی دقیق ورودی‌ها با allow-list و محدودیت اندازه +- محدود کردن پاسخ‌ها و عدم ارسال داده‌های خام به کاربر +- پیش‌فرض‌های امن و rollback تراکنش‌ها در صورت خطا +- استفاده از asynchronous/non‑blocking calls، اعمال timeout و محدودیت concurrency +- تست عملکرد، load testing و حتی chaos engineering +- پیاده‌سازی الگوهای resilience مانند circuit breaker، bulkheads و graceful degradation +- نظارت و observability فعال همراه با تعریف alert +- و در صورت لزوم، Proof‑of‑Work برای عملیات پرمصرف کاربران مشکوک +- محدودیت مدت زمان session و اطلاعات ذخیره شده در session + +### نمونه حملات +- مصرف عمدی منابع برای ایجاد Denial of Service +- Fuzzing ورودی‌ها برای شکست منطق (logic) +- حمله به وابستگی‌های خارجی و از کار افتادن APIها + +### منابع +- [OWASP Cheat Sheet: Denial of Service](https://cheatsheetseries.owasp.org/cheatsheets/Denial_of_Service_Cheat_Sheet.html) +- [OWASP MASVS‑RESILIENCE](https://owasp.org/) +- [ASP.NET Core Best Practices (Microsoft)](https://learn.microsoft.com/) +- [Resilience in Microservices: Bulkhead vs Circuit Breaker (Parser)](https://parser.com/) +- [Bulkhead Pattern (Geeks for Geeks)](https://www.geeksforgeeks.org/) +- [NIST Cybersecurity Framework (CSF)](https://www.nist.gov/cyberframework) + +### List of Mapped CWEs +- [CWE-73](https://cwe.mitre.org/data/definitions/73.html) External Control of File Name or Path +- [CWE-183](https://cwe.mitre.org/data/definitions/183.html) Permissive List of Allowed Inputs +- [CWE-256](https://cwe.mitre.org/data/definitions/256.html) Plaintext Storage of a Password +- [CWE-266](https://cwe.mitre.org/data/definitions/266.html) Incorrect Privilege Assignment +- [CWE-269](https://cwe.mitre.org/data/definitions/269.html) Improper Privilege Management +- [CWE-286](https://cwe.mitre.org/data/definitions/286.html) Incorrect User Management +- [CWE-311](https://cwe.mitre.org/data/definitions/311.html) Missing Encryption of Sensitive Data +- [CWE-312](https://cwe.mitre.org/data/definitions/312.html) Cleartext Storage of Sensitive Information +- [CWE-313](https://cwe.mitre.org/data/definitions/313.html) Cleartext Storage in a File or on Disk +- [CWE-316](https://cwe.mitre.org/data/definitions/316.html) Cleartext Storage of Sensitive Information in Memory +- [CWE-362](https://cwe.mitre.org/data/definitions/362.html) Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') +- [CWE-382](https://cwe.mitre.org/data/definitions/382.html) J2EE Bad Practices: Use of System.exit() +- [CWE-419](https://cwe.mitre.org/data/definitions/419.html) Unprotected Primary Channel +- [CWE-434](https://cwe.mitre.org/data/definitions/434.html) Unrestricted Upload of File with Dangerous Type +- [CWE-436](https://cwe.mitre.org/data/definitions/436.html) Interpretation Conflict +- [CWE-444](https://cwe.mitre.org/data/definitions/444.html) Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') +- [CWE-451](https://cwe.mitre.org/data/definitions/451.html) UI Misrepresentation of Critical Information +- [CWE-454](https://cwe.mitre.org/data/definitions/454.html) External Initialization of Trusted Variables or Data Stores +- [CWE-472](https://cwe.mitre.org/data/definitions/472.html) External Control of Assumed-Immutable Web Parameter +- [CWE-501](https://cwe.mitre.org/data/definitions/501.html) Trust Boundary Violation +- [CWE-522](https://cwe.mitre.org/data/definitions/522.html) Insufficiently Protected Credentials +- [CWE-525](https://cwe.mitre.org/data/definitions/525.html) Use of Web Browser Cache Containing Sensitive Information +- [CWE-539](https://cwe.mitre.org/data/definitions/539.html) Use of Persistent Cookies Containing Sensitive Information +- [CWE-598](https://cwe.mitre.org/data/definitions/598.html) Use of GET Request Method With Sensitive Query Strings +- [CWE-602](https://cwe.mitre.org/data/definitions/602.html) Client‑Side Enforcement of Server‑Side Security +- [CWE-628](https://cwe.mitre.org/data/definitions/628.html) Function Call with Incorrectly Specified Arguments +- [CWE-642](https://cwe.mitre.org/data/definitions/642.html) External Control of Critical State Data +- [CWE-646](https://cwe.mitre.org/data/definitions/646.html) Reliance on File Name or Extension of Externally‑Supplied File +- [CWE-653](https://cwe.mitre.org/data/definitions/653.html) Improper Isolation or Compartmentalization +- [CWE-656](https://cwe.mitre.org/data/definitions/656.html) Reliance on Security Through Obscurity +- [CWE-657](https://cwe.mitre.org/data/definitions/657.html) Violation of Secure Design Principles +- [CWE-676](https://cwe.mitre.org/data/definitions/676.html) Use of Potentially Dangerous Function +- [CWE-693](https://cwe.mitre.org/data/definitions/693.html) Protection Mechanism Failure +- [CWE-799](https://cwe.mitre.org/data/definitions/799.html) Improper Control of Interaction Frequency +- [CWE-807](https://cwe.mitre.org/data/definitions/807.html) Reliance on Untrusted Inputs in a Security Decision +- [CWE-841](https://cwe.mitre.org/data/definitions/841.html) Improper Enforcement of Behavioral Workflow +- [CWE-1021](https://cwe.mitre.org/data/definitions/1021.html) Improper Restriction of Rendered UI Layers or Frames +- [CWE-1022](https://cwe.mitre.org/data/definitions/1022.html) Use of Web Link to Untrusted Target with window.opener Access +- [CWE-1125](https://cwe.mitre.org/data/definitions/1125.html) Excessive Attack Surface + +--- + +## X02:2025 Memory Management Failures + +### زمینه +زبان‌هایی مانند Java, C#, JavaScript/TypeScript (Node.js), Go و Rust memory‑safe هستند. مشکلات مدیریت حافظه بیشتر در زبان‌های غیر memory‑safe مانند C و C++ رخ می‌دهد. این دسته کمترین امتیاز را در نظرسنجی جامعه داشت ولی سومین تعداد CVE مرتبط را دارد. ضعف‌های حافظه معمولاً بالاترین CVSS را دارند. :contentReference[oaicite:3]{index=3} + +### جدول امتیازدهی +| تعداد CWEهای مرتبط | بیشترین نرخ وقوع | میانگین نرخ وقوع | بیشترین پوشش | میانگین پوشش | میانگین وزن بهره‌برداری | میانگین وزن تأثیر | کل رخدادها | +|--------------------|------------------|------------------|----------------|----------------|--------------------------|--------------------|-------------| +| 24 | 2.96% | 1.13% | 55.62% | 28.45% | 6.75 | 4.82 | 220,414 | + +### توضیحات +وقتی برنامه مجبور باشد خود حافظه را مدیریت کند، احتمال اشتباه زیاد است. اگرچه زبان‌های memory‑safe بیشتر استفاده می‌شوند، هنوز سیستم‌های legacy، سیستم‌های low‑level جدید و وب اپلیکیشن‌هایی که با mainframe، IoT، firmware تعامل دارند، از این مشکلات رنج می‌برند. + +نمونه CWEهای مرتبط: [CWE-120](https://cwe.mitre.org/data/definitions/120.html) Buffer Copy without Checking Size of Input، [CWE-121](https://cwe.mitre.org/data/definitions/121.html) Stack‑based Buffer Overflow. + +#### شرایط ایجاد خطا در مدیریت حافظه +- تخصیص ناکافی حافظه +- عدم اعتبارسنجی ورودی و overflow روی heap، stack یا buffer +- ذخیره مقدار بزرگ‌تر از ظرفیت نوع متغیر +- استفاده از حافظه تخصیص‌نیافته +- خطای off‑by‑one +- دسترسی به آبجکت پس از آزاد شدن +- استفاده از متغیرهای بدون مقداردهی اولیه +- نشت حافظه یا مصرف کامل حافظه تا شکست برنامه + +### راهکارهای پیشگیری +- استفاده از زبان‌های memory‑safe (Rust, Java, Go, C#, Python, Swift, Kotlin, JavaScript) +- در صورت اجبار به زبان غیر memory‑safe: + - فعال کردن ویژگی‌های سرور: ASLR, DEP, SEHOP + - پایش نشت حافظه + - اعتبارسنجی دقیق ورودی‌ها + - شناسایی توابع امن و ناامن زبان و اشتراک با تیم + - استفاده از کتابخانه‌های حافظه امن مانند SafeStringLib + - استفاده از managed buffers و strings به جای raw arrays/pointers + - آموزش secure coding و بررسی کد و تحلیل استاتیک + - استفاده از ابزارهای compiler مانند StackShield, StackGuard, Libsafe + - fuzzing تمامی ورودی‌ها + - توجه به warnings و errors کامپایلر + - پایش و patch زیرساخت + +### نمونه سناریوهای حمله +- Buffer overflow: وارد کردن داده بیشتر از ظرفیت buffer و overwrite کردن stack pointer برای اجرای کد مخرب +- Use‑After‑Free: استفاده از reference به حافظه آزاد شده و جایگذاری داده مهاجم +- Format string vulnerability: ارسال ورودی با format specifier برای خواندن/نوشتن حافظه حساس + +### منابع +- [OWASP community pages: Memory leak, Doubly freeing memory, & Buffer Overflow](https://owasp.org/) +- [Awesome Fuzzing](https://github.com/dsl/awesome-fuzzing) +- [Project Zero Blog](https://googleprojectzero.blogspot.com/) +- [Microsoft MSRC Blog](https://msrc.microsoft.com/) + +### فهرست CWEهای مرتبط +- [CWE-14](https://cwe.mitre.org/data/definitions/14.html) Compiler Removal of Code to Clear Buffers +- [CWE-119](https://cwe.mitre.org/data/definitions/119.html) Improper Restriction of Operations within the Bounds of a Memory Buffer +- [CWE-120](https://cwe.mitre.org/data/definitions/120.html) Buffer Copy without Checking Size of Input ('Classic Buffer Overflow') +- [CWE-121](https://cwe.mitre.org/data/definitions/121.html) Stack‑based Buffer Overflow +- [CWE-122](https://cwe.mitre.org/data/definitions/122.html) Heap‑based Buffer Overflow +- [CWE-124](https://cwe.mitre.org/data/definitions/124.html) Buffer Underwrite ('Buffer Underflow') +- [CWE-125](https://cwe.mitre.org/data/definitions/125.html) Out‑of‑bounds Read +- [CWE-126](https://cwe.mitre.org/data/definitions/126.html) Buffer Over‑read +- [CWE-190](https://cwe.mitre.org/data/definitions/190.html) Integer Overflow or Wraparound +- [CWE-191](https://cwe.mitre.org/data/definitions/191.html) Integer Underflow (Wrap or Wraparound) +- [CWE-196](https://cwe.mitre.org/data/definitions/196.html) Unsigned to Signed Conversion Error +- [CWE-367](https://cwe.mitre.org/data/definitions/367.html) Time‑of‑check Time‑of‑use (TOCTOU) Race Condition +- [CWE-415](https://cwe.mitre.org/data/definitions/415.html) Double Free +- [CWE-416](https://cwe.mitre.org/data/definitions/416.html) Use After Free +- [CWE-457](https://cwe.mitre.org/data/definitions/457.html) Use of Uninitialized Variable +- [CWE-459](https://cwe.mitre.org/data/definitions/459.html) Incomplete Cleanup +- [CWE-467](https://cwe.mitre.org/data/definitions/467.html) Use of sizeof() on a Pointer Type +- [CWE-787](https://cwe.mitre.org/data/definitions/787.html) Out‑of‑bounds Write +- [CWE-788](https://cwe.mitre.org/data/definitions/788.html) Access of Memory Location After End of Buffer +- [CWE-824](https://cwe.mitre.org/data/definitions/824.html) Access of Uninitialized Pointer diff --git a/2025/docs/fa/What are Application Security Risks.md b/2025/docs/fa/What are Application Security Risks.md new file mode 100644 index 000000000..5ea79aa04 --- /dev/null +++ b/2025/docs/fa/What are Application Security Risks.md @@ -0,0 +1,87 @@ +# ریسک‌های امنیت برنامه (Application Security Risks) + +هکرها می‌توانند از مسیرهای مختلف به برنامه شما نفوذ کنند و به کسب‌وکار یا سازمان آسیب برسانند. هر مسیر بالقوه یک ریسک محسوب می‌شود و باید به دقت بررسی شود. + +--- + +## تصویر شماره 1 + +| Business Impacts | Technical Impacts | Likelihood of Missing Security Controls | Exploitability | Attack / Vectors | Threat Agents | +|-----------------|-----------------|----------------------------------------|---------------|-----------------|---------------| +| By Business | Avg Weighted Impact | Missing Controls \ by average Incidence rate \ Weighed by coverage | Avg Weighted Exploit | By Application exposure (by environment) | By environment, dynamic by situation picture | + +--- + +## نحوه ارزیابی ریسک + +در ارزیابی ریسک، پارامترهای جهانی مانند: + +- قابلیت بهره‌برداری (**Exploitability**) +- میانگین احتمال نبود کنترل‌های امنیتی برای یک ضعف +- تأثیرات فنی آن + +در نظر گرفته می‌شوند. + +هر سازمان منحصربه‌فرد است و بازیگران تهدید، اهداف و تأثیر هر نفوذ برای آن سازمان نیز متفاوت است. +برای مثال: + +- یک سازمان عمومی از یک سیستم مدیریت محتوا (CMS) برای اطلاعات عمومی استفاده می‌کند. +- یک سیستم بهداشتی همان CMS را برای نگهداری سوابق حساس بیماران به‌کار می‌برد. + +بازیگران تهدید و تأثیر تجاری هر دو سازمان می‌تواند بسیار متفاوت باشد. +بنابراین، درک ریسک برای سازمان شما بر اساس: + +- میزان در معرض بودن برنامه +- تهدیدهای مرتبط در شرایط مختلف (هدفمند یا غیرهدفمند) +- تأثیرات خاص کسب‌وکار + +امری حیاتی است. + +--- + +## نحوه استفاده از داده‌ها برای انتخاب دسته‌ها و رتبه‌بندی + +- در سال ۲۰۱۷، دسته‌ها بر اساس **نرخ وقوع** برای تعیین احتمال انتخاب شدند و سپس با بحث تیمی و تجربه دهه‌ها، بر اساس **قابلیت بهره‌برداری، قابلیت شناسایی و تأثیر فنی** رتبه‌بندی شدند. +- در نسخه ۲۰۲۱، داده‌های **CVSSv2 و CVSSv3** در پایگاه ملی آسیب‌پذیری‌ها (NVD) برای قابلیت بهره‌برداری و تأثیر فنی استفاده شد. +- در نسخه ۲۰۲۵، همان روش‌شناسی ادامه یافته است. + +تیم OWASP با استفاده از ابزار [OWASP Dependency Check](https://owasp.org/www-project-dependency-check/) امتیازهای CVSS مربوط به **Exploit** و **Impact** را استخراج و بر اساس CWEهای مرتبط گروه‌بندی کرده است. + +--- + +### نکات مهم در تحلیل داده‌ها + +- تمام CVEها دارای امتیاز **CVSSv2** هستند، اما CVSSv2 محدودیت‌هایی دارد که **CVSSv3** آن‌ها را اصلاح می‌کند. +- حدود ۱۷۵ هزار رکورد CVE به CWEها نگاشت شده است (افزایش از ۱۲۵ هزار در ۲۰۲۱). +- ۶۴۳ CWE منحصر‌به‌فرد به CVEها مرتبط هستند (افزایش از ۲۴۱ در ۲۰۲۱). +- از تقریباً ۲۲۰ هزار CVE استخراج‌شده: + - ۱۶۰ هزار دارای CVSSv2 + - ۱۵۶ هزار دارای CVSSv3 + - ۶ هزار دارای CVSSv4 + +- بسیاری از CVEها چند امتیاز دارند، بنابراین مجموع بیشتر از ۲۲۰ هزار است. +- میانگین امتیاز **Exploit** و **Impact** ابتدا بر اساس CWE گروه‌بندی و سپس با وزن‌دهی ترکیب شد. + +--- + +### چرا از CVSSv4 استفاده نکردیم؟ + +- الگوریتم امتیازدهی CVSSv4 به‌طور بنیادی تغییر کرده است و دیگر به آسانی امتیاز Exploit یا Impact مانند نسخه‌های v2 و v3 ارائه نمی‌کند. +- OWASP تلاش خواهد کرد در نسخه‌های آینده راهی برای استفاده از CVSSv4 بیابد، اما برای نسخه ۲۰۲۵ زمان مناسبی نبود. + +--- + +## پارامترهای داده‌ای برای هر دسته + +- **CWEs Mapped**: تعداد CWEهای نگاشت‌شده به یک دسته +- **Incidence Rate**: درصد برنامه‌های آسیب‌پذیر به هر CWE +- **Weighted Exploit**: امتیاز Exploit نرمال‌شده از CVSSv2 و v3 +- **Weighted Impact**: امتیاز Impact نرمال‌شده از CVSSv2 و v3 +- **Testing Coverage**: درصد برنامه‌های بررسی‌شده برای یک CWE +- **Total Occurrences**: تعداد کل برنامه‌هایی که CWEهای یک دسته را دارند +- **Total CVEs**: تعداد کل CVEهای نگاشت‌شده به CWEهای یک دسته + +--- + +## فرمول امتیاز ریسک +