flowpatrol_surface
Surface scan — secrets, headers, paths, RLS, and screenshots.
What it does
flowpatrol_surface runs a comprehensive set of deterministic HTTP-based checks against your target URL and returns results in 2-5 minutes. No LLM, no authentication required, no browser crawl — just a fast, attacker-style black-box assessment focused on what's observable from outside the app.
Cost: 1 credit | Time: 2-5 min
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
target_url | string | Yes | The URL of your deployed application |
Example
Dashboard: Go to Scans → New Scan, enter your URL, and select Surface.
MCP: Ask your AI assistant:
Run a Flowpatrol surface scan on https://myapp.vercel.appChecks performed
The surface scan covers ten domains. Each check shows up as its own row on the scan-detail page and animates live as it runs.
Authentication & login
- Login bypass — common auth-ordering flaws
- Default passwords — tries generic admin/test credentials to gate access to probes
- Signup loopholes — open registration, mass-assignment on signup
- 2FA / OTP bypass — null OTP, brute-force OTP, rate-limit bypass via forwarded-for
- JWT security —
alg:none, weak HMAC, missingexp - Audit log bypass — WAF / auth-logging header injection
- Login gate skipped — Next.js CVE-2025-29927 middleware bypass
Access control
- Single-user IDOR — numeric / UUID enumeration on discovered endpoints
- Exposed admin panels — unauthenticated
/admin,/internal,/settingsvariants - Debug-header backdoors —
x-forwarded-user,x-debug,x-original-urlstyle bypasses - Path traversal —
.env,.git, backup-file, config exposure - Webhook signature bypass — endpoints that accept unsigned requests
BaaS & cloud
- Supabase RLS — detects the Supabase URL + anon key, tests whether common tables are readable, tests storage rules and edge-function exposure
- Firebase security rules — RTDB read/write, Firestore collection access, Storage bucket rules
- Cloud storage buckets — S3 / GCS / Azure / DigitalOcean buckets derived from domain and page content
- Service key exposure — admin-level BaaS keys leaked client-side
AI surface
- AI prompt injection — deterministic probes for obvious prompt-injection patterns
- Exposed LLM endpoints — Ollama, Langflow, Superset and other self-hosted stacks
- Unauthenticated MCP endpoints — MCP servers that accept tool calls without auth
- AI config disclosure — leaked system prompts, tool lists, model metadata
- Missing AI rate limits — endpoints that allow cost-abuse at no limit
- Pre-auth RCE in AI stacks — known CVEs in AI-builder infrastructure
Injection attacks
- SQL injection — deterministic sweep of query parameters and JSON bodies
- Template injection (SSTI) — Jinja / Handlebars / EJS payload probes
- Command injection — shell-metachar payloads on reflected inputs
Cross-site scripting
- Reflected XSS — deterministic payload set against query parameters
Data exposure
- API key leaks — page source and JS bundles
- Credential leaks — passwords, tokens, bearer keys in responses
- Exposed .env / .git / backups — SPA-aware so SPA catch-all 200s don't false-positive
- Source map exposure —
.js.mapreachability and content - Stack-trace leakage — error-page classifier across common frameworks
- Secrets in public repos — GitHub code search for secrets referencing the target domain
- Data over-exposure — APIs returning admin-only fields to anonymous users
Server & infrastructure
- Known CVEs — framework-specific plus Langflow, Ollama, Superset pre-auth RCE
- Outdated software — version fingerprints with known CVEs
- CORS — permissive
Access-Control-Allow-Originwith credentials - DNS hygiene — SPF, DMARC, DKIM records
- Subdomain takeover — CT-log enumeration plus dangling-CNAME checks
Browser security
- Content Security Policy — presence and strength
- Security headers — HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy
- Cookie flags — HttpOnly, Secure, SameSite
- CSRF — token presence and origin checks
- SRI — subresource integrity on third-party scripts
- Compromised CDN detection — known-bad sources (polyfill.io class)
- File upload — accepted content-types and executable-upload checks
Surface mode is target-agnostic. The scanner never assumes anything about your app's schema, seed data, or API contracts — every check is one a security researcher would run against a random SaaS app.
Response format
The surface scan returns a structured object with:
{
"target": "https://myapp.vercel.app",
"checks_run": 4,
"issues_found": 3,
"issues": [
{
"check": "js_secrets",
"severity": "critical",
"detail": "Supabase service_role key found in main.js"
},
{
"check": "headers",
"severity": "medium",
"detail": "Missing Content-Security-Policy header"
}
],
"clean_checks": ["exposed_paths"]
}Your AI assistant will format this into readable findings with fix suggestions.