Every finding Nyx emits has a rule ID. This page enumerates the IDs that ship with scanner 0.5.0, grouped by family.
This page is written by hand and drifts against the code. Authoritative sources: src/patterns/<lang>.rs for AST patterns, src/labels/<lang>.rs for taint matchers, and src/auth_analysis/config.rs for auth rules. If a rule fires that isn’t listed here, the source file is right and this page is wrong.
If you’d rather browse rules interactively, nyx serve ships a Rules page that lists every loaded matcher with its language, kind, and capability:
Prefix Detector Example
taint-*Taint analysis taint-unsanitised-flow (source 5:11)
cfg-*CFG structural cfg-unguarded-sink, cfg-auth-gap
state-*State model state-use-after-close, state-resource-leak
<lang>.auth.*Auth analysis rs.auth.missing_ownership_check
<lang>.<category>.<name>AST patterns rs.memory.transmute, js.code_exec.eval
Language prefixes: rs, c, cpp, go, java, js, ts, py, php, rb.
One rule covers every source-to-sink flow. The parenthetical identifies the source location.
Rule ID Severity
taint-unsanitised-flow (source L:C)Varies by source kind and sink capability
The matcher sets (sources, sanitizers, sinks, gated sinks) live per-language in src/labels/<lang>.rs. Language maturity gives per-language counts and what’s covered.
Rule ID Severity
cfg-unguarded-sinkHigh/Medium
cfg-auth-gapHigh
cfg-unreachable-sinkMedium
cfg-unreachable-sanitizerLow
cfg-unreachable-sourceLow
cfg-error-fallthroughHigh/Medium
cfg-resource-leakMedium
cfg-lock-not-releasedMedium
Rule ID Severity
state-use-after-closeHigh
state-double-closeMedium
state-resource-leakMedium
state-resource-leak-possibleLow
state-unauthed-accessHigh
Rule ID Severity
rs.auth.missing_ownership_checkHigh
rs.auth.missing_ownership_check.taintHigh (gated by scanner.enable_auth_as_taint)
See auth.md for scope, the five sink-classes, and tuning.
Each language ships a tree-sitter pattern registry. Structural match on the pattern, no dataflow. Some patterns also have a Tier B heuristic guard (e.g. SQL execute must receive a concatenation, not a literal) noted in the registry.
The tables below are generated from src/patterns/<lang>.rs by tools/docgen . Run cargo run --features docgen --bin nyx-docgen after changing the registry to refresh them.
Rule ID Severity Tier Confidence
c.cmdi.systemHigh A High
c.memory.getsHigh A High
c.memory.printf_no_fmtHigh B Medium
c.memory.scanf_percent_sHigh A High
c.memory.sprintfHigh A High
c.memory.strcatHigh A High
c.memory.strcpyHigh A High
c.cmdi.popenMedium A High
Rule ID Severity Tier Confidence
cpp.cmdi.popenHigh A High
cpp.cmdi.systemHigh A High
cpp.memory.getsHigh A High
cpp.memory.printf_no_fmtHigh B Medium
cpp.memory.sprintfHigh A High
cpp.memory.strcatHigh A High
cpp.memory.strcpyHigh A High
cpp.memory.const_castMedium A High
cpp.memory.reinterpret_castMedium A High
Rule ID Severity Tier Confidence
go.cmdi.exec_commandHigh A High
go.transport.insecure_skip_verifyHigh A High
go.deser.gob_decodeMedium A High
go.memory.unsafe_pointerMedium A High
go.secrets.hardcoded_keyMedium A High
go.sqli.query_concatMedium B Medium
go.crypto.md5Low A Medium
go.crypto.sha1Low A Medium
Rule ID Severity Tier Confidence
java.cmdi.runtime_execHigh A High
java.deser.readobjectHigh A High
java.reflection.class_fornameMedium A High
java.reflection.method_invokeMedium A High
java.sqli.execute_concatMedium B Medium
java.xss.getwriter_printMedium A High
java.crypto.insecure_randomLow A Medium
java.crypto.weak_digestLow A Medium
Rule ID Severity Tier Confidence
js.code_exec.evalHigh A High
js.code_exec.new_functionHigh A High
js.config.cors_dynamic_originHigh A Medium
js.code_exec.settimeout_stringMedium A High
js.config.insecure_session_httponlyMedium A High
js.config.reject_unauthorizedMedium A High
js.config.verbose_error_responseMedium A Medium
js.crypto.weak_hash_importMedium A Medium
js.prototype.extend_objectMedium A High
js.prototype.proto_assignmentMedium A High
js.secrets.fallback_secretMedium A Medium
js.xss.cookie_writeMedium A High
js.xss.document_writeMedium A High
js.xss.insert_adjacent_htmlMedium A High
js.xss.location_assignMedium A High
js.xss.outer_htmlMedium A High
js.config.insecure_session_samesiteLow A High
js.config.insecure_session_secureLow A Medium
js.crypto.math_randomLow A Medium
js.crypto.weak_hashLow A Medium
js.secrets.hardcoded_secretLow A Medium
js.transport.fetch_httpLow A Medium
Rule ID Severity Tier Confidence
php.cmdi.systemHigh A High
php.code_exec.assert_stringHigh A High
php.code_exec.create_functionHigh A High
php.code_exec.evalHigh A High
php.code_exec.preg_replace_eHigh A High
php.deser.unserializeHigh A High
php.path.include_variableHigh B Medium
php.sqli.query_concatMedium B Medium
php.crypto.md5Low A Medium
php.crypto.randLow A Medium
php.crypto.sha1Low A Medium
Rule ID Severity Tier Confidence
py.cmdi.os_popenHigh A High
py.cmdi.os_systemHigh A High
py.cmdi.subprocess_shellHigh B Medium
py.code_exec.evalHigh A High
py.code_exec.execHigh A High
py.deser.pickle_loadsHigh A High
py.deser.yaml_loadHigh A High
py.code_exec.compileMedium A High
py.deser.shelve_openMedium A High
py.sqli.execute_formatMedium B Medium
py.xss.jinja_from_stringMedium A High
py.crypto.md5Low A Medium
py.crypto.sha1Low A Medium
Rule ID Severity Tier Confidence
rb.cmdi.backtickHigh A High
rb.cmdi.system_interpHigh A High
rb.code_exec.class_evalHigh A High
rb.code_exec.evalHigh A High
rb.code_exec.instance_evalHigh A High
rb.deser.marshal_loadHigh A High
rb.deser.yaml_loadHigh A High
rb.reflection.constantizeMedium A High
rb.reflection.send_dynamicMedium B Medium
rb.ssrf.open_uriMedium A High
rb.crypto.md5Low A Medium
Rule ID Severity Tier Confidence
rs.memory.copy_nonoverlappingHigh A High
rs.memory.get_uncheckedHigh A High
rs.memory.mem_zeroedHigh A High
rs.memory.ptr_readHigh A High
rs.memory.transmuteHigh A High
rs.quality.unsafe_blockMedium A High
rs.quality.unsafe_fnMedium A High
rs.memory.mem_forgetLow A High
rs.memory.narrow_castLow A Medium
rs.quality.expectLow A High
rs.quality.panic_macroLow A High
rs.quality.todoLow A High
rs.quality.unwrapLow A High
Rule ID Severity Tier Confidence
ts.code_exec.evalHigh A High
ts.code_exec.new_functionHigh A High
ts.config.cors_dynamic_originHigh A Medium
ts.code_exec.settimeout_stringMedium A High
ts.config.insecure_session_httponlyMedium A High
ts.config.reject_unauthorizedMedium A High
ts.config.verbose_error_responseMedium A Medium
ts.crypto.weak_hash_importMedium A Medium
ts.prototype.proto_assignmentMedium A High
ts.secrets.fallback_secretMedium A Medium
ts.xss.document_writeMedium A High
ts.xss.insert_adjacent_htmlMedium A High
ts.xss.location_assignMedium A High
ts.xss.outer_htmlMedium A High
ts.config.insecure_session_samesiteLow A High
ts.config.insecure_session_secureLow A Medium
ts.crypto.math_randomLow A Medium
ts.crypto.weak_hashLow A Medium
ts.quality.any_annotationLow A Medium
ts.quality.as_anyLow A Medium
ts.secrets.hardcoded_secretLow A Medium
ts.xss.cookie_writeLow A Medium
nyx config add-rule --cap <name> and [analysis.languages.*.rules] in config accept:
env_var, html_escape, shell_escape, url_encode, json_parse, file_io, fmt_string, sql_query, deserialize, ssrf, code_exec, crypto, unauthorized_id, all
Source for both the enum and the to_cap mapping: src/labels/mod.rs (Cap) and src/utils/config.rs (CapName).