Skip to content

Detection rules Available

Every rule VibeGuard ships — 78 that judge a file on its own, and 11 more that reason across files. Generated from the rule sources at build time.

Single-file rules
78
Cross-file rules
11
Languages
11
With an automatic fix
7
Of those, safe to apply unread
1

Most rules carry no automatic fix, and that is the honest state of it: 7 of 78 have one, 6 of those change behaviour and are marked for review, and only 1 is declared safe to apply without reading the change. The rest of the catalogue tells you where to look and why. The edit stays yours.

Languages covered: c cpp csharp go java javascript kotlin php python ruby typescript

Injection

SQL, command, eval, deserialization, template

  1. Use of eval() VG-INJ-004

    CRITICALjavascript typescript pythonCWE-95

  2. Unsafe deserialization (pickle / yaml.load) VG-INJ-005

    CRITICALpythonCWE-502

  3. Runtime.exec / ProcessBuilder with string concatenation VG-INJ-010

    CRITICALjavaCWE-78

  4. ObjectInputStream.readObject on untrusted input VG-INJ-012

    CRITICALjavaCWE-502

  5. Ruby eval / instance_eval / class_eval with non-literal VG-INJ-014

    CRITICALrubyCWE-95

  6. extract() on a request superglobal VG-INJ-016

    CRITICALphpCWE-915

  7. include / require with a variable path VG-INJ-017

    CRITICALphpCWE-98

  8. unserialize() on potentially untrusted input VG-INJ-018

    CRITICALphpCWE-502

  9. SQL string concatenation VG-INJ-001

    HIGHjavascript typescript python java go php ruby csharpCWE-89

  10. subprocess with shell=True and dynamic args VG-INJ-002

    HIGHpythonCWE-78

  11. os.system / os.popen with interpolated input VG-INJ-003

    HIGHpythonCWE-78

  12. innerHTML assignment with non-literal value VG-INJ-006

    HIGHjavascript typescriptCWE-79

  13. Go SQL query built with fmt.Sprintf VG-INJ-008

    HIGHgoCWE-89

  14. html/template.HTML() cast bypasses escaping VG-INJ-009

    HIGHgoCWE-79

  15. XML parser configured without disabling external entities (XXE) VG-INJ-011

    HIGHjavaCWE-611

  16. Rails raw() / html_safe on non-literal input VG-INJ-013

    HIGHrubyCWE-79

  17. Rails params.permit! (mass assignment open to every attribute) VG-INJ-015

    HIGHrubyCWE-915

  18. mysql_query / mysqli_query with string concatenation VG-INJ-019

    HIGHphpCWE-89

  19. Prototype-polluting merge VG-INJ-020

    HIGHjavascript typescriptCWE-1321auto-fix · needs review

    Fix offered: Skip prototype keys in the merge loop.

  20. Path built from string concatenation VG-INJ-007

    MEDIUMjavascript typescript pythonCWE-22

Hardcoded secrets

AWS keys, PEM blocks, GitHub tokens, API keys

  1. Hard-coded AWS access key ID VG-SEC-001

    CRITICALany languageCWE-798

  2. Embedded PEM private key VG-SEC-002

    CRITICALany languageCWE-798

  3. Embedded GitHub personal access token VG-SEC-004

    CRITICALany languageCWE-798

  4. Embedded model-provider API key VG-SEC-005

    CRITICALany languageCWE-798

  5. Likely API key / secret in literal VG-SEC-003

    HIGHany languageCWE-798

Auth & access control

