From find-cve-agent
Audits packages for code injection vulnerabilities via dynamic code generation/evaluation using new Function(), eval(), vm.run*, or template interpolation in JS/TS, Python, Ruby, PHP.
npx claudepluginhub byamb4/find-cve-agentThis skill uses the workspace's default tool permissions.
Audit any package that dynamically generates or evaluates code — schema validators, template engines, expression evaluators, serializers with code generation, JIT compilers, query builders that emit JavaScript.
Detects OS command injection in JavaScript, TypeScript, Python, Go, Ruby, PHP via shell sinks like exec/system/popen. Traces user input, checks sanitization/argument injection for RCE in CLI wrappers.
Audits Python code for injection vulnerabilities including command execution (subprocess, os.system), SQL queries (cursor.execute, sqlalchemy.text), eval/exec calls, and template rendering (Jinja2, Mako SSTI).
Detects SQL, command, template, and code injection vulnerabilities from unsanitized user input. Flags patterns like query concatenation or eval, recommends parameterized queries, argument lists, and autoescaping templates.
Share bugs, ideas, or general feedback.
Audit any package that dynamically generates or evaluates code — schema validators, template engines, expression evaluators, serializers with code generation, JIT compilers, query builders that emit JavaScript.
This is the highest-yield vulnerability class for CVE hunting. ~90% acceptance rate when confirmed.
Code generation packages often interpolate user-controlled values directly into generated code strings. Unlike template injection (where user input goes INTO a template), here user input becomes PART of the generated code itself.
Search for all dynamic code execution:
# JavaScript/TypeScript
grep -rn "new Function\(" .
grep -rn "eval(" .
grep -rn "vm\.run" .
grep -rn "vm\.compileFunction" .
grep -rn "setTimeout(" . | grep -v "setTimeout(function"
grep -rn "setInterval(" . | grep -v "setInterval(function"
grep -rn "new AsyncFunction" .
grep -rn "script\.runIn" .
# Python
grep -rn "eval(" .
grep -rn "exec(" .
grep -rn "compile(" . | grep -v "re.compile"
# Ruby
grep -rn "\.eval\b" .
grep -rn "instance_eval" .
grep -rn "class_eval" .
# PHP
grep -rn "eval(" .
grep -rn "assert(" .
grep -rn "create_function" .
grep -rn "preg_replace.*\/e" .
For each sink found:
new Function(`return ${userInput}`)new Function("return " + userInput)JSON.stringify does NOT escape */. If generated code wraps values in block comments:
// VULNERABLE PATTERN:
let code = `/* ${JSON.stringify(userValue)} */ actual_code_here`;
// Attacker input: */ malicious_code /*
// Result: /* */ malicious_code /* */ actual_code_here
Search for this pattern:
grep -rn "\/\*.*JSON\.stringify" .
grep -rn "\/\*.*\$\{" .
Common mistakes:
</script> in HTML context// Schema validator generating validation function
function createValidator(schema) {
const code = `return function(value) {
if (typeof value !== "${schema.type}") throw new Error("invalid");
}`;
return new Function(code)();
}
// Exploit: schema.type = '"; }); process.mainModule.require("child_process").execSync("id"); //'
// Expression evaluator
function evaluate(expr) {
return eval("(" + expr + ")");
}
// Serializer generating accessor code
function createGetter(path) {
return new Function("obj", `return obj.${path}`);
}
// Exploit: path = "x; process.mainModule.require('child_process').execSync('id'); //"
// Code generator with "safe" comments
function generateModule(config) {
return `
/* Config: ${JSON.stringify(config.name)} */
module.exports = { value: ${JSON.stringify(config.value)} };
`;
}
// Exploit: config.name = "*/ require('child_process').execSync('id'); /*"
// Debug source mapping
const code = `${generatedCode}\n//# sourceURL=${filename}`;
new Function(code)();
// Exploit: filename contains newline + malicious code