name: lidr-dast-interpretation id: dast-interpretation version: "1.2.1" last_updated: "2026-06-11" updated_by: "TL: phase-prose normalization" status: active phase: 4 stage: security owner_role: "TL" automation: false domain_agnostic: true language_default: en description: "Interpret DAST (Dynamic Application Security Testing) scan reports from OWASP ZAP, Burp Suite, or Nuclei against running applications. Unlike SAST, DAST tests the app at runtime (black-box) finding configuration issues, missing headers, CORS problems, and runtime vulnerabilities. Use for any dynamic security testing or runtime vulnerability assessment. Essential for production security validation and compliance reporting. Always use before releases and after infrastructure changes. Use pre-release before Gate 6 against staging, post-deployment for production smoke, after infrastructure changes, or when new public endpoints are added. Triggers on 'interpret DAST results', 'ZAP scan report', 'Burp scan', 'security headers check', 'DAST findings', 'runtime security scan'."
DAST Scan Interpreter
Phase: 4 — Implementation · security (ex-Fase 7) | Gate: contributes to Gate 6 | Language: English
Output Location
The DAST interpretation report is published to the per-client path Gate 6 reads (gate-evidence.yaml G6 lidr-dast-interpretation glob {client_root}/dast-*.md, required: false):
docs/projects/{CLIENT_CODE}/dast-report.md (or dast-{date}.md per scan — the filename MUST start with dast-)
{CLIENT_CODE} is the active client (see rules/lidr-sdlc/project.md).
Example: docs/projects/docline/dast-2026-06-10.md
Gate 6 contract: a
dast-*.mdfile at the per-client root is optional evidence for G6. Use thedast-filename prefix so the gate glob andlidr-gate-evaluationresolve it.
Workflow
- Read DAST report (ZAP HTML/JSON or Burp XML)
- Read target URLs scanned to confirm coverage
- Read server configuration (Nginx/Apache, middleware, headers)
- Classify findings: true positive vs config-mitigated (WAF, reverse proxy)
- Prioritize by exploitability and business impact
- Generate fix suggestions (config-level, not code-level)
- Compare with baseline if available
Input
| Input | Required | Source |
|---|---|---|
| DAST report (ZAP/Burp) | ✅ | Scanner output |
| Target URLs scanned | ✅ | Scan config |
| Server configuration | ✅ | Nginx/Apache config, headers |
| OpenAPI spec | Desirable | For endpoint coverage verification |
| Previous baseline | Desirable | Prior DAST report |
| WAF rules | If applicable | CloudFlare / AWS WAF |
Output Template
# DAST Interpretation: [PROJECT] — [DATE]
## Scan Overview
| Field | Value |
| ----------------- | --------------------- |
| Scanner | [ZAP / Burp / Nuclei] |
| Target | [URLs scanned] |
| Scan Type | [Full / API / Quick] |
| Duration | [X min] |
| Endpoint Coverage | [X/Y endpoints — {%}] |
## Findings Summary
| Severity | Count | New | Fixed since baseline |
| -------- | ----- | --- | -------------------- |
## Findings Detail
### 🔴 High ({N})
| # | Alert | URL | Evidence | OWASP | Fix | Config Change |
| --- | ----- | --- | -------- | ----- | --- | ------------- |
### 🟡 Medium ({N})
[same table]
### 🟢 Low / Informational ({N})
[condensed]
## Configuration Fixes
| Finding | Current Config | Recommended Config | File |
| ------- | -------------- | ------------------ | ---- |
## Endpoint Coverage Analysis
| Endpoint | Scanned? | Findings | Notes |
| -------- | -------- | -------- | ----- |
## False Positives / Mitigated
| Finding | Why False/Mitigated | Evidence |
| ------- | ------------------- | -------- |
Key Rules
- DAST ≠ SAST: DAST finds runtime/config issues. Don't expect code-level findings.
- Config fixes are primary: Most DAST findings are fixed in Nginx/Apache config, not code.
- WAF mitigation is valid: If WAF blocks an attack, note it but verify the WAF rule is permanent.
- Coverage matters: If only 50% of endpoints were scanned, the report is incomplete — flag it.
- Headers checklist: Always verify: CSP, X-Frame-Options, X-Content-Type-Options, HSTS, Referrer-Policy, Permissions-Policy.
- Compare with baseline: Show trend — are we improving or regressing?
Example Analysis: Web Application Platform
Sample DAST Report Findings
🔴 HIGH: Missing X-Frame-Options Header
URL: https://api.example-platform.com/auth/verify
Evidence: Response lacks X-Frame-Options header
Risk: Clickjacking attacks on authentication pages
Impact: Attacker could overlay invisible frames during user login
🔴 HIGH: Insecure Content-Type Sniffing
URL: https://api.example-platform.com/users/upload
Evidence: X-Content-Type-Options header missing
Risk: Browser MIME sniffing could execute uploaded content as script
Impact: Potential XSS via malicious file upload during user onboarding
🟡 MEDIUM: HTTP Security Headers Missing
URL: https://platform.example-platform.com/dashboard
Evidence: Missing Referrer-Policy, Permissions-Policy
Risk: Information leakage, excessive browser permissions
Impact: User privacy exposure, unauthorized browser permission grants
🟢 LOW: Verbose Error Messages
URL: https://api.example-platform.com/users/register
Evidence: Stack trace in 500 response
Risk: Information disclosure about backend architecture
Impact: Assists reconnaissance for targeted attacks
Step-by-Step Interpretation Process
1. Context Analysis for Web Application Systems
Application Type: Web Application Platform
Critical Assets:
- Sensitive user data (encrypted at rest, access-controlled)
- User account credentials (PII, authentication data)
- Authentication tokens (session hijacking risk)
- API endpoints (public-facing attack surface)
Compliance Requirements:
- GDPR (data protection and privacy)
- ISO 27001 (information security management)
- OWASP Top 10 (web application security standards)
- SOC 2 (security, availability, confidentiality)
2. True Positive vs False Positive Classification
TRUE POSITIVE Example:
Finding: Missing X-Frame-Options on /auth/register
Analysis: ✅ VALID
Reasoning: User registration UI susceptible to clickjacking
Business Impact: HIGH - Attacker could trick users into submitting data via overlaid frames
Action Required: Add X-Frame-Options: DENY header
FALSE POSITIVE Example:
Finding: SQL Injection on /api/users/{id}
Analysis: ❌ FALSE POSITIVE
Reasoning:
- Endpoint uses parameterized queries (verified in code review)
- WAF rule blocks SQL injection patterns
- Input validation sanitizes user ID parameter
Evidence: WAF logs show 403 responses for malicious payloads
Action: Document as mitigated, verify WAF rule permanence
False Positive Identification
CDN/WAF Protection Scenarios
| DAST Finding | False Positive Indicator | Verification Method |
|---|---|---|
| SQL Injection | WAF returns 403 Forbidden | Check WAF logs for blocked requests |
| XSS Reflection | Content filtered/escaped | Inspect response for sanitization |
| Directory Traversal | CDN blocks ../ patterns | Review CDN security rules |
| Command Injection | Input validation errors | Test with benign payloads |
| File Upload Vulns | File type restrictions enforced | Upload legitimate files |
Application-Specific Misconfigurations vs Real Vulnerabilities
Misconfiguration (Not Vulnerability):
Finding: Hashed data exposure in API response
Reality: Values are already irreversibly hashed (bcrypt/Argon2 standard)
Risk Assessment: LOW - Hashed values cannot be reverse-engineered to sensitive data
Action: Document hashing algorithm used and confirm it meets current standards
Real Vulnerability:
Finding: Authentication threshold configurable via API parameter
Reality: Parameter manipulation could bypass authentication checks
Risk Assessment: CRITICAL - Authentication bypass potential
Action: Remove configurable threshold from API, enforce secure value server-side
Context-Aware Analysis Techniques
Endpoint Classification
- Public (marketing, docs): Lower security requirements
- Authentication (login, register): High security requirements
- Sensitive data processing: Critical security requirements
Request Pattern Analysis
- Normal user flow vs scanner artificial requests
- Rate limiting behavior during scan
- Authentication state maintenance
Response Analysis
- Error message consistency across endpoints
- Response timing analysis for information leakage
- Content-type validation and enforcement
Priority Assessment Matrix
CVSS + Business Impact for systems
| CVSS Score | Traditional Risk | Application Context | Business Impact | Final Priority |
|---|---|---|---|---|
| 9.0+ Critical | Critical | Account takeover, mass data breach, authentication bypass | Regulatory violations, reputation damage | P0 - Immediate |
| 7.0-8.9 High | High | Single user impersonation, sensitive data exposure | Service disruption, compliance risk | P1 - 24 hours |
| 4.0-6.9 Medium | Medium | Information disclosure, session hijacking | User privacy violation | P2 - 72 hours |
| 0.1-3.9 Low | Low | Verbose errors, missing headers | Reconnaissance assistance | P3 - Next sprint |
Risk Prioritization for Web Applications
Critical Priority (P0) - Same Day Fix
- Sensitive data exposure or manipulation via API
- Authentication bypass in user verification flow
- PII exposure in user onboarding processes
- Remote code execution on application servers
High Priority (P1) - 24-48 Hour Fix
- Session fixation in authentication flows
- CSRF on account creation/modification
- Missing rate limiting on authentication attempts
- Insecure direct object references to user profiles
Medium Priority (P2) - Within Sprint
- Missing security headers on user-facing pages
- Information disclosure in error messages
- Insufficient logging of security events
- Weak SSL/TLS configuration
Low Priority (P3) - Next Sprint
- Verbose error messages without sensitive data
- Missing CORS headers on non-critical endpoints
- Information leakage in HTTP responses
- Outdated software versions without known exploits
Remediation Timeline Recommendations
| Risk Level | Business Hours | Calendar Days | Rationale |
|------------|---------------|---------------|-----------|
| P0 Critical | 4-8 hours | Same day | Regulatory compliance, user safety |
| P1 High | 24-48 hours | 1-2 business days | Prevent account compromise |
| P2 Medium | 72-96 hours | 3-5 business days | Reduce attack surface |
| P3 Low | 1-2 sprints | 2-4 weeks | Security hygiene |
Security Remediation Templates
Configuration Fixes for Common Findings
Missing Security Headers
# Nginx configuration for application API endpoints
location /api/ {
# Prevent clickjacking attacks on authentication UI
add_header X-Frame-Options "DENY" always;
# Prevent MIME sniffing on uploaded files
add_header X-Content-Type-Options "nosniff" always;
# Enable XSS protection for legacy browsers
add_header X-XSS-Protection "1; mode=block" always;
# Strict HTTPS enforcement for sensitive data
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Minimize referrer information leakage
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Content Security Policy for application pages
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self' wss: https:; media-src 'self' blob:;" always;
# Restrict browser permissions for security
add_header Permissions-Policy "geolocation=(), payment=(), usb=()" always;
}
Secure Cookie Configuration
# Session cookies for authenticated operations
proxy_cookie_path / "/; HTTPOnly; Secure; SameSite=Strict";
proxy_cookie_flags ~ secure httponly samesite=strict;
# Additional cookie security for session tokens
location /auth/ {
proxy_set_header Cookie $http_cookie;
proxy_cookie_flags "SessionToken" secure httponly samesite=strict;
}
Security Header Recommendations
User-Facing Application Pages
Content-Security-Policy: default-src 'self';
script-src 'self' 'unsafe-inline';
style-src 'self' 'unsafe-inline';
img-src 'self' data: blob:;
media-src 'self' blob:;
connect-src 'self' wss: https:
Permissions-Policy: geolocation=(),
payment=(),
usb=(),
magnetometer=(),
gyroscope=()
File Upload Endpoints
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'none';
form-action 'self'
X-Frame-Options: DENY
Infrastructure Hardening Suggestions
API Gateway Configuration
# Rate limiting for sensitive endpoints
rate_limit:
- path: "/api/auth/verify"
limit: "10 requests per minute per IP"
burst: 3
- path: "/api/users/process"
limit: "5 requests per minute per user"
burst: 2
# Request size limits for file uploads
body_size_limit:
- path: "/api/users/upload"
max_size: "10MB"
- path: "/api/auth/register"
max_size: "2MB"
# IP allowlisting for admin endpoints
ip_restrictions:
- path: "/admin/*"
allow: ["10.0.0.0/8", "192.168.0.0/16"]
deny: ["0.0.0.0/0"]
Database Security Configuration
-- Create dedicated read-only user for data queries
CREATE USER 'app_reader'@'%' IDENTIFIED BY 'strong_random_password';
GRANT SELECT ON sensitive_data TO 'app_reader'@'%';
-- Enable audit logging for sensitive data access
SET GLOBAL general_log = 'ON';
SET GLOBAL log_output = 'TABLE';
-- Configure secure SSL for database connections
REQUIRE SSL;
Monitoring and Alerting
# Security event monitoring
alerts:
- name: "Sensitive Data Access Anomaly"
condition: "SELECT queries on sensitive_data table exceeding baseline"
threshold: "> 1000 queries/hour"
action: "alert security team"
- name: "Failed Authentication Attempts"
condition: "HTTP 401 responses from /api/auth/*"
threshold: "> 50 failures/minute from single IP"
action: "temporary IP ban + alert"
- name: "File Upload Anomalies"
condition: "Large or suspicious file uploads to upload endpoints"
threshold: "> 10MB or disallowed file types"
action: "block upload + log incident"
Backup and Recovery Security
#!/bin/bash
# Secure sensitive data backup script
# Encrypt backup with AES-256
gpg --symmetric --cipher-algo AES256 --compress-algo 2 \
--output app_backup_$(date +%Y%m%d).gpg \
sensitive_data.sql
# Verify backup integrity
sha256sum app_backup_$(date +%Y%m%d).gpg > backup_checksum.txt
# Secure transfer to offsite storage
scp -i ~/.ssh/backup_key app_backup_*.gpg backup@secure-server:encrypted/
# Remove local backup file
shred -vfz -n 3 sensitive_data.sql
Quality Assurance
Validation Script
This skill includes automated validation via scripts/validate-examples.ts:
# Validate skill examples and structure
npx tsx scripts/validate-examples.ts
Validation includes:
- Example completeness and correctness
- DAST security testing and vulnerability assessment compliance patterns
- Progressive disclosure adherence
- Resource organization standards
When to use:
- Before skill release/packaging
- In CI/CD pipeline (quality gates)
- After major example updates
- During skill maintenance cycles
Integration with ecosystem:
- Used by
bmad-eval-runnerfor ecosystem validation - Supports quality gates in SDLC workflow
- Provides consistent validation across all skills
Changelog
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.2.1 | 2026-06-11 | TL: phase-prose normalization | Normalized body Phase: prose to the unified 0-4 numbering (Phase: <0-4> — <Unified> · <stage> (ex-Fase N)); now guarded by ecosystem-coherence.test.ts |