تست نفوذ وباپلیکیشن زمانی ارزش دارد که یک سؤال مشخص را با مجوز کتبی پاسخ دهد: آیا مهاجم میتواند از مسیرهای واقعاً در دسترس، کنترلهای فعلی را دور بزند و به یک دارایی یا فرایند مهم آسیب بزند؟ اجرای چند اسکن، شمارش CVE یا تحویل PDF طولانی جواب این سؤال نیست. Pentest خوب Scope و Rules of Engagement روشن دارد، منطق کسبوکار و مرز Tenant/Role را میآزماید، Evidence حداقلی و قابلبازتولید میدهد، اصلاح را به Owner میرساند و با Retest بسته میشود.
هر آزمون فقط باید روی سامانهای انجام شود که مالک یا نماینده مجاز آن، محدوده و روش را صریحاً تأیید کرده است. تست بدون مجوز میتواند غیرقانونی، مخرب و موجب افشای داده یا اختلال خدمت شود. این راهنما برای برنامهریزی، خرید، نظارت و دفاع مجاز است؛ دستورالعمل نفوذ به سامانه دیگران ارائه نمیکند.
تست نفوذ دقیقاً چیست؟
تست نفوذ یک ارزیابی زماندار و کنترلشده است که در آن متخصص امنیت، با مجوز و در محدوده توافقشده، امکان سوءاستفاده از ضعفها و اثر زنجیرهای آنها را بررسی میکند. خروجی مطلوب «اثبات کنترلشده ریسک + مسیر اصلاح + Retest» است.
| پرسش | پاسخ Pentest خوب |
|---|---|
| چه چیزی آزموده شد؟ | Asset، URL/API، Role، Tenant، Environment و نسخه دقیق |
| چه چیزی آزموده نشد؟ | Out-of-scope، محدودیت زمان/دسترسی و Coverage gap |
| چه ضعف قابلسوءاستفادهای وجود دارد؟ | Precondition، مسیر بازتولید امن و Evidence حداقلی |
| اثر واقعی چیست؟ | Confidentiality، Integrity، Availability و Business process |
| چه باید اصلاح شود؟ | Root cause، کنترل پیشنهادی، Owner و Deadline |
| آیا اصلاح مؤثر بود؟ | Retest نتیجهمحور و Regression check |
تست نفوذ چه چیزی نیست؟
| فعالیت | هدف | مرز با Pentest |
|---|---|---|
| Vulnerability scanning | کشف وسیع الگوها و نسخههای آسیبپذیر | ممکن است Exploitability و منطق کسبوکار را تأیید نکند |
| SAST | تحلیل Source/Bytecode | Context اجرا و زنجیره سامانه را کامل نمیبیند |
| DAST | آزمون خودکار اپ در حال اجرا | Coverage Role/Workflow و قضاوت انسانی محدود است |
| SCA/SBOM review | Dependency و Supply chain | پیکربندی/Reachability واقعی باید جدا سنجیده شود |
| Code review | طراحی و Implementation | برای عمق عالی است اما الزاماً مسیر بیرونی را اثبات نمیکند |
| Red team | هدفمحور و چندبرداری علیه Detection/Response | Scope، زمان و Stealth معمولاً گستردهتر است |
| Bug bounty/VDP | دریافت گزارش مستمر از پژوهشگران | Coverage تضمینشده یا برنامه آزمون سیستماتیک نیست |
| Compliance assessment | سنجش Requirement رسمی | Pentest میتواند یکی از Evidenceها باشد، نه کل انطباق |
NIST SP 800-115 آزمون فنی را مجموعهای از روشها با مزیت و محدودیت متفاوت میداند. یک برنامه بالغ این روشها را مکمل میکند؛ Pentest جای Secure SDLC یا Vulnerability management را نمیگیرد.
چه زمانی تست نفوذ لازم است؟
قاعده «برای همه سالی یکبار» بیش از حد ساده است. Cadence باید از ریسک، تغییر، Exposure، Requirement قراردادی و سابقه یافته بیاید.
| Trigger | دامنه پیشنهادی | چرا |
|---|---|---|
| پیش از اولین Production | مسیرهای حیاتی و Trust boundary | Baseline پیش از داده/کاربر واقعی |
| تغییر معماری/Identity/Payment | Change + dependencyهای متاثر | Threat و Control جدید ایجاد میشود |
| افزودن Role/Tenant/API/Integration | Authorization و Business flow | مرز دسترسی تغییر میکند |
| پس از Incident مهم | Root cause و مسیرهای مشابه | اثبات Remediation و کشف Variant |
| دوره ریسکمحور | Coverage چرخشی + critical paths | Drift و تغییر Threat |
| Requirement قرارداد/استاندارد | دقیقاً Scope و Frequency الزام | Evidence قابلممیزی |
برای محیط مشمول PCI DSS، نسخه و Requirement جاری را از کتابخانه رسمی PCI SSC بگیرید؛ PCI DSS v4.۰.۱ Requirement ۱۱.۴ درباره تست نفوذ بیرونی/درونی، اصلاح ضعفهای قابلسوءاستفاده و در شرایط تعریفشده آزمون دورهای/پس از تغییر صحبت میکند. Scope و روش اعتبارسنجی را با QSA یا متخصص واجدصلاحیت خود تطبیق دهید؛ استاندارد کارت جهانی را بیدلیل به همه کسبوکارهای ایرانی تعمیم ندهید.
Gate صفر: مجوز کتبی و Rules of Engagement
هیچ تستی پیش از امضای Authorization و RoE شروع نمیشود. مالک کسبوکار، مالک فنی، Hosting/Cloud/Provider مرتبط و Tester باید بدانند چه چیزی مجاز است.
| فیلد قرارداد | حداقل تعریف |
|---|---|
| Authorizing party | شخص حقوقی/سمت دارای اختیار و اثبات مالکیت Asset |
| In-scope | Domain/IP/API/app/tenant/environment/version |
| Out-of-scope | Third party، shared service، production data یا بخش ممنوع |
| Allowed techniques | رده آزمون و حد ایمن هرکدام |
| Prohibited | DoS، Social engineering، persistence، destructive action مگر مجوز ویژه |
| Time/rate/source | Window، timezone، Source IP، concurrency و rate ceiling |
| Data handling | حد اثبات، masking، encryption، retention و deletion |
| Communication | Primary/backup contact، severity channel و response time |
| Stop condition | SLO breach، data risk، unexpected third party یا درخواست مالک |
| Liability/escalation | Incident، evidence، insurance و dispute path |
«حفظ دسترسی» یا نصب Backdoor یک مرحله پیشفرض Pentest وب نیست. Persistence، Data exfiltration، تغییر رکورد و Denial of Service باید ممنوع باشند مگر هدف دقیق، محیط ایزوله، Approval و روش بازگشت جداگانه داشته باشند. معمولاً Proof حداقلی بدون نگهداشتن دسترسی کافی است.
Scope را از Inventory بسازید
فقط یک URL صفحه اصلی Scope نیست. Web app مدرن از Frontend، API، Admin، Auth provider، Object storage، Queue، Webhook، CDN و سرویس ثالث تشکیل میشود.
| لایه | Inventory | Owner |
|---|---|---|
| Public surface | Domain/subdomain/path/port | Platform/Network |
| Application | Version، feature flag، role، tenant | Product/Engineering |
| API | REST/GraphQL/gRPC/Webhook، version و schema | API owner |
| Identity | Login، SSO، MFA، recovery، admin | Identity owner |
| Data | classification، source of truth، test data | Data owner |
| Integration | Payment، SMS، email، CRM، storage | Integration owner |
| Operations | CI/CD، log، monitoring، support | Platform/SRE |
| Third party | contract و permission boundary | Procurement/Legal |
Asset ناشناخته به Coverage gap تبدیل میشود. OWASP Web Security Testing Guide چارچوب جامعی برای تست وب ارائه میکند و توصیه میکند شناسه سناریوها با نسخه ارجاع شوند. در Statement of Work بنویسید مثلاً WSTG version/snapshot و کدام Scenarioها In scope هستند؛ عبارت مبهم «بر اساس OWASP» قابلممیزی نیست.
Black-box، Gray-box و White-box رتبه کیفیت نیستند
| مدل دانش | دسترسی Tester | Fit | Coverage gap |
|---|---|---|---|
| Black-box | اطلاعات عمومی و بدون Credential داخلی | دید مهاجم بیرونی و exposed surface | وقت Recon و Coverage عمیق کمتر |
| Gray-box | حسابهای نماینده و مستندات محدود | Role/Tenant/Workflow با کارایی خوب | Code/design root cause محدود |
| White-box | Source، Architecture، config و accountها | عمق، Variant و Root cause | اگر execution ضعیف باشد همچنان ناقص است |
برای وباپ بیشتر اوقات Gray/White-box با چند Role و دو Tenant، شواهد بهتری از Black-box تنها میدهد. شبیهسازی مهاجم بیرونی یک Objective ممکن است؛ اتلاف زمان برای کشف چیزی که مالک میتواند مستند کند، الزام کیفیت نیست.
Test account matrix؛ قلب آزمون Authorization
| Actor | Tenant | State | Data |
|---|---|---|---|
| Anonymous | ندارد | بدون Session | Public fixture |
| User A | Tenant 1 | فعال | Objectهای A |
| User B | Tenant 1 | فعال | Objectهای B |
| User C | Tenant 2 | فعال | Objectهای C |
| Suspended user | Tenant 1 | معلق | Session/Token قبلی |
| Support | چند Tenant | محدود/Just-in-time | Mask شده |
| Admin | Platform | MFA و approval | Dedicated test records |
با این ماتریس میتوان Same-role، Cross-user، Cross-tenant، vertical privilege و lifecycle revoke را آزمود. مقاله امنیت API و OWASP قرارداد دقیق Authorization، OAuth/JWT و Webhook را پوشش میدهد؛ Pentest باید پیادهسازی واقعی آن قرارداد را ارزیابی کند.
Baseline را با ASVS بسازید، نه فقط Top ۱۰
OWASP Top 10:2025 سند Awareness است و دستههای ریسک مهمی مثل Broken Access Control، Security Misconfiguration، Supply Chain Failures و Mishandling of Exceptional Conditions را برجسته میکند؛ اما Checklist کامل پذیرش نیست.
OWASP ASVS 5.0.0 Requirementهای قابلارجاع برای طراحی، توسعه، تست و Procurement میدهد. Requirement ID را با Version ذخیره کنید تا Coverage و Retest در طول زمان قابلردیابی بماند.
| Artifact | نقش | استفاده درست |
|---|---|---|
| OWASP Top 10:2025 | Awareness/Program conversation | یادآوری دسته ریسک؛ نه ادعای Coverage کامل |
| OWASP WSTG | Test scenarios/methodology | Scenario ID + version + applicability |
| OWASP ASVS 5.0.0 | Security requirement baseline | Requirement traceability و acceptance |
| OWASP API Top 10:2023 | API awareness | با Requirement/API contract تکمیل شود |
| NIST SP 800-115 | Assessment planning | روش، محدودیت، تحلیل و mitigation |
Coverage map وباپلیکیشن
فهرست زیر سطح پوشش است، نه دستور Exploit. تکنیک دقیق فقط در RoE، محیط مجاز و توسط متخصص اجرا میشود.
| حوزه | سؤالهای آزمون |
|---|---|
| Configuration/Deployment | Debug، default، secret، header، storage و admin exposure چگونه کنترل میشوند؟ |
| Identity | Registration، login، MFA، recovery، session و revoke درستاند؟ |
| Authorization | Object/function/field/tenant بر اساس server-side policy محدودند؟ |
| Input/output | Validation، encoding، parser و template مرز امن دارند؟ |
| Business logic | State، price، approval، quota، refund و concurrency قابلدورزدناند؟ |
| File/media | type، size، storage، processing، download و access policy چیست؟ |
| API | Inventory، schema، authn/z، rate، resource و third-party trust چگونهاند؟ |
| Client | Secret، sensitive data، DOM/message/storage و dependency exposure چیست؟ |
| Crypto/Transport | TLS، key، token، randomness و sensitive-data lifecycle مناسباند؟ |
| Error/Exception | Fail-safe، rollback، duplicate و partial failure چگونهاند؟ |
| Logging/Alerting | رویداد مهم ثبت، همبسته و به Owner هشدار میشود؟ |
| Supply chain | Artifact، dependency، provenance و update trust چیست؟ |
Business logic را چگونه Scope کنیم؟
Scanner نمیداند «تخفیف فقط یکبار»، «بازپرداخت حداکثر مبلغ تسویهشده» یا «تأییدکننده نباید درخواستکننده باشد» یعنی چه. Product و Finance باید Invariantها را قبل از تست بنویسند.
| Flow | Invariant نمونه | Failure class |
|---|---|---|
| ثبتنام | Identity یکتا و state transition معتبر | duplicate/abuse/verification bypass |
| Login/recovery | عامل قوی، rate و revoke | enumeration/session persistence |
| Order | price/discount/inventory از Source of truth | client-side trust/race/state skip |
| Payment | verified callback و idempotent settlement | duplicate/forged/uncertain state |
| Refund | مبلغ تجمعی از settled بیشتر نشود | concurrency/approval bypass |
| Admin | separation of duties و audit | privilege escalation/hidden action |
| Multi-tenant | هر query/action در tenant context | cross-tenant read/write |
| Export | فقط داده مجاز و ثبتشده | bulk exposure/background job leak |
برای Login، تفکیک Brute force، Credential stuffing و Recovery abuse در راهنمای دفاع Login آمده است؛ برای حسابهای مدیریت نیز MFA و Break-glass باید در Scope باشد.
API و Webhook را ضمیمه فرض نکنید
SPA و Mobile app ممکن است فقط Clientهای API باشند. Scope باید Endpoint inventory، نسخههای قدیمی، GraphQL operation، Webhook receiver، background job و admin API را پوشش دهد. OWASP API Security Top 10:2023 ریسکهایی مثل Object-level authorization، Sensitive business flow، Inventory و Unsafe consumption را یادآوری میکند.
| API artifact | Evidence لازم |
|---|---|
| OpenAPI/Schema | Version، auth، field و error contract |
| Endpoint inventory | public/internal/admin/deprecated owner |
| Identity matrix | token type، audience، scope، tenant و lifecycle |
| Business flow | state diagram و invariant |
| Webhook | signature، replay، idempotency و source validation contract |
| Rate/Quota | resource cost، per-actor policy و failure response |
Production یا Staging؟
هیچ پاسخ یکسانی وجود ندارد. Staging ایزوله ریسک عملیاتی را کم میکند اما ممکن است WAF، IAM، data volume، CDN، secret و configuration واقعی را بازنمایی نکند. Production واقعیتر است و Blast radius بیشتری دارد.
| گزینه | مزیت | Guardrail |
|---|---|---|
| Staging production-like | تست عمیق با داده مصنوعی | config parity، version pin و drift report |
| Production محدود | کنترل و Telemetry واقعی | low rate، test tenant، stop trigger و on-call |
| دو مرحلهای | عمق در Staging، Validation محدود در Production | mapping یافته و تأیید تفاوت |
پیش از Production test، Backup و Restore باید اثبات شده باشند؛ راهنمای Disaster Recovery و بازیابی را به Pre-flight وصل کنید. Backup مجوز تست مخرب نیست.
Pre-flight پیش از شروع
- نسخه، Feature flag و deployment freeze یا change log ثبت شده است.
- Test account/tenant/data قابلحذف آمادهاند.
- On-call، SOC، Hosting و Vendorهای لازم اطلاع دارند.
- Source IP و Window ثبت و Alert suppression محدود تعریف شده است.
- Backup/restore و Capacity headroom تأیید شدهاند.
- Stop command و کانال اضطراری آزموده شدهاند.
- Evidence vault و encryption/retention تعیین شده است.
- Legal/Privacy approval و third-party permission موجود است.
Stop condition و ارتباط حین تست
| رویداد | اقدام | مالک |
|---|---|---|
| SLO breach | توقف فوری، ثبت timestamp و Incident triage | Service owner |
| داده واقعی غیرمنتظره | عدم ادامه مشاهده، secure evidence و Privacy escalation | Data/Privacy owner |
| Third-party surface | توقف آن مسیر و بررسی مجوز | Engagement manager |
| Critical finding | کانال Out-of-band و interim mitigation | Security owner |
| Provider abuse alert | تطبیق Source/Window و pause | Cloud/Hosting owner |
| Unclear scope | Stop-and-ask؛ عدم تفسیر خودسرانه | Tester lead |
Telemetry باید تست را از حمله واقعی جدا کند. Trace، audit log، WAF/auth event و Alert باید Correlation ID یا Tag مجاز داشته باشند. راهنمای Observability، SLO و Alert برای این Evidence عملیاتی لازم است.
Evidence؛ حداقل لازم، نه جمعآوری حداکثری
گزارش نباید خود به نشت داده تبدیل شود. برای اثبات، رکورد مصنوعی و حداقل Field استفاده کنید. Secret، Token، Cookie، PII و Payment data را Mask کنید.
| فیلد Evidence | نمونه امن |
|---|---|
| Finding ID | PT-2026-014 |
| Asset/version | api.example / release digest |
| Actor/precondition | User A در Tenant ۱ |
| Request reference | Sanitized request + trace ID |
| Observed result | دسترسی به test object متعلق به User B |
| Expected result | deny و audit event |
| Impact boundary | same tenant/cross tenant/admin |
| Cleanup | test record deleted/token revoked |
Severity با یک عدد Base تمام نمیشود
CVSS ۴.۰ از FIRST Base، Threat، Environmental و Supplemental metric دارد و تأکید میکند CVSS فقط Base score نیست. نمره فنی ورودی تصمیم است؛ Priority باید Context سازمان را نیز ببیند.
| بعد | سؤال |
|---|---|
| Exploitability | Precondition، privilege، interaction و repeatability چیست؟ |
| Reach | یک رکورد، یک Tenant، همه Tenantها یا control plane؟ |
| Impact | Data/transaction/availability/safety چه تغییری میکند؟ |
| Asset criticality | این سامانه چه Outcome و RTO/RPO دارد؟ |
| Threat | Exploit maturity یا استفاده فعال مرتبط وجود دارد؟ |
| Controls | کدام کنترل واقعاً آزموده و مؤثر است؟ |
| Detection/recovery | MTTD/Contain/Restore چقدر است؟ |
| Business consequence | Fraud، privacy harm، downtime، contract و reputation چیست؟ |
Remediation priority = technical severity
× asset criticality
× reachable population
× threat relevance
× business consequence
÷ validated control effectivenessاین فرمول مفهومی است، نه ماشینحساب علمی. Assumption، داده و Risk owner را کنار نتیجه ثبت کنید. برای تبدیل سناریوی امنیتی به Loss range از راهنمای بودجه امنیت سایت و Roadmap ریسکمحور استفاده کنید.
گزارش Pentest چه بخشهایی دارد؟
| بخش | مخاطب | محتوا |
|---|---|---|
| Executive summary | مدیر/Risk owner | Objective، Scope، top scenarios، residual risk و decisions |
| Scope/method | Audit/Engineering | Asset، version، account، window، exclusions، WSTG/ASVS mapping |
| Coverage | Security lead | tested/not-tested/not-applicable و محدودیت |
| Findings | Developer | root cause، steps امن، evidence، impact، recommendation |
| Risk | Risk owner | CVSS vector، context، business severity و priority |
| Remediation plan | Product/Engineering | owner، SLA، dependency، mitigation و acceptance |
| Appendix | Assurance | tool/version، test IDs، data handling و cleanup attestation |
Screenshot بدون Request context یا Tool dump چندصدصفحهای گزارش نیست. هر Finding باید Reproducible، Deduplicated، Root-cause-oriented و قابلردیابی به Requirement باشد.
یافته را به Ticket قابلساخت تبدیل کنید
Finding: PT-2026-014
Asset/version: ...
Affected roles/tenants: ...
Precondition: ...
Expected security rule: ...
Observed behavior: ...
Sanitized evidence/trace: ...
Root cause hypothesis: ...
Required control and acceptance tests: ...
Owner / due date / risk decision: ...
Retest result: pendingراهکار «ورودی را Validate کنید» کافی نیست. Recommendation باید محل Enforcement، Policy، deny behavior، Audit event و Regression test را مشخص کند بدون اینکه معماری را از بیرون تحمیل کند.
Remediation و Retest؛ پایان واقعی پروژه
| State | Definition |
|---|---|
| Open | Finding تأیید و Owner تعیین شده |
| Mitigated | کنترل موقت اثر را کم کرده، Root cause باقی است |
| Fixed pending retest | تغییر Deploy و Evidence تیم ارائه شده |
| Retest passed | مسیر اصلی و Variantهای معقول دیگر قابلبازتولید نیستند |
| Risk accepted | Residual risk با Expiry و Approver ثبت شده |
| False positive | با Evidence و Reviewer مستقل رد شده |
| Closed | Evidence، Retest و cleanup کاملاند |
Retest فقط اجرای Payload قبلی نیست. Root cause، مسیرهای مشابه، Role/Tenantهای متاثر، negative test و نبود Regression بررسی میشوند. اگر Scope یا نسخه عوض شده است، نتیجه قبلی را خودکار تعمیم ندهید.
Remediation SLA را ریسکمحور تعریف کنید
| Tier نمونه | اقدام فوری | تصمیم لازم |
|---|---|---|
| Critical reachable | Contain/disable/rotate/monitor | Incident یا emergency change |
| High | Owner و short deadline | fix/mitigation + retest |
| Medium | Sprint plan و regression test | dependency/architecture plan |
| Low/Hardening | Backlog با grouping | قبول، اصلاح جمعی یا baseline update |
عدد روز ثابت را بدون Appetite و Capability کپی نکنید. SLA باید با Criticality، Exposure، Threat، Control و Release model شما سازگار و Expiry پذیرش ریسک مشخص باشد.
Pentest را به SDLC وصل کنید
| مرحله | کنترل مستمر | نقش Pentest |
|---|---|---|
| Design | Threat model و abuse case | آزمون Trust boundary و invariant |
| Code | review، SAST، unit security test | کشف زنجیره/منطق و variant |
| Build | SCA، secret scan، SBOM، provenance | Reachability و اثر integration |
| Deploy | IaC/policy/config scan | production-like configuration validation |
| Operate | DAST، scan، log، alert، patch | کنترل واقعی و response evidence |
| Change/Incident | risk review و regression suite | targeted assessment/retest |
Finding باید به Test دائمی تبدیل شود تا در Release بعدی برنگردد. Pipeline CI/CD امن میتواند Security gate، Artifact provenance، Progressive delivery و Rollback را اجرا کند؛ Pentest جای آن را نمیگیرد.
CSP و WAF در Pentest چه نقشی دارند؟
WAF، CSP، Rate limit یا MFA کنترل جبرانیاند؛ وجودشان Finding ریشهای را خودکار حذف نمیکند. باید نشان دهید کنترل در مسیر واقعی فعال، قابلدورزدننبوده، قابلمشاهده و دارای Failure behavior مناسب است.
برای XSS، CSP سختگیرانه Defense-in-depth است و جای Output encoding/DOM safety را نمیگیرد. Pentest باید Policy و Report telemetry را ببیند، اما نباید با ایجاد Payload مخرب برای کاربران واقعی از RoE عبور کند.
انتخاب شرکت یا Tester
| معیار | Evidence | Red flag |
|---|---|---|
| Methodology | WSTG/ASVS mapping و sample coverage | «OWASP certified» مبهم |
| تجربه دامنه | Role/Tenant/API/Payment مشابه | فقط Scanner screenshot |
| Team | Named lead/reviewer و independence | رزومه شرکت بدون فرد اجراکننده |
| Safety | RoE، stop، data handling و insurance | پیشنهاد DoS/Persistence پیشفرض |
| Report | نمونه Redacted با root cause/acceptance | CVSS تنها و راهکار عمومی |
| Retest | Scope، window و deliverable روشن | پروژه با PDF تمام میشود |
| Knowledge transfer | Debrief برای مدیر و Developer | عدم پاسخگویی پس از تحویل |
| Conflict | استقلال و disclosure | فروش اجباری ابزار خود برای هر Finding |
هزینه تست نفوذ چگونه برآورد میشود؟
قیمت ثابت عمومی قابلاعتماد نیست. هزینه تابع Person-day، تعداد Role/Tenant/Flow/API، Source access، Environment، Compliance mapping، Report language، Retest و Window است.
| Driver | واحد برآورد |
|---|---|
| Attack surface | app/API/domain/integration count |
| Identity complexity | role × tenant × lifecycle state |
| Business flow | critical workflows/invariants |
| Knowledge model | black/gray/white و code review depth |
| Environment | staging/production و safety coordination |
| Assurance | WSTG/ASVS/PCI mapping و independent review |
| Deliverable | language، executive/technical، workshop |
| Retest | finding count/root-cause groups/change size |
Engagement TCO = scoping and preparation
+ testing and peer review
+ report/debrief
+ engineering remediation
+ retest/regression
+ operational coordination
+ residual-risk handlingپیشنهاد ارزان با Scope مبهم میتواند Coverage کمی بدهد و هزینه Remediation را بالا ببرد. بودجه را بر اساس Risk reduction و Coverage critical flow بسنجید، نه تعداد Finding.
ملاحظات اجرای تست نفوذ در ایران
| موضوع | کنترل |
|---|---|
| مجوز | متن فارسی/انگلیسی روشن، مالک Asset و نماینده دارای اختیار |
| Hosting/Cloud | Terms، provider notification و source IP مجاز بررسی شود |
| داده واقعی | داده مصنوعی، masking، retention و محل نگهداری گزارش |
| پرداخت/فروشگاه | Sandbox درگاه و ممنوعیت تراکنش واقعی بدون Approval |
| شبکه | ISP/اپراتور، WAF/CDN و rate با Window واقعی هماهنگ |
| زمان | timezone ایران، on-call و stop contact مشترک |
| زبان گزارش | Executive فارسی + اصطلاح فنی/ID استاندارد |
| حقوق/قرارداد | با وکیل/متخصص واجدصلاحیت برای مقررات و مسئولیت مشورت شود |
از داده یا حساب مشتری واقعی برای «واقعیترشدن» تست استفاده نکنید، مگر ضرورت، رضایت، حداقلگرایی و کنترل آن مستند باشد. کیفیت از مدل Threat و Fixture درست میآید، نه افزایش ریسک کاربران.
متریکهای برنامه Pentest
| Metric | تعریف سالم | ضدمتریک |
|---|---|---|
| Critical-flow coverage | جریان/Role/Tenant آزموده به برنامه | تعداد Request |
| Requirement coverage | ASVS/WSTG tested/not-tested/N/A | «OWASP covered» |
| Time to triage | Finding تا Owner/decision | تعداد Finding زیاد |
| Time to remediate | بر اساس Risk tier | میانگین بدون Severity |
| Retest pass rate | Fixهای مؤثر در اولین Retest | Ticket closed بدون Retest |
| Recurrence | Root cause تکراری در Release/Team | False-positive صفر به هر قیمت |
| Detection evidence | Finding critical که Alert/trace داشت | حجم Log |
| Residual risk age | پذیرش ریسک منقضی/باز | Accepted برای همیشه |
RACI تست نفوذ
| کار | Accountable | Responsible | Consulted |
|---|---|---|---|
| Authorization/RoE | Business/System owner | Security engagement lead | Legal/Privacy/Hosting |
| Scope/inventory | Tech owner | Architecture/Product | Tester/SRE/Data |
| Safe execution | Tester lead | Testing team | On-call/SOC |
| Critical escalation | Security owner | Incident lead | Business/Legal |
| Finding triage | Product owner | Security + Engineering | Risk/Data |
| Remediation | Engineering owner | Delivery team | Tester/Security |
| Risk acceptance | Named risk owner | Governance | Security/Business |
| Retest/closure | Security owner | Independent tester | Engineering/Audit |
چهار Runbook ضروری
۱. تست باعث افت SLO میشود
- Tester Stop command را اجرا و timestamp/source را اعلام کند.
- On-call اثر را از حمله واقعی تفکیک و سرویس را پایدار کند.
- Evidence و change/test log حفظ شود.
- فقط پس از Root cause، rate جدید و Approval از سر گرفته شود.
۲. Tester به داده واقعی غیرمنتظره میرسد
- مشاهده/جمعآوری بیشتر متوقف شود.
- حداقل Evidence رمزشده و دسترسی محدود ثبت شود.
- Privacy/Security owner Scope و Incident threshold را تصمیم بگیرند.
- داده طبق Retention قرارداد حذف و attestation ثبت شود.
۳. Finding بحرانی در حین تست
- کانال Out-of-band و شناسه Finding استفاده شود.
- Reach/impact بدون گسترش غیرضروری تأیید شود.
- Containment کمخطر مثل disable/rotate/restrict/monitor اجرا شود.
- Incident classification، fix و emergency retest برنامهریزی شود.
۴. اصلاح در Retest رد میشود
- Diff نسخه و Environment تأیید شود.
- Patch symptom از Root cause جدا شود.
- Variant/role/tenant و negative test بازبینی شوند.
- Ticket با Owner/Deadline جدید باز و Risk موقت تصمیمدار شود.
برنامه ۹۰روزه برای Pentest قابلدفاع
| بازه | خروجی | Gate |
|---|---|---|
| روز ۱ تا ۱۰ | Objective، system owner، risk tier و compliance check | بدون Owner پروژه شروع نمیشود |
| روز ۱۱ تا ۲۰ | Asset/API/role/tenant/data/integration inventory | Scope gap صریح است |
| روز ۲۱ تا ۳۰ | Authorization، RoE، WSTG/ASVS mapping و vendor selection | Stop/data/third-party terms امضا شدهاند |
| روز ۳۱ تا ۴۰ | Test fixture، account matrix، staging parity و pre-flight | Backup/restore و on-call Pass |
| روز ۴۱ تا ۵۵ | اجرای کنترلشده، daily sync و critical escalation | Scope/Rate drift ممنوع |
| روز ۵۶ تا ۶۵ | Peer-reviewed report، debrief و ticketization | هر Finding Owner/acceptance دارد |
| روز ۶۶ تا ۸۰ | Containment، root-cause fix و regression tests | Risk acceptance دارای Expiry |
| روز ۸۱ تا ۹۰ | Retest، closure، metrics و next-trigger plan | پروژه بدون Retest بسته نمیشود |
چکلیست نهایی
- مالک دارای اختیار، Authorization کتبی داده است.
- In-scope/Out-of-scope و Third party دقیقاند.
- DoS، Social engineering، Persistence و Data handling حکم صریح دارند.
- Stop condition، On-call و کانال Critical آزموده شدهاند.
- Asset، API، Role، Tenant، State و Integration inventory شدهاند.
- WSTG/ASVS با Version و Test ID نگاشت شدهاند.
- Top ۱۰ بهجای Baseline کامل استفاده نشده است.
- Business invariant و Abuse case در Scope هستند.
- Staging/Production parity و Coverage gap ثبت شدهاند.
- Evidence حداقلی، Masked، رمزشده و دارای Retention است.
- CVSS با Threat/Environment و Business impact غنی شده است.
- Report شامل Root cause، Acceptance، Owner و Deadline است.
- Fix به Regression test و Retest مستقل رسیده است.
- Risk acceptance Approver و Expiry دارد.
- Cadence بعدی با Trigger ریسکمحور تعریف شده است.
جمعبندی
تست نفوذ وباپلیکیشن «حمله نمایشی» یا اسکن گران نیست. یک Engagement مهندسی و ریسک است: هدف و Scope، مجوز و RoE، Account/Role/Tenant، Requirement و Test ID، اجرای ایمن، Evidence حداقلی، Severity زمینهدار، Root cause، اصلاح و Retest.
اگر فقط یک PDF دریافت کنید، چرخه امنیت بهتر نشده است. ارزش واقعی وقتی ایجاد میشود که Finding به کنترل قابلآزمون، Owner، Release امن، Telemetry و تصمیم Residual risk متصل شود. Pentest یک Snapshot با Coverage محدود است؛ امنیت وباپلیکیشن از تکرار Secure design، تست خودکار، عملیات قابلمشاهده و ارزیابی انسانی هدفمند ساخته میشود.
پرسشهای متداول
تست نفوذ وباپلیکیشن چیست؟
ارزیابی مجاز، زماندار و کنترلشدهای است که امکان سوءاستفاده از ضعفها و اثر واقعی آنها را در Scope مشخص بررسی میکند. خروجی باید Evidence امن، Root cause، اولویت، راه اصلاح و نتیجه Retest داشته باشد؛ تست هر سامانه بدون مجوز صریح ممنوع است.
هر چند وقت یکبار باید Pentest انجام دهیم؟
Frequency از ریسک و Requirement میآید: پیش از Production برای مسیر حیاتی، پس از تغییر مهم Identity/Architecture/Payment/API، پس از Incident و در Cadence دورهای متناسب با Exposure و Criticality. برخی استانداردها مثل PCI DSS الزام خاص دارند که باید از نسخه جاری و متخصص مربوط بررسی شود.
تفاوت Vulnerability scan و تست نفوذ چیست؟
Scan معمولاً ضعفهای بالقوه را با پوشش وسیع پیدا میکند؛ Pentest بهصورت انسانی و کنترلشده Exploitability، زنجیره، Authorization و Business logic را میسنجد. هیچکدام جای دیگری را نمیگیرد و هر دو باید با Code review، SAST/SCA و Secure SDLC تکمیل شوند.
Black-box بهتر است یا Gray-box و White-box؟
هیچکدام ذاتاً بهتر نیست. Black-box دید بیرونی میدهد، Gray-box برای Role/Tenant و Workflow کارآمد است و White-box عمق/Root cause را بیشتر میکند. ترکیب مناسب از Objective، Threat و بودجه میآید؛ میزان اطلاعات Tester رتبه کیفیت نیست.
هزینه تست نفوذ وباپلیکیشن چقدر است؟
به Surface، تعداد Role/Tenant/API/Flow، مدل دسترسی، Environment، Requirement mapping، Person-day، گزارش، Workshop و Retest بستگی دارد. برای Quote منصفانه Inventory و Scope واحد به چند تیم بدهید و Coverage، Safety، گزارش نمونه و Retest را مقایسه کنید، نه فقط مبلغ نهایی.






