Skip to content

Built-in Rules

codescan ships with 40+ built-in rules across six categories. Use codescan --list-rules to see the full list including any loaded custom rules.

SECRET — Hardcoded Secrets

IDSeverityDescription
SECRET001errorHardcoded password assignment
SECRET002errorGeneric secret / API key assignment
SECRET003errorAWS access key (AKIA...)
SECRET004errorAWS secret key
SECRET005errorGeneric bearer / auth token
SECRET006errorBasic Auth credentials in URL
SECRET007errorPrivate key PEM header
SECRET008errorGitHub personal access token
SECRET009errorSlack webhook URL
SECRET010errorStripe secret key
SECRET011errorStripe publishable key
SECRET012warningTwilio account SID
SECRET013warningTwilio auth token
SECRET014errorGoogle API key
SECRET015errorSendGrid API key
SECRET016errorJWT token literal
SECRET017warningDatabase connection string with credentials
SECRET018warningSSH private key header
SECRET019warningPGP private key header
SECRET020warningGeneric token = "..." assignment
SECRET021warningGeneric key = "..." assignment
SECRET022warningGeneric secret = "..." assignment
SECRET023warningTelegram bot token
SECRET024errornpm auth token in .npmrc

EXPLOIT — Vulnerability Patterns

IDSeverityDescription
EXPLOIT001errorSQL injection via string concatenation
EXPLOIT002errorOS command injection via string concatenation
EXPLOIT003errorPath traversal with ../
EXPLOIT004erroreval() of untrusted input
EXPLOIT005errorPickle / unsafe deserialization
EXPLOIT006warningXML external entity (XXE) — FEATURE_EXTERNAL_GENERAL_ENTITIES
EXPLOIT007errorYAML load() without Loader (arbitrary code execution)
EXPLOIT008warningServer-side template injection risk
EXPLOIT009errorinnerHTML / outerHTML assignment (XSS)
EXPLOIT010errordocument.write() with untrusted input (XSS)
EXPLOIT011warningexec() / execSync() with variable (command injection)
EXPLOIT012warningchild_process.spawn with shell option
EXPLOIT013warningInsecure subprocess.Popen(shell=True)
EXPLOIT014warningPython input() in Python 2 (code execution)
EXPLOIT015warningopen() / file access with user-controlled path
EXPLOIT016warningRegex denial of service (ReDoS) pattern
EXPLOIT017warningHardcoded credentials in assert statements
EXPLOIT018errorPrototype pollution via __proto__
EXPLOIT019warningdangerouslySetInnerHTML (React XSS)
EXPLOIT020warningLog injection via unescaped user input
EXPLOIT021errorPrototype pollution assignment patterns
EXPLOIT022warningUnvalidated redirect via user-controlled URL
EXPLOIT023warningSSRF risk — HTTP request with user-controlled URL
EXPLOIT024warningMass assignment / object spread with user input

CRYPTO — Cryptography Issues

IDSeverityDescription
CRYPTO001warningMD5 usage
CRYPTO002warningSHA-1 usage
CRYPTO003errorDES / 3DES usage
CRYPTO004errorRC4 usage
CRYPTO005errorECB cipher mode
CRYPTO006warningWeak RSA key size (< 2048 bits)
CRYPTO007errorHardcoded cryptographic key or IV
CRYPTO008errorMath.random() for security-sensitive purpose
CRYPTO009errorrandom.random() for security-sensitive purpose
CRYPTO010errorTLS/SSL certificate verification disabled
CRYPTO011warningBlowfish cipher usage

UNICODE — Unicode Attacks

IDSeverityDescription
UNICODE001errorBidirectional control characters (Trojan Source, CVE-2021-42574)
UNICODE002warningZero-width characters in code
UNICODE003warningHomoglyph characters (Cyrillic/Greek look-alikes)

INFRA — Infrastructure / Configuration

IDSeverityDescription
INFRA001warningHardcoded private/RFC-1918 IP address
INFRA002warningTODO/FIXME/HACK/XXX comment with security implication
INFRA003infoDebug/verbose logging left in code
INFRA004infoPlaintext HTTP URL (non-localhost)

ENTROPY — High-Entropy Strings

IDSeverityDescription
ENTROPY001warningHigh-entropy string near a secret keyword (Shannon entropy ≥ 4.5 bits/char)

Disabling Rules

bash
# CLI
codescan --skip-rules INFRA004,INFRA003 .

# codescan.toml
[rules]
disabled = ["INFRA004", "INFRA003"]

Overriding Severity

toml
# codescan.toml
[rules.severity_overrides]
CRYPTO001 = "error"
INFRA004  = "warning"

Adding Custom Rules

See Custom Rules for how to write and load your own rule definitions.