Debug bypasses, placeholder tokens, role checks by string literal

  1. Authentication bypass when DEBUG is enabled VG-AUTH-001

    CRITICALany languageCWE-489

  2. Dummy or placeholder credential string VG-AUTH-003

    HIGHany languageCWE-798

  3. TLS certificate verification disabled VG-AUTH-004

    HIGHpython javascript typescript goCWE-295

  4. Django @csrf_exempt decorator disables CSRF protection VG-AUTH-005

    HIGHpythonCWE-352

  5. Express session cookie missing secure / httpOnly flag VG-AUTH-006

    HIGHjavascript typescriptCWE-614 · CWE-1004

  6. Rails CSRF protection disabled or weakened VG-AUTH-007

    HIGHrubyCWE-352

  7. Authorization decided by assert() VG-AUTH-008

    HIGHc cppCWE-285 · CWE-489

  8. Access control that only runs in development VG-AUTH-009

    HIGHjavascript typescriptCWE-285 · CWE-489

  9. Authorization decided by console.assert VG-AUTH-010

    HIGHjavascript typescriptCWE-285 · CWE-617

  10. Authorization decided by assert (Python) VG-AUTH-011

    HIGHpythonCWE-285 · CWE-489

  11. TODO comment near security-critical code VG-AUTH-002

    MEDIUMany language

  12. Long Security Method VG-SMELL-003

    MEDIUMjavascript typescript pythonCWE-1120

  13. Primitive Role Check VG-SMELL-012

    MEDIUMjavascript typescript python java go kotlinCWE-286

  14. Security Swiss Army Knife VG-SMELL-004

    LOWjavascript typescript pythonCWE-1061

Weak crypto & cleartext

MD5/SHA1, Math.random, http:// endpoints

  1. Weak hash (MD5 / SHA1) used in security context VG-CRYPTO-001

    MEDIUMany languageCWE-327

  2. Non-cryptographic random used for tokens / IDs VG-CRYPTO-002

    MEDIUMjavascript typescript python go java php ruby csharpCWE-338

  3. http:// URL used for non-localhost endpoint VG-CRYPTO-003

    LOWany languageCWE-319

Framework misconfig

Django DEBUG, Flask debug=True, CORS wildcard

  1. Flask app.run(debug=True) — Werkzeug debugger reachable VG-FW-002

    CRITICALpythonCWE-489 · CWE-94

  2. Django DEBUG = True in settings VG-FW-001

    HIGHpythonCWE-489 · CWE-215

  3. CORS configured with wildcard origin VG-FW-003

    HIGHjavascript typescript python go javaCWE-942

  4. Go http.ListenAndServe on all interfaces without TLS VG-FW-004

    HIGHgoCWE-319

Memory safety (C/C++)

gets, strcpy, memcpy sized from strlen, same-block use-after-free

  1. gets() — unbounded stack read VG-MEM-001

    CRITICALc cppCWE-242 · CWE-120

  2. Unbounded string copy (strcpy / strcat / sprintf) VG-MEM-002

    HIGHc cppCWE-120 · CWE-787

  3. Double free on the same pointer (straight-line) VG-MEM-004

    HIGHc cppCWE-415

  4. Use after free (straight-line) VG-MEM-005

    HIGHc cppCWE-416

  5. memcpy / memmove sized from the source (strlen) VG-MEM-003

    MEDIUMc cppCWE-120

  6. Secret buffer cleared with a removable memset VG-MEM-006

    MEDIUMc cppCWE-14 · CWE-226

AI leftovers

Stub implementations, placeholder emails, "for now" comments, near-miss imports

  1. Mock / Dummy Security Leftover VG-AISC-004

    HIGHjavascript typescript pythonCWE-489 · CWE-287

  2. CORS wildcard origin with credentials VG-QUAL-002

    HIGHjavascript typescript python goCWE-942

  3. Hallucinated Dependency VG-AISC-001

    MEDIUMjavascript typescript pythonCWE-1104auto-fix · needs review

    Fix offered: Rename the import to the package it near-misses.

  4. Empty except / catch block VG-QUAL-001

    MEDIUMpython javascript typescript javaCWE-390

  5. Logging a secret-named variable VG-QUAL-003

    MEDIUMjavascript typescript pythonCWE-532

  6. Redirect to a value derived from request input VG-QUAL-004

    MEDIUMjavascript typescript pythonCWE-601

  7. Stub or not-implemented function body VG-QUAL-005

    MEDIUMjavascript typescript python go java

  8. Placeholder email address in source VG-QUAL-006

    MEDIUMany language

  9. Debug / verbose flag hardcoded ON VG-QUAL-008

    MEDIUMjavascript typescript python go java

  10. "Not for production" / "for now" placeholder comment VG-QUAL-009

    MEDIUMany language

  11. Validator / sanitizer with passthrough body VG-QUAL-010

    MEDIUMjavascript typescript pythonCWE-20

  12. Mock / fake / dummy identifier outside test paths VG-QUAL-007

    LOWjavascript typescript python go java

Embedded & RTOS

Hard-coded Wi-Fi creds, setInsecure(), #define DEBUG 1, ISR-unsafe calls

  1. Hard-coded Wi-Fi credentials VG-EMB-001

    HIGHc cppCWE-798

  2. Secret assigned to a credential-named identifier VG-EMB-002

    HIGHc cppCWE-798

  3. TLS certificate verification disabled VG-EMB-011

    HIGHc cppCWE-295auto-fix · needs review

    Fix offered: Require certificate verification.

  4. Auth / security bypass flag VG-EMB-021

    HIGHc cppCWE-489auto-fix · needs review

    Fix offered: Turn the bypass flag off.

  5. Forbidden call inside an interrupt handler VG-RTOS-001

    HIGHc cppCWE-662

  6. Static BLE pairing passkey VG-EMB-003

    MEDIUMc cppCWE-798 · CWE-1391

  7. Cleartext HTTP endpoint from device VG-EMB-010

    MEDIUMc cppCWE-319auto-fix · needs review

    Fix offered: Use https for the endpoint.

  8. BLE Just Works / no-MITM pairing constant VG-EMB-012

    MEDIUMc cppCWE-1391

  9. #define DEBUG 1 left on in firmware VG-EMB-020

    MEDIUMc cppauto-fix · safe

    Fix offered: Set the debug define to 0.

  10. Credential printed to serial VG-EMB-022

    MEDIUMc cppCWE-532

  11. "Remove before production" reminder comment VG-EMB-023

    MEDIUMc cpp

  12. Shared ISR variable missing volatile VG-RTOS-002

    MEDIUMc cppCWE-457 · CWE-662

  13. Peripheral used before begin() in setup() VG-EMB-031

    LOWc cppCWE-665

  14. O_DIRECT open without O_SYNC (NuttX) VG-RTOS-004

    LOWc cppCWE-662auto-fix · needs review

    Fix offered: Add O_SYNC for durability.

Cross-file design smells

A further set of rules reasons across files rather than within one — authorization decided in a dozen handlers instead of one boundary, a generated validator that nothing ever calls, a variable an interrupt writes and another file reads. These run only with --include-design-smells, in the CLI and the GitHub Action. They are not bundled into the VS Code or Chrome extensions.

The GitHub Action and the CLI are two of the four ways to install VibeGuard.

  1. Hallucinated API / Symbol VG-AISC-002

    HIGHc cppCWE-1104

  2. Unintegrated Generated Security VG-AISC-003

    HIGHc cppCWE-1188 · CWE-665

  3. Temporal Security Coupling VG-SMELL-041

    HIGHtypescript javascriptCWE-696 · CWE-20

  4. Shared ISR variable missing volatile (cross-file) VG-RTOS-003

    MEDIUMc cppCWE-457 · CWE-662

  5. Scattered Authorization VG-SMELL-010

    MEDIUMtypescript javascript pythonCWE-284 · CWE-862

  6. Missing Central Auth Boundary VG-SMELL-011

    MEDIUMtypescript javascriptCWE-306 · CWE-862

  7. Inline Authorization Logic VG-SMELL-013

    MEDIUMtypescript javascriptCWE-284

  8. Cyclic Security Dependency VG-SMELL-020

    MEDIUMtypescript javascript pythonCWE-665 · CWE-1047

  9. High Fan-out Security Module VG-SMELL-021

    MEDIUMtypescript javascriptCWE-1047 · CWE-1120

  10. Refused Security Inheritance VG-SMELL-030

    MEDIUMtypescript javascript pythonCWE-863 · CWE-1041

  11. Generated Boilerplate Without Integration VG-SMELL-052

    MEDIUMtypescript javascriptCWE-1188 · CWE-20