Overview
A finding in Pensar Apex represents a confirmed security vulnerability discovered during penetration testing. Findings include detailed evidence, proof-of-concept exploits, impact analysis, and remediation guidance. Pensar Apex uses a sophisticated deduplication system to prevent reporting the same vulnerability multiple times, even when multiple agents test the same target concurrently.Finding Structure
Each finding is a JSON document with this structure:Example Finding
Severity Levels
Pensar Apex uses four severity levels based on CVSS principles:- Critical
- High
- Medium
- Low
Critical (9.0-10.0)Vulnerabilities that allow complete system compromise:
- Unauthenticated remote code execution
- Full database access without authentication
- Authentication bypass on admin interfaces
- Mass data exfiltration
Severity is automatically normalized by the FindingsRegistry using a preprocessing step that maps various severity formats to the canonical CRITICAL/HIGH/MEDIUM/LOW scale.
Proof of Concept (POC)
Every finding must include a working proof-of-concept script that reliably demonstrates the vulnerability. POCs are stored in the session’spocs/ directory.
POC Requirements
1
Reliability
The POC must work consistently and reliably reproduce the vulnerability.
2
Clarity
The POC should be well-commented and easy to understand.
3
Safety
The POC should minimize damage (e.g., read-only operations when possible).
4
Documentation
The POC should include usage instructions and expected output.
Example POC Script
Deduplication System
TheFindingsRegistry prevents duplicate vulnerability reports using a three-tier deduplication system:
Tier 1: Exact Match
Matches findings with the same normalized endpoint and vulnerability class:- Finding 1: “SQL Injection in https://example.com/api/users?page=1”
- Finding 2: “SQL Injection in https://example.com/api/users?page=2”
- Result: Deduplicated (same endpoint + vulnerability class)
Tier 2: Application-Wide Match
Matches findings with the same title stem (endpoint-stripped title):- Finding 1: “Missing CSP header on https://example.com/home”
- Finding 2: “Missing CSP header on https://example.com/dashboard”
- Result: Deduplicated (same root vulnerability across endpoints)
Tier 3: Semantic Match (LLM)
When Tier 1 and Tier 2 don’t match, the registry uses an LLM to detect semantically similar findings:- Finding 1: “SQL Injection vulnerability in user search”
- Finding 2: “Database query injection in user lookup endpoint”
- Result: Deduplicated by LLM (different wording, same vulnerability)
Semantic deduplication is conservative: when in doubt, it allows the finding through. It’s better to have a borderline duplicate than to suppress a genuinely new vulnerability.
Findings Registry
TheFindingsRegistry is the central component for managing findings:
Creating a Registry
Registering Findings
Thread Safety
The FindingsRegistry is thread-safe and supports concurrent agent testing:register() calls while keeping the LLM semantic check outside the critical section for performance.
Vulnerability Classification
The registry automatically classifies vulnerabilities by type:Documenting Findings
Agents document findings using thedocument_vulnerability tool:
- Validates the finding structure
- Checks the FindingsRegistry for duplicates
- Writes the finding to disk (if not duplicate)
- Returns a confirmation or duplicate notification
Reports and Export
Findings can be exported in multiple formats:JSON Export
Markdown Report
Generate human-readable markdown reports:Best Practices
Always Include POCs
Always Include POCs
Every finding must have a working proof-of-concept. The POC proves the vulnerability exists and helps developers reproduce and fix it.
Write Clear Remediation
Write Clear Remediation
Include specific, actionable remediation steps. Generic advice like “fix the bug” is not helpful.
Provide Context in Evidence
Provide Context in Evidence
Include the payload, response, and explanation in the evidence field. Screenshots and request/response pairs are valuable.
Classify Severity Accurately
Classify Severity Accurately
Use CVSS principles to determine severity. Consider exploitability, impact, and scope.
Handle Registry Failures
Handle Registry Failures
If
register() succeeds but persistence fails, call unregister() to remove the phantom finding from the registry.Related Resources
Agent Architecture
Learn about the agents that discover and document findings
Penetration Testing
Complete guide to running security tests
Session Management
Understand how sessions store findings and POCs
API Reference
Complete API documentation for FindingsRegistry

