نه Job امنیتی از نه Job سبز است، Critical Finding صفر و Ticket رخداد بسته شده است. آیا Controlها مؤثر بودهاند و تکرار رخنه نامحتمل است؟ نه لزوماً. شاید Scanner اصلاً Asset یا Attack path متاثر را ندیده، Detection خاموش بوده، Exception منقضی نشده، Patch فقط یک Symptom را پوشانده یا Ticket عملیاتی بسته شده اما Claim امنیتی هنوز Evidence تازه ندارد.
این راهنما پس از مهار و بازیابیِ مجاز، یک Security Escape Learning Protocol میسازد: Incident Fact → Attack Path → Security Claim → Control Map → Escape/Control Gap → Counterfactual محدود → Remediation/Retest → Variant/Recurrence Evidence → Correction. هدف یافتن «مقصر» یا ادعای «QA میتوانست رخنه را حتماً جلوگیری کند» نیست.
پاسخ کوتاه: تستر بعد از رخنه امنیتی چه نقشی دارد؟
در رخداد فعال، تستر فقط در محدودهی Incident command، مجوز و تخصص خود Evidence را حفظ یا Verification امن انجام میدهد؛ مهار، ارتباط بیرونی، افشا، حقوقی و Risk acceptance را تصاحب نمیکند. پس از تثبیت و مجوز تحلیل، میتواند Observationها را به Claim/Control و Test coverage وصل کند، Gap را طبقهبندی کند و Remediation را با Variant و Negative control بازآزمایی کند.
| فاز | نقش مفید QA/Test | مرز اختیار |
|---|---|---|
| Active response | حفظ Evidence طبق دستور، Verification محدود | نه Incident command یا External communication |
| Containment/Recovery | Smoke/Control check در Scope امن | نه تغییر Production بدون Authority |
| Analysis | Fact/Path/Claim/Control/Gap mapping | نه Cause یا Blame بدون Evidence |
| Remediation | Reproduction امن، Retest و Regression | نه اعلام Risk accepted/closed |
| Learning | Variant coverage، control feedback، correction | نه وعدهی عدم تکرار |
مالکیت مقاله و مرز با Security Testing و RCA
برای تعریف Threat/Vulnerability/Risk، ASVS/WSTG و روشهای آزمون، راهنمای تست امنیت نرمافزار مالک موضوع است. DevSecOps در CI/CD قرارداد Control در Pipeline و عملیاتیسازی ابزارهای AppSec Coverage/Triage/Retest ابزارها را پوشش میدهند. برای تحلیل علّی عمومی، RCA از Evidence تا Action را ببینید. این صفحه فقط Security Escape را از Incident fact به Control-learning متصل میکند.
| Intent | مالک | خروجی |
|---|---|---|
| امنیت را چگونه تست کنیم؟ | Security Testing | Test plan/Finding/Retest |
| Controlهای CI چگونه کار کنند؟ | DevSecOps/AppSec Ops | Control registry/tool portfolio |
| علت یک Failure چیست؟ | RCA | Causal model/actions |
| چرا Control از Path عبور داد؟ | همین مقاله | Escape review/recurrence evidence |
تستر «اولین خط دفاع» یا «نگهبان امنیت» نیست
این استعارهها مسئولیت طراحی امن، پیادهسازی، پیکربندی، عملیات، Monitoring، Incident response، مدیریت Dependency، رهبری و سرمایهگذاری را روی یک نقش میاندازند. CISA در Secure by Design بر مالکیت سازنده و رهبری نسبت به Outcome امنیت مشتری تأکید میکند؛ مرجع: CISA Secure by Design. Testing یکی از Controlهای نظام است، نه دیوار نهایی یا تضمین.
Incident Response را با Escape Review قاطی نکنید
NIST SP ۸۰۰-۶۱ Revision ۳ پاسخ به رخداد را در مدیریت ریسک سازمانی و همهی Functionهای CSF ۲.۰ جای میدهد؛ مرجع رسمی: NIST SP 800-61 Rev.3. این مقاله جای Playbook سازمانی نیست. Deep analysis نباید مهار را عقب بیندازد، Evidence را آلوده کند یا تیم را به بازاجرای ناامن Path در Production سوق دهد.
| جریان | سؤال | Authority |
|---|---|---|
| Response | چگونه Impact را محدود و Service را بازیابی کنیم؟ | Incident command |
| Forensic/legal | چه Evidence/notification تعهدی داریم؟ | Policy/legal/privacy authority |
| Escape review | کدام Claim/Control/Detection gap دیده شد؟ | Security/product analysis authority |
| Remediation | چه Change و Retest لازم است؟ | Control/product owners |
| Risk decision | Residual risk پذیرفته یا Release میشود؟ | Risk/release authority |
Fact، Observation، Interpretation، Hypothesis و Cause
| برچسب | نمونهی سالم | خطای رایج |
|---|---|---|
| Fact/Observation | در Run خیالی، Token دیررس پذیرفته شد | «مهاجم احراز هویت را شکست» |
| Interpretation | Oracle این پذیرش را خلاف Claim میداند | برداشت بهعنوان Fact |
| Hypothesis | Config و design Control ممکن است Gap داشته باشند | Root cause زودرس |
| Causal factor | با Evidence و alternative explanation سنجیده | یک CVE/Scanner finding = Cause |
| Counterfactual | «ممکن بود پیشتر Detect شود» با Confidence | «حتماً رخنه را پیشگیری میکرد» |
Incident Fact Packet
IncidentFactPacket {
incidentId, incidentVersion, status,
incidentAuthority, factsAsOf,
detectionTime, containmentTime, recoveryTime,
affectedScope, confirmedImpact, potentialImpact,
asset/dataClasses, evidenceHoldId, timelineId,
unknowns, limitations,
communicationsRef, legalPolicyRef, privacyPolicyRef,
access, digest
}
Confirmed و Potential impact را جدا کنید. Scope میتواند با Evidence تازه تغییر کند؛ Fact packet را Version کنید. دادهی Incident ممکن است Secret، PII، Credential یا Indicator حساس داشته باشد؛ کمینهسازی، Legal hold، Chain of custody و Access policy را از سازمان بگیرید، نه از سلیقهی نویسندهی تست.
Timeline باید Evidence-backed و قابل اصلاح باشد
Event time، ingestion time، analyst time و notification time یکی نیستند. Clock skew، sampling، retention و log loss را ثبت کنید. نبود Log اثبات نبود Event نیست؛ Timestamp برابر نیز ترتیب علّی را ثابت نمیکند. Correction باید Timeline قبلی را Supersede کند، نه تاریخچه را بازنویسی.
Attack Path را از داستان مهاجم جدا کنید
Attack Path یک مدل نسخهدار از Steps مشاهدهشده و فرضی است. Actor intent، قابلیت و Stepهای دیدهنشده را Fact ننامید. Entry point، Trust boundary، Asset، Preconditions، Control encounter، Observation، Unverified step، Alternative path و Confidence را ثبت کنید.
AttackPath {
pathId, actorAssumption, precondition,
entryPoint, initialAccess, trustBoundary, assetReached,
actionSequence[], controlEncounters[], observations[],
evidenceRefs[], unverifiedSteps[], alternativePaths[],
confidence, scope, version, digest
}
Exploit Chain و Control Chain را روی هم بیندازید
| Path step | Expected control | Observed outcome | Gap question |
|---|---|---|---|
| ورودی به Reset flow | Abuse prevention | در Scope خیالی محدود نبود | Design یا Config؟ |
| Token دیررس | Expiry/single use | پذیرفته شد | Implementation/clock? |
| تکرار درخواست | Detection/alert | Signal ساخته نشد | Telemetry/rule/route? |
| اثر روی Session | Containment/revoke | دیر اجرا شد | Response ownership? |
Security Claim را قبل از Tool نتیجهگیری کنید
«DAST سبز» Claim نیست. Claim بگوید کدام Property برای کدام Subject و Threat، در چه Scope/Environment، با چه Control outcome و Evidence انتظار میرود. Scanner فقط بخشی از Verification method است.
SecurityClaim {
claimId, securityProperty,
subjectId, threatId, expectedControlOutcome,
basisRef, scope, environment,
ownerCapability, verificationMethod,
evidenceRequirement, knownLimitations,
validityWindow, status, supersedes, digest
}
Control Inventory؛ Prevent، Detect، Respond و Recover
یک Control ممکن است Prevent نکند اما Detection و Response بسازد. Purpose، Threat، Subject، implementation/config/deployment version، Ownerهای پیادهسازی/عملیات/Evidence، trigger/frequency، input coverage، detection logic، response action، failure mode و fallback را ثبت کنید.
SecurityControl {
controlId, controlType, purpose, threatIds[],
preventDetectRespondRecover[],
implementationOwner, operationOwner, evidenceOwner,
subjectId, implementationVersion, configurationVersion,
deploymentScope, frequency, trigger, inputCoverage,
detectionLogic, responseAction, failureMode, fallback,
testMethod, lastEvidenceRef, status, digest
}
Control سبز با Control مؤثر یکسان نیست
| Signal | محدودیت | Evidence تکمیلی |
|---|---|---|
| Job exit 0 | Runner موفق، نه Control outcome | Subject/Coverage/Finding/Policy result |
| Zero critical | Severity/Rules/Scope/False negative | Truth set + gap analysis |
| Alert rule enabled | Route/Telemetry/Data ممکن است غیرفعال باشد | Safe detection exercise |
| Patch deployed | Path/variant ممکن است باقی بماند | Remediation/variant retest |
| Ticket closed | Workflow state، نه Security Claim | Evidence/authority/expiry |
SAST، DAST، SCA و Pentest چه چیزهایی را نمیدیدند؟
SAST بدون Runtime/config و Business context محدود است؛ DAST به Reachability/Auth/Crawl/Environment وابسته است؛ SCA Presence و Known advisory میسازد، نه Exploitability یا Cause؛ Pentest یک Scope/Window/Method محدود دارد. برای مرز ابزارها، راهنمای SAST/DAST/SCA و برای Subject/Component identity، راهنمای SBOM را ببینید.
| روش | Signal مفید | Gap رایج |
|---|---|---|
| SAST | Pattern/Data flow در Source/Build | Runtime config/business abuse |
| SCA/SBOM | Component/advisory inventory | Reachability/exposure/compensating controls |
| DAST/API scan | رفتار reachable در Environment | State/role/hidden workflow |
| Pentest | Pathهای هدفمند در RoE | زمان/Scope/variant محدود |
| Telemetry exercise | Detect/route/respond outcome | Prevention/design proof |
OWASP Top ۱۰ برنامه کامل یا Cause catalogue نیست
OWASP Top ۱۰ برای آگاهی و شروع Risk conversation مفید است، اما Asset/Threat/Requirement/Control/Coverage مخصوص محصول را جایگزین نمیکند. نسخهی فعلی و روش استفاده را Pin کنید؛ برای جزئیات، OWASP Top ۱۰:۲۰۲۵ و روش تست را بخوانید.
Escape چیست؟ Finding از کدام مرز گذشت؟
Escape را فقط «QA پیدا نکرد» تعریف نکنید. ممکن است Claim اصلاً نوشته نشده، Threat model ناقص، Control طراحی نشده، implementation/config/deployment drift داشته، Test coverage کم، Finding سرکوب/Defer، Telemetry کور، Response دیر یا Governance مبهم باشد. مرز را با Evidence تعیین کنید.
| Gap class | پرسش | Owner capability نمونه |
|---|---|---|
| CLAIM/THREAT_GAP | Requirement یا Threat غایب بود؟ | Product security/architecture |
| CONTROL_DESIGN_GAP | Control برای Path کافی بود؟ | Design/security engineering |
| IMPLEMENTATION_GAP | طرح درست اجرا شد؟ | Development |
| CONFIG/DEPLOY_GAP | نسخه و Scope موثر درست بود؟ | Platform/operations |
| COVERAGE_GAP | Verification سؤال را دیده بود؟ | Test/AppSec |
| TELEMETRY/RESPONSE_GAP | Detect/Route/Act عمل کرد؟ | Detection/IR |
| GOVERNANCE_GAP | Exception/Authority/expiry شکست خورد؟ | Risk/leadership |
Escape Record قابلکپی
SecurityEscape {
escapeId, escapedObservation,
expectedDetectionOrPrevention, actualControlOutcome,
gapClass, controlId, lifecycleStage,
whyNotDetected, evidenceRefs,
counterfactual, counterfactualConfidence,
alternativeExplanation,
ownerCapability, priority, disposition,
rationale, dueAt, digest
}
Counterfactual: «چه میشد اگر؟» را محدود کنید
بعد از حادثه آسان است بگوییم یک Test یا Scanner حتماً پیشگیری میکرد. Counterfactual سالم شرط، مکانیزم، Evidence، Coverage، زمان، Owner و Confidence دارد: «اگر Claim و Control نسخه X پیش از Release Y با این Variant آزموده میشد، احتمال Detection پیش از انتشار بیشتر بود.» این جمله هنوز Prevention قطعی یا نبود Path جایگزین را ادعا نمیکند.
Hindsight bias و Survivorship bias
دانستن Path واقعی، کشف آن را در گذشته بدیهی نشان میدهد. فقط Control شکستخورده را نبینید؛ Controlهایی که Impact را محدود یا Recovery را سرعت دادند هم بررسی کنید. Priority پیشین را با Evidence و Facts-as-of آن زمان ارزیابی کنید، نه با Impact شناختهشدهی امروز.
Blameless یعنی بدون مسئولیت نیست
نام فرد را جای مکانیزم نگذارید، اما Owner، Authority، Decision و تعهد را حذف نکنید. «همه مسئول امنیتاند» اگر Control owner، Evidence owner، risk authority و due date نداشته باشد یعنی هیچکس پاسخگو نیست. Human action را در Context ابزار، فشار، access، incentive و review بررسی کنید.
Remediation فقط Patch همان Finding نیست
Path ممکن است به Design، Config، Dependency، Default، Telemetry و Response مرتبط باشد. Fix local را از Path closure جدا کنید. Change باید Gap IDs، Design، Commit/Build، deployment/rollback، reproduction، negative controls، regression، side effects و Evidence Manifest داشته باشد.
SecurityRemediation {
remediationId, gapIds[], changeType,
designRef, commitId, buildId,
deploymentPlan, rollbackPlan,
testScope, exploitReproductionId,
negativeControls[], regressionScope, sideEffectChecks,
evidenceManifestId, ownerCapability,
status, limitations, digest
}
Reproduction امن؛ Attack را در Production تکرار نکنید
از Environment جدا، Asset/Data/Identity ساختگی، Network محدود، Rules of Engagement، rate/stop condition، Kill switch، cleanup و Evidence access استفاده کنید. Payload یا روش بهرهبرداری واقعی را در Ticket عمومی نگذارید. اگر Reproduction خطرناک یا غیرضروری است، از Model/Unit/Control exercise کمخطرتر Evidence بسازید.
Retest، Regression و Variant testing
| لایه | سؤال | نمونه Evidence |
|---|---|---|
| Confirmation | Path اصلی دیگر Outcome نامجاز میدهد؟ | همان Build/Control/Oracle |
| Negative control | رفتار مجاز هنوز کار میکند؟ | Single valid reset |
| Variant | Distributed/parallel/clock/state variant؟ | Bounded scenario set |
| Regression | Adjacent auth/session flows آسیب دیدند؟ | Risk-selected suite |
| Detection | Signal/route/action ساخته میشود؟ | Safe alert exercise |
| Recovery | Revoke/contain/runbook کار میکند؟ | Controlled drill |
Finding، Vulnerability، Exploitability، Exposure و Incident
Scanner finding ممکن است False positive، present-but-unreachable، vulnerable-and-exposed یا بخشی از Path باشد. CVE match Cause رخداد نیست. Subject digest/version، Reachability، effective config، compensating controls، exploit preconditions و Incident evidence را جدا کنید. Severity و Priority نیز Context و Authority میخواهند.
Suppression و Exception را بازبینی کنید
Suppressed finding ممکن است آن زمان طبق Scope درست بوده اما با Asset/Exposure جدید stale شده باشد. Exception باید Subject، Finding/Claim، rationale، compensating control، Authority، expiry و Reopen trigger داشته باشد. رخداد بهتنهایی ثابت نمیکند تصمیم پیشین غیرمنطقی بوده؛ Facts-as-of و Change history را بسنجید.
Recurrence Profile؛ فقط همان Payload را تست نکنید
RecurrenceProfile {
recurrenceProfileId, originalPathId,
variantPaths[], affectedAssets[],
threatModelChanges, claimChanges, controlChanges,
testChanges, telemetryChanges, policyChanges,
educationChanges, supplierActions, backlogActions,
measurementPlan, reviewDate, expiry, digest
}
Training یا Scanner بیشتر خودکار Prevention نیست. Variant، Asset family، Secure default، Dependency/Supplier action، Detection, Runbook, Exception policy و Architecture change را با Owner و Measure بررسی کنید.
Evidence of absence نداریم؛ Absence of evidence هم حکم نیست
Retest سبز Scope خودش را پشتیبانی میکند. نمیتواند نبود همهی Pathها یا مهاجم آینده را ثابت کند. برعکس، نبود Telemetry هم Incident را رد نمیکند. Claim limit، Unknown، Evidence gap، monitoring plan و validity window را کنار Result بنویسید.
Security Escape Result و Decision
SecurityEscapeResult {
resultId, incidentId, pathId,
claimIds[], controlIds[], gapIds[], remediationId,
buildId, environmentId, runIds[],
confirmationVerdict, variantVerdicts,
detectionVerdict, regressionVerdict,
unknowns, limitations, residualRisk,
evidenceManifestId,
recommendation, decisionAuthority, decision,
expiry, reopenTriggers, supersedes, digest
}
Ticket Closed، Remediation deployed، Tests pass، Risk accepted و Incident closed وضعیتهای جدا هستند. QA میتواند Evidence و Recommendation بدهد؛ Risk acceptance، Disclosure و Release به Authority تعریفشده تعلق دارد.
Correction و اطلاع به تصمیمهای متاثر
اگر بعداً Attack path، Impact، Asset scope یا Control outcome تغییر کرد، Review قبلی را پاک نکنید. Correction با prior/new digest، Evidence تازه، Confidence جدید و Query همهی Claim/Exception/Release/Customer communicationهای متاثر بسازید. سطح دسترسی Correction نیز حساس باقی میماند.
آزمایشگاه فارسی و آفلاین Reset خیالی
این Lab کاملاً ساختگی، آفلاین و جدا از هر شرکت، کاربر، سامانه، بانک، PSP یا Incident واقعی است. روش بهرهبرداری Production ارائه نمیکند و توصیهی امنیتی/حقوقی/حریم خصوصی/افشا یا پاسخ به رخداد یک سازمان نیست. Assetها شامل Identity Stub، Reset Simulator، Token Store، Notification Stub و Alert Sink خیالیاند.
| Observation خیالی | Expected control | Gap | Remediation evidence |
|---|---|---|---|
| Token دیررس پذیرفته شد | Expiry/single-use | Design+config | Boundary/clock/one-use variants |
| تکرار محدود شناسایی نشد | Rate+Detection | Telemetry rule | Safe alert exercise |
| مسیر مجاز باید بماند | Availability/UX guardrail | Overblocking risk | Negative controls |
| Session خیالی revoke شد | Containment | Response latency | Controlled drill |
شناسهها Synthetic هستند؛ ارقام فارسی/عربی/لاتین، Unicode NFC، RTL/LTR و UTC/Asia-Tehran/Jalali نمایشی فقط برای صحت Evidence آزمایش میشوند. هیچ نام، موبایل، ایمیل، IP، Password، Hash واقعی، Session، Cookie، Token، Credential، Payload، Exploit، Log یا Screenshot واقعی استفاده نمیشود.
Fixture: نه Job سبز در برابر ۲۰۴ Finding
Fixture مستقل `SYN-SECURITY-ESCAPE-CONTROL-GAP-۰۱` با Node.js و بدون Dependency بیرونی اجرا شد. Dashboard نه از نه Security Job، صفر Critical finding و Incident ticket بسته را دید و `SECURITY_CONTROL_PASS` اعلام کرد. ممیزی ۲۰۶قاعدهای همان ورودی را با دقیقاً ۲۰۴ Finding به HOLD برد.
| گروه | قاعده | نمونه |
|---|---|---|
| Identity | 18 | Incident/Asset/Build/Deploy/Policy |
| Incident | 18 | Fact/Impact/Evidence/Unknown/Authority |
| Attack Path | 17 | Entry/Boundary/Steps/Controls/Confidence |
| Claim | 16 | Property/Subject/Threat/Evidence/Limit |
| Control | 23 | Purpose/Version/Scope/Owner/Failure/Fallback |
| Escape | 18 | Gap/Counterfactual/Alternative/Disposition |
| Remediation | 18 | Build/Reproduction/Negative/Regression/Evidence |
| Recurrence | 17 | Variants/Assets/Control/Test/Telemetry/Policy |
| Governance | 19 | IR boundary/Authorities/Safety/Correction |
| Forbidden + Relations | 42 | مطلقگویی و اتصال قراردادها |
نسخهی اصلاحشده `INC-SYN-۳۲` را فقط پس از Containment/Recovery و مجوز تحلیل ثبت کرد، `PATH-RESET-SYN-۳۲` را با Stepهای تاییدشده/تاییدنشده و Confidence ساخت، Claim و `CTRL-RATE-SYN-۳۲` را به Gap طراحی/Detection وصل کرد، Counterfactual را با Confidence متوسط محدود کرد و Remediation build را با Negative/Variant/Detection evidence بست. خروجی `READY_FOR_SECURITY_ESCAPE_REVIEW` با صفر Finding بود؛ نه اثبات Facts، Cause، جلوگیری قطعی، نبود Path دیگر، امنیت محصول، Incident closure یا Risk acceptance.
Automation و AI در Escape Review
Automation میتواند IDها را پیوند، Control coverage را Diff، Exception expiry را هشدار و Variant suite را اجرا کند. AI میتواند Fact/Interpretation را پیشنهادِ تفکیک، Gap candidate را خوشهبندی یا Action draft تولید کند؛ نباید Missing facts بسازد، Actor intent یا Blame نسبت دهد، Secret/Incident data بیمجوز دریافت کند، Cause قطعی، Disclosure، Risk acceptance یا Closure صادر کند. ورودی/مدل/Prompt/خروجی و Human review را ثبت کنید.
معیارهای سالم و Countermetricها
| Metric | کاربرد | Countermetric |
|---|---|---|
| Time to comparable evidence | سرعت تحلیل معتبر | Evidence contamination/access breach |
| Gap-to-control mapping | اتصال Action به مکانیزم | Unknown/alternative explanations |
| Remediation evidence age | Freshness | Change-trigger misses |
| Variant coverage | Path family بررسیشده | Unsafe/low-value tests |
| Detection exercise pass | Signal/route/action | False alert/operational load |
| Exception expiry/reopen | بدهی زماندار | Risk silently transferred |
| Correction reach | تصمیمهای اصلاحشده | Disclosure/access errors |
۳۴ Anti-pattern در تحلیل Security Escape
- تستر را اولین خط دفاع نامیدن.
- QA را نگهبان امنیت دانستن.
- گفتن QA حتماً رخنه را پیشگیری میکرد.
- یک Scanner را مانع قطعی رخنه دانستن.
- SAST را بینای Runtime دانستن.
- DAST را پوششدهنده همه Business logic.
- SCA presence را Exploitability دانستن.
- CVE match را Cause رخداد دانستن.
- Pentest را Preventive guarantee دانستن.
- OWASP Top ۱۰ را Test plan کامل دانستن.
- حمله به همه Endpointها بدون Scope.
- Think like attacker بدون Authorization.
- Everyone owns security بدون Owner.
- Zero critical را اثبات Security دانستن.
- Pipeline سبز را Control effectiveness دانستن.
- Patch Finding را بستن Path دانستن.
- Reproduction را اثبات Root cause دانستن.
- Cannot reproduce را Not vulnerable دانستن.
- No alert را No compromise دانستن.
- نبود Log را نبود Event دانستن.
- کپی Incident Evidence به Test.
- تحلیل عمیق پیش از Containment.
- واگذاری Customer communication به QA.
- Blameless را بدون Accountability دانستن.
- Human error را Root cause نهایی دانستن.
- Training بیشتر را Prevention دانستن.
- Scanner بیشتر را Prevention دانستن.
- Shift-left را تضمین Prevention دانستن.
- Security testing را تضمین No breach دانستن.
- Regression pass را Remediation complete دانستن.
- Counterfactual قطعی ساختن.
- AI برای ساخت Fact گمشده.
- AI برای Blame.
- AI برای Risk acceptance.
چکلیست ۳۲نقطهای Review Owner
| حوزه | کنترل |
|---|---|
| Authority | Incident command/analysis/security/risk/disclosure جدا هستند؟ |
| Facts | Version/Facts-as-of/confirmed-potential impact/unknown/limit روشن است؟ |
| Evidence | Hold/access/minimization/timeline/clock/correction دارد؟ |
| Path | Entry/boundary/asset/steps/control encounter/unverified/alternative/confidence ثبت است؟ |
| Claim | Property/Subject/Threat/Scope/Basis/Evidence/Validity روشن است؟ |
| Control | Purpose/type/version/config/scope/owners/trigger/coverage/failure/fallback دارد؟ |
| Gap | Class/stage/evidence/counterfactual/confidence/alternative/owner مشخص است؟ |
| Remediation | Design/Build/Deploy/Rollback/Reproduction/Negative/Regression/Evidence دارد؟ |
| Safety | آزمایش آفلاین/مصنوعی/RoE/stop/cleanup/access محدود است؟ |
| Variants | Adjacent path/assets/clock/parallel/distributed/detection پوشش دارند؟ |
| Decision | Result/Recommendation/Risk/Closure/Release جدا هستند؟ |
| Recurrence | Threat/Claim/Control/Test/Telemetry/Policy/Supplier changes دارد؟ |
| Freshness | Expiry/reopen/change triggers/Correction/Affected decisions روشن است؟ |
Pilot سیروزه برای یک Escape ساختگی
| بازه | کار | Guardrail/خروجی |
|---|---|---|
| روز ۱–۵ | مرز Authority و Fact packet خیالی | بدون Incident/PII/Secret واقعی |
| روز ۶–۱۰ | Path/Claim/Control map | Fact/Hypothesis/Confidence |
| روز ۱۱–۱۵ | Gap و Counterfactual محدود | No blame/no certainty |
| روز ۱۶–۲۰ | Remediation/Negative/Variant suite | Offline/RoE/stop |
| روز ۲۱–۲۵ | Detection/recovery drill و Correction | Safe alert sink |
| روز ۲۶–۳۰ | Metrics و Scale/Adapt/Stop | Countermetric/claim limits |
جمعبندی
بعد از رخنه نپرسید «تسترها چرا جلوی آن را نگرفتند؟» بپرسید Path از کدام Claim، Control، Coverage، Telemetry، Response یا Governance gap عبور کرد و Evidence چیست. هنگام رخداد فعال از Incident command پیروی کنید؛ پس از مجوز تحلیل، Facts و Path را نسخهدار، Counterfactual را محدود و Remediation را با Negative/Variant/Detection/Recovery Evidence ببندید. Testing یادگیری را تقویت میکند، اما امنیت و مسئولیت سازمانی را تضمین یا تصاحب نمیکند.
سؤالات متداول
آیا QA مسئول جلوگیری از رخنه امنیتی است؟
خیر. QA میتواند Security Claimها و Controlها را ارزیابی و Gapها را گزارش کند، اما طراحی، توسعه، پیکربندی، عملیات، Incident response، Risk و رهبری Ownerهای جدا دارند. «مسئولیت همگانی» باید به مسئولیتهای مشخص تبدیل شود.
اولین اقدام تستر هنگام رخداد فعال چیست؟
از Playbook و Incident command سازمان پیروی کند، Evidence را دستکاری نکند و فقط وظیفهی مجاز/ایمن را انجام دهد. بازتولید حمله، ارتباط با مشتری یا تغییر Production بدون Authority اقدام پیشفرض نیست.
آیا SAST، DAST یا SCA میتوانست رخنه را پیشگیری کند؟
ممکن است Signal یا Detection زودتر بسازد، اما به Scope، Subject، Rule، Auth، Environment، Business path، Triage و Action وابسته است. Counterfactual را با Evidence و Confidence بنویسید؛ Prevention قطعی ادعا نکنید.
Retest موفق یعنی Remediation کامل است؟
فقط اگر Claim محدود همان Retest را بگوییم. Path اصلی ممکن است بسته باشد، اما Variant، Asset مشابه، Detection، Recovery، Side effect یا Gap حکمرانی باقی بماند. Result، Residual risk و Authority را جدا نگه دارید.
Blameless Security Review چگونه پاسخگویی را حفظ میکند؟
از سرزنش فرد و داستان ساده دور میشود، اما Control owner، Decision authority، rationale، Action، due date، Evidence و expiry را حذف نمیکند. رفتار انسانی در Context سیستم بررسی میشود و تعهدها همچنان قابل پیگیریاند.

