Skip to main content

DAST and Fuzzing Policy

1. Objective​

This policy defines the minimum requirements for carrying out dynamic security testing (DAST) and fuzzing on applications classified as L2 or L3 in the SbD-ToE model.

The objective is to ensure that behavioural and input-handling vulnerabilities are detected before promotion to production, complementing static analysis mechanisms (SAST) with runtime validation.

DAST and fuzzing are complementary techniques:

  • DAST - simulates the behaviour of an external user or attacker against the running application, identifying flaws that only manifest at runtime;
  • Fuzzing - injects malformed, unexpected or random inputs into critical endpoints, revealing parsing flaws, crashes and anomalous behaviour not covered by planned tests.

2. Scope and proportionality​

TechniqueL1L2L3
DASTManual/exploratory (optional)Automated, authenticatedAutomated + extended coverage
FuzzingOptionalPriority endpointsCritical endpoints mandatory
IASTNot applicableRecommendedMandatory

This policy is mandatory for L2 and L3. For L1, the practices described here are recommended but not mandatory.


3. DAST - Dynamic Security Testing​

3.1 When to run​

EventMandatory status
Promotion of a build to stagingMandatory
Before any release to productionMandatory
After a change to the architecture or exposure surfaceMandatory
Periodic execution against the production versionRecommended (quarterly)

3.2 Environment prior requirements​

  • The execution environment must be isolated - DAST must never be run in production;
  • Test environment data must be fictitious or masked - never real user data;
  • The environment must be equivalent to production in terms of versions, configurations and dependencies;
  • The environment must not be shared with other projects while the scan is running.

3.3 Mandatory configuration​

Authentication:

  • Login flow configured in the tool with a valid authenticated session
  • Segregated test credentials - a dedicated account, never a real user account
  • Credentials stored as secrets in the pipeline - never in plain text or in the repository
  • Session with a short-lived token (TTL appropriate to the duration of the scan)

Scope:

  • List of included URLs/endpoints defined and versioned
  • Explicit and justified list of exclusions (e.g. logout endpoints, password reset, sending of external notifications, irreversible destructive operations)
  • Scope configuration versioned in the repository alongside the pipeline definition

Pipeline integration:

  • DAST job executed after deploy to staging and before promotion to production
  • Report correlated with the commit SHA and release tag
  • Report archived as a pipeline artefact with a minimum retention of 30 days (L1), 90 days (L2) or 1 year (L3)
  • DAST result traceable in the release record

3.4 Blocking and response criteria​

SeverityAction
CriticalBlocks automatically; immediate escalation to AppSec Engineer
HighBlocks automatically; requires a validated fix or a formal exception
MediumDoes not block; mandatory recording in the centralised platform; SLA in line with Policy 19 §4.3 (180 / 90 / 45 days at L1 / L2 / L3)
Low / InfoDoes not block; recording; quarterly review
Separation between automated signal and human decision

The pipeline reports the result (automated signal). The decision to override or grant an exception is always human and documented - never implicit or by timeout. Every override requires explicit approval by an AppSec Engineer, with the rationale recorded and a maximum validity period.

3.5 Artefacts produced​

ArtefactMinimum retention
DAST report (HTML/JSON/SARIF)30 days (L1), 90 days (L2), 1 year (L3)
Gate evidence (pass/fail) in the pipeline log30 days (L1), 90 days (L2), 1 year (L3)
Open findings in the centralised platformUntil closure or formal acceptance
Exception register1 year (L1), 2 years (L2), 3 years (L3) after closure (Policy 06 §10)

4. Fuzzing - Testing with Unexpected Inputs​

4.1 When to run​

EventMandatory status (L2)
Per major releaseMandatory
Regular periodicityMandatory (quarterly)
After adding a new endpoint with input parsingMandatory
After a change to validation or deserialisation logicRecommended

4.2 Target selection​

Mandatory targets for L2:

  • Endpoints that receive unstructured external input (forms, free-form JSON, query params)
  • APIs that parse data formats (JSON, XML, multipart, CSV, binary)
  • File upload endpoints
  • Search endpoints with dynamic parameters
  • Endpoints with deserialisation or expression evaluation logic

Default exclusions (inclusion requires explicit justification):

  • Logout or session invalidation endpoints
  • Endpoints that send external notifications (email, SMS, webhooks)
  • Endpoints with aggressive rate limiting and no dedicated test instance

4.3 Mandatory configuration​

Environment:

  • Application instance isolated for fuzzing - with no connection to real external systems
  • Active monitoring during execution: CPU, memory, crashes, error logs
  • Mechanism for detecting crashes and anomalous responses configured

