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

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)

لیست CWEهای مرتبط (List of Mapped CWEs)

  • CWE-73 External Control of File Name or Path
  • CWE-183 Permissive List of Allowed Inputs
  • CWE-256 Unprotected Storage of Credentials
  • 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 Smuggling')
  • CWE-451 User Interface (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 Insufficient 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