پرش به محتویات

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 Uncontrolled Resource Consumption
  • CWE-409 Improper Handling of Highly Compressed Data (Data Amplification)
  • CWE-674 Uncontrolled Recursion
  • CWE-835 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ها

منابع

List of Mapped CWEs

  • CWE-73 External Control of File Name or Path
  • CWE-183 Permissive List of Allowed Inputs
  • CWE-256 Plaintext Storage of a Password
  • CWE-266 Incorrect Privilege Assignment
  • CWE-269 Improper Privilege Management
  • CWE-286 Incorrect User Management
  • CWE-311 Missing Encryption of Sensitive Data
  • CWE-312 Cleartext Storage of Sensitive Information
  • CWE-313 Cleartext Storage in a File or on Disk
  • CWE-316 Cleartext Storage of Sensitive Information in Memory
  • CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
  • CWE-382 J2EE Bad Practices: Use of System.exit()
  • CWE-419 Unprotected Primary Channel
  • CWE-434 Unrestricted Upload of File with Dangerous Type
  • CWE-436 Interpretation Conflict
  • CWE-444 Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')
  • CWE-451 UI Misrepresentation of Critical Information
  • CWE-454 External Initialization of Trusted Variables or Data Stores
  • CWE-472 External Control of Assumed-Immutable Web Parameter
  • CWE-501 Trust Boundary Violation
  • CWE-522 Insufficiently Protected Credentials
  • CWE-525 Use of Web Browser Cache Containing Sensitive Information
  • CWE-539 Use of Persistent Cookies Containing Sensitive Information
  • CWE-598 Use of GET Request Method With Sensitive Query Strings
  • CWE-602 Client‑Side Enforcement of Server‑Side Security
  • CWE-628 Function Call with Incorrectly Specified Arguments
  • CWE-642 External Control of Critical State Data
  • CWE-646 Reliance on File Name or Extension of Externally‑Supplied File
  • CWE-653 Improper Isolation or Compartmentalization
  • CWE-656 Reliance on Security Through Obscurity
  • CWE-657 Violation of Secure Design Principles
  • CWE-676 Use of Potentially Dangerous Function
  • CWE-693 Protection Mechanism Failure
  • CWE-799 Improper Control of Interaction Frequency
  • CWE-807 Reliance on Untrusted Inputs in a Security Decision
  • CWE-841 Improper Enforcement of Behavioral Workflow
  • CWE-1021 Improper Restriction of Rendered UI Layers or Frames
  • CWE-1022 Use of Web Link to Untrusted Target with window.opener Access
  • CWE-1125 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 Buffer Copy without Checking Size of Input، CWE-121 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 برای خواندن/نوشتن حافظه حساس

منابع

فهرست CWEهای مرتبط

  • CWE-14 Compiler Removal of Code to Clear Buffers
  • CWE-119 Improper Restriction of Operations within the Bounds of a Memory Buffer
  • CWE-120 Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')
  • CWE-121 Stack‑based Buffer Overflow
  • CWE-122 Heap‑based Buffer Overflow
  • CWE-124 Buffer Underwrite ('Buffer Underflow')
  • CWE-125 Out‑of‑bounds Read
  • CWE-126 Buffer Over‑read
  • CWE-190 Integer Overflow or Wraparound
  • CWE-191 Integer Underflow (Wrap or Wraparound)
  • CWE-196 Unsigned to Signed Conversion Error
  • CWE-367 Time‑of‑check Time‑of‑use (TOCTOU) Race Condition
  • CWE-415 Double Free
  • CWE-416 Use After Free
  • CWE-457 Use of Uninitialized Variable
  • CWE-459 Incomplete Cleanup
  • CWE-467 Use of sizeof() on a Pointer Type
  • CWE-787 Out‑of‑bounds Write
  • CWE-788 Access of Memory Location After End of Buffer
  • CWE-824 Access of Uninitialized Pointer