hunt-prototype-pollution

Validates JavaScript prototype pollution in Node.js parsers and merge logic with evidence-gated probes.

10|3|Updated Aug 10, 2026
One-click install
npx skills add https://github.com/baiqigo/baiqi-redteam-lab --skill hunt-prototype-pollution-baiqigo
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: hunt-prototype-pollution
Source: https://github.com/baiqigo/baiqi-redteam-lab/tree/main/.agents/skills/hunt-prototype-pollution
Command: npx skills add https://github.com/baiqigo/baiqi-redteam-lab --skill hunt-prototype-pollution-baiqigo

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Security testers often struggle to confirm whether JavaScript prototype pollution signals (such as proto, constructor, or deep-merge inputs) represent real server-side vulnerabilities or harmless client-side quirks, leading to false positives and unverifiable findings. ## Core Features & Use Cases - Evidence-Gated Validation: Uses a baseline, single-variable probe, post-baseline, oracle, and evidence workflow to prove that newly created objects actually inherit an injected marker. - Client vs Server Distinction: Separates client-side state merge issues from server-side security impact, rejecting object reflection, devtools edits, and one-off anomalies as evidence. - Safe Boundaries: Prohibits RCE gadget hunting, shared configuration changes, and pollution of admin or other users' objects, routing confirmed impact to follow-up reviews. - Use Case: During an authorized Node.js API assessment, you suspect the qs query parser or a JSON deep-merge accepts proto keys; this Skill guides a minimal harmless-marker test that proves or disproves pollution without touching production state. ## Quick Start Ask the agent to run the prototype pollution specialist against an authorized Node.js endpoint to verify whether nested proto fields in JSON or query input pollute newly created objects.

Frequently Asked Questions about hunt-prototype-pollution

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test for prototype pollution in a Node.js application?

Send a single-variable probe comparing a normal unknown field against a nested reserved name like __proto__ carrying a harmless marker, then check whether newly created objects inherit that marker. Confirm with a clean-session baseline to rule out caching effects.

What counts as proof of prototype pollution versus a false positive?

Valid proof requires that a polluted new object inherits the marker while a control request without the marker does not. Object reflection in responses, manual devtools edits, and one-time anomalies are not accepted as evidence.

Does this approach exploit prototype pollution into RCE?

No. The workflow explicitly stops before seeking RCE gadgets, modifying shared configuration, or polluting admin objects. Any downstream impact must be proven separately through dedicated follow-up reviews.

Can prototype pollution testing distinguish client-side from server-side issues?

Yes. The method first determines whether parsing and merging execute in the browser or on the server, then only treats verifiable server-side inheritance on security-relevant objects as a genuine vulnerability.

When should prototype pollution testing be stopped?

Stop when testing would require modifying shared configuration, polluting other users' objects, restarting processes, reading secrets, or leaving the authorized scope. WAF blocks, captchas, and timeouts are recorded as inconclusive.