Targets and profiles:

  • List of targets defined, versioned and approved by AppSec
  • Fuzzing profiles (dictionaries, corpora, strategies) versioned in the repository
  • Input corpora maintained and updated between executions

Results:

  • Anomalies recorded with a minimal reproducible PoC (exact input, endpoint, application version)
  • Report with reproducible cases archived

4.4 Severity criteria​

ResultSeverityAction
Application crash / Out-of-MemoryCriticalBlocks the release; escalates to AppSec
Exposure of internal data or stack traceHighBlocks the release
Controlled anomalous behaviourMediumRecording and triage
Timeout or performance degradationLowRecording; later analysis

4.5 Artefacts produced​

ArtefactMinimum retention
Fuzzing report30 days (L1), 90 days (L2), 1 year (L3)
Input corpora (versioned)Permanent
Reproducible cases (PoC) in the findings platformUntil closure
Exception register1 year (L1), 2 years (L2), 3 years (L3) after closure (Policy 06 §10)

5. Centralised findings management​

All DAST and fuzzing findings are consolidated in the centralised security management platform, together with the SAST, IAST and SCA results.

Mandatory metadata per finding:

FieldDescription
Source toolDAST / Fuzzing / SAST / IAST / SCA
SeverityCritical / High / Medium / Low / Info
CWE and/or CVEWhere applicable
Commit SHA and release tagTraceability to the artefact
StatusOpen / Being fixed / Accepted / Suppressed
Remediation ownerResponsible for the fix
Resolution SLAAs per the table in section 5.1

5.1 Resolution SLAs​

In line with the single ladder of Policy 19 §4.3 (triage: Critical 24 hours, High 48 hours, at any level):

SeverityL1L2L3
Critical30 days7 days3 days
High90 days30 days15 days
Medium180 days90 days45 days
Low365 days180 days90 days

6. Decision framework for findings (Checklist C1)​

When a finding blocks the pipeline and the team weighs an override or exception, the decision must be documented against the following criteria:

  • Exploitability - is the finding exploitable in the current context? In what way?
  • Existing mitigations - are there active compensating controls?
  • Business impact - what is the real impact if the finding is exploited?
  • Remediation - when and how will it be fixed?
  • Decision - FIX / ACCEPT WITH DEADLINE / SUPPRESS (with justification)
  • Approval - AppSec Engineer (mandatory for High and Critical)
warning

The decision to suppress a Critical finding requires additional approval from the security lead (CISO or equivalent) and a maximum deadline of 7 days.


7. Exceptions to this policy​

Every exception to this policy requires:

  1. Documented technical justification
  2. Approval by an AppSec Engineer
  3. A defined and active compensating mitigation
  4. Maximum validity period in line with Policy 05 §7, by level and severity (L1 90 days; L2 60 / 30 days; L3 30 / 14 days; Critical 7 days with a plan, not acceptable at L3), renewable with new explicit approval
  5. Formal recording in the project's exception repository

Exceptions to findings of Critical severity have a maximum period of 7 days and require additional approval from the security lead.


8. Responsibilities​

RoleResponsibility
AppSec EngineerScope definition, approval of exceptions, triage of High and Critical findings
QA / TestingExecution of DAST and fuzzing, definition and maintenance of targets and corpora
DevOps / SREPipeline integration, maintenance of the isolated staging environment
DeveloperFixing findings, taking part in triage and context analysis
Product ManagementRelease approval, formal acceptance of residual risk

9. Review and audit​

This policy must be reviewed annually or after any of the following events:

  • Significant change to the application's architecture or exposure surface
  • Security incident related to inputs or runtime behaviour
  • Change to the application's classified risk level
  • Relevant regulatory or normative change

Evidence of the execution of this policy (reports, gate logs, exception records) must be auditable by GRC functions and by external auditors.


10. Normative and technical references​

ReferenceRelevance
SbD-ToE Ch. 10 - Security TestingDAST requirements, fuzzing, findings management
SbD-ToE Ch. 07 - Secure CI/CDIntegration of security gates into the pipeline
SbD-ToE Ch. 02 - Security RequirementsTraceability requirement → test → evidence
OWASP Testing Guide (OTG)Dynamic testing methodology
OWASP Web Security Testing Guide (WSTG)Coverage of vulnerability categories
NIST SP 800-115Technical Guide to Information Security Testing
CWE Top 25Categorisation of weaknesses
SSDF PW.8Security testing practices in the SDLC