Nerve -- Passive Parameter Intelligence
Nerve is a passive analysis engine that reads HTTP traffic and produces actionable intelligence about what to test. It does not send any requests. It reads parameter names and values from flows you have already captured and maps them to vulnerability categories using a signal database of 714 patterns across 21 categories.
What Nerve Does
Nerve answers two questions:
-
Given requests with parameters, which parameters are worth attacking and for which vulnerability class? This is the
analyzemode -- it takes existing traffic and identifies high-value targets. -
Given a bare URL with no parameters, what parameters should I try adding? This is the
discovermode -- it classifies the endpoint type and suggests parameters to fuzz, prioritized by relevance.
The 21 Vulnerability Categories
idor-- IDOR/BOLA:user_id,account_id,order_id,resource, numeric IDssqli-- SQL injection:query,search,filter,sort,order_byssrf-- SSRF:url,uri,endpoint,callback,webhook,fetchxss-- XSS:message,comment,content,html,text,markupcmdi-- Command injection:cmd,exec,command,shell,runlfi-- Path traversal/LFI:file,path,include,template,pagessti-- Template injection:template,render,view,layoutauth-- Authentication:token,session,password,key,secret,apikeyredir-- Open redirect:redirect,return_url,next,goto,continuemass-- Mass assignment:role,isAdmin,permission,privilege,adminxxe-- XXE: XML bodies withDOCTYPE,ENTITYdebug-- Debug endpoints:debug,trace,verbose,test,devgraphql-- GraphQL:query,mutation,variables,operationNamegateway-- Gateway bypass:X-Forwarded-For,X-Real-IP,X-Original-URLedge-- Edge/CDN:cf-ray,x-vercel-id,fastly-*cloud-- Cloud metadata:role,iam,bucket,regionprototype-- Prototype pollution:__proto__,constructor,prototypeai_llm-- AI/LLM:prompt,model,temperature,system,instructionworkflow-- Workflow:step,stage,transition,action,statesaas-- SaaS abuse:stripe,payment,amount,price
Analyzing Captured Traffic
Pass URLs or Hugin flows to the analyzer. Each parameter in each request is matched against all signals for the appropriate context (query string, body, header, cookie, path).
For each match the output includes:
- The parameter name
- Its current value (if present)
- The matched category and signal name
- The context it appeared in (query, body, header, cookie, path)
- The confidence level (High, Medium, Low)
- Whether the value itself carries risk (e.g. a numeric ID, a URL value,
truefor a boolean admin flag) - Any detected contextual pair
- The detected framework (WordPress, Spring, Keycloak, etc.)
Confidence Adjustment
Signal confidence starts at the level defined in the signal database but is adjusted upward based on the actual parameter value:
user_id=42-- Short numeric value for an IDOR signal upgrades confidence to High.isAdmin=true-- Boolean admin-true for a mass-assignment signal upgrades to High.redirect=http://evil.com-- URL value for an SSRF/redirect signal upgrades to High.file=../../etc/passwd-- Path traversal pattern in a value upgrades to High.template={{7*7}}-- Template syntax in a value for SSTI upgrades to High.
Contextual Pairs
Nerve detects 20 high-risk parameter combinations that individually might be medium risk but together indicate a specific attack surface:
url+webhook-- SSRF data exfiltrationtoken+redirect-- OAuth token theftmodel+prompt-- LLM prompt injectionrole+user_id-- Privilege escalationgrant_type+client_id-- OAuth flow manipulationnamespace+pod-- Kubernetes accessbucket+key-- S3 object manipulation__proto__+exec-- Prototype pollution RCE chaincache_key+host-- Cache poisoningx_forwarded_host+cache-- Web cache poisoningpassword+email-- Credential attack surfacequery+variables-- GraphQL injectionfunction+payload-- Serverless RCEsuccess_url+stripe-- Post-payment redirect hijacktrace_id+service-- Distributed tracing abuseservice_id+upstream-- Service mesh lateral movementx_forwarded+internal-- WAF/ACL bypassx_original_url+admin-- Path-based ACL bypassconstructor+prototype-- Full prototype pollution chainstripe+amount-- Payment amount manipulation
When a pair is detected, each finding from those parameters carries the pair label.
CamelCase Normalization
Parameters like userId are automatically normalized to user_id before matching. The original parameter name is preserved in the output. This prevents misses on APIs that use camelCase naming.
Parameter Discovery for Bare URLs
When you have a list of endpoints with no existing parameters, Nerve can suggest what to add.
The endpoint classifier detects the type (api, auth, search, upload, admin, redirect, export, webhook, user, payment, integration, dev_staging, swagger) from URL structure. Technology indicators (Next.js, GraphQL, WordPress, Java, PHP, .NET, Node.js, Keycloak, cloud SaaS) are detected from path and hostname patterns.
Each endpoint type is mapped to high-priority and medium-priority vulnerability categories. Parameters are extracted from the signal database for those categories and returned in priority order, tagged with the context where they should be tested (query, body, header, cookie).
Exclusion Rules
Nerve filters out noise automatically:
- External social/analytics domains (Twitter, Google Analytics, Facebook) are excluded entirely.
- Pagination parameters with small numeric values (
page=2,limit=10) are excluded for LFI signals. - Drupal CSS aggregation parameters (
css?include=...&delta=0) are excluded for LFI. - Static asset versioning (
app.js?v=1.2.3) is excluded. - Any of the above exclusions are overridden if the actual value carries a risk indicator (e.g.
?include=../../etc/passwdstill fires even on a Drupal CSS URL).
Analyzing Proxy Flows Directly
Nerve accepts flows from the proxy store directly. This parses the full request including method, path segments, query string, body (JSON and form-urlencoded), headers, and cookies. JSON bodies are flattened -- {"user": {"id": 42}} produces a body parameter user.id = 42 and also checks the leaf key id independently.
Output Sorting
Results are sorted by confidence descending (High before Medium before Low), then by category, then by parameter name. High-confidence findings with risk-bearing values appear at the top.
MCP Tool: paramhunter
The Nerve engine is exposed as the paramhunter MCP tool.
Actions:
analyze-- Analyze URLs for parameter signals. Passurls(array of URLs with query parameters).analyze_flows-- Analyze captured proxy flows. Passflow_ids(array of UUIDs) orhost(string) with optionallimit.discover-- Suggest parameters for bare URLs. Passurls(array of endpoints).categories-- List all 21 vulnerability categories with signal counts.info-- Get detailed info for a specific category including all signals. Passcategory(short name).stats-- Total signal counts across all categories.
Integration with Flow Details
Nerve findings are automatically included when you retrieve flow details via the flow_detail MCP tool. The nerve_findings field on each flow shows which parameters matched which vulnerability categories, without requiring a separate tool call.
Aggregated Nerve statistics for the current project are available via the intelligence MCP tool with the nerve_findings and nerve_stats actions.