Taint Analysis Engine
Track untrusted data as it flows through your application from sources to sinks. The definitive defense against injection attacks.
Overview
Taint Analysis tracks the flow of potentially malicious data through your application. When untrusted data (from user input, files, network) reaches a security-sensitive operation (database query, command execution, HTML output) without proper sanitization, Bloodhound flags it as a vulnerability.
Sources and Sinks
Taint Sources
req.bodyreq.paramsreq.queryreq.headersfs.readFilefs.readFileSyncfile.read()db.query()Model.find()cursor.fetchall()process.envos.environSystem.getenv()readline()input()Scanner.next()Security Sinks
db.query()cursor.execute()exec()system()spawn()innerHTMLdocument.write()res.send()fs.readFile()open()fopen()res.redirect()location.hrefTaint Propagation
Taint propagates through operations that transform data. Bloodhound tracks taint through string concatenation, method calls, object properties, and more.
Sanitizers
Sanitizers are functions that clean tainted data, making it safe to use. Bloodhound recognizes common sanitization patterns.
Custom Sanitizers
@sanitizes JSDoc tags to teach Bloodhound about your security controls.Interprocedural Analysis
Taint tracking works across function calls, even spanning multiple files. Bloodhound builds a complete call graph to trace data flow.