CodeVetter

Public proof, without repository uploads

See what the review can actually prove.

Agent PR X-Rays are static exports from completed local reviews. Every example keeps failed, waived, missing, and unverified stages visible instead of polishing them into a green badge.

Reviewed examples

Benchmark ground truth · static HTML
gobug

Unchecked error return in Go

The error return from os.WriteFile is discarded, so disk-full, permission, and invalid-path failures are silently swallowed and callers assume the config was saved.

mediumsource.go:12
gosecurity

Hardcoded database credentials in Go

Production database username, password, and host are committed in plaintext as package-level constants, exposing credentials to anyone with repository access.

highsource.go:7
gobug

Nil-pointer dereference on missing map value in Go

FindUser dereferences u.Email without checking that the map lookup returned a non-nil pointer, so a missing id causes a nil pointer dereference and a process crash.

mediumsource.go:16
GoConcurrency

Data race on a shared Go map

Multiple goroutines read and write the same map without a mutex or another synchronization boundary.

highsource.go:14
gosecurity

SQL injection via fmt.Sprintf in Go

User-supplied email is interpolated into the SQL query via fmt.Sprintf instead of parameterized placeholders, allowing injection of arbitrary SQL.

highsource.go:13
javasecurity

Predictable PRNG for security tokens in Java

Reset tokens are generated with java.util.Random, a predictable PRNG whose seed is recoverable from observed outputs, allowing token forgery. SecureRandom should be used instead.

highsource.java:10
javascriptsecurity

Arbitrary code execution via eval() in JavaScript

Caller-supplied expression is passed directly to eval(), turning any user-controlled value into executing JavaScript and enabling arbitrary code execution.

highsource.js:7
javascriptsecurity

Open redirect via unvalidated URL in Express

The next query parameter is passed directly to res.redirect without an allowlist or same-origin check, enabling phishing redirects off the trusted domain.

mediumsource.js:9
pythonbug

Bare except swallows all errors in Python

A bare except catches BaseException (including KeyboardInterrupt and SystemExit), hides JSON parse failures, and silently returns an empty dict so callers never learn the config failed to parse.

mediumsource.py:9
pythonsecurity

Command injection via subprocess shell=True in Python

subprocess.run is called with shell=True and a string command containing user-controlled host, allowing shell metacharacters to inject arbitrary commands.

highsource.py:9
pythonsecurity

Hardcoded cloud API credentials in Python

A live AWS access key id and secret access key are hardcoded in source. Anyone with repository access can extract and abuse these credentials.

highsource.py:10
pythonsecurity

Insecure pickle deserialization in Python

pickle.loads is called on a user-supplied base64 blob. pickle can execute arbitrary code during deserialization, so untrusted input lets an attacker run any payload on the server.

highsource.py:9
PythonSecurity

Path traversal in a Python file handler

The requested filename is joined to the storage root without canonical containment validation.

highsource.py:9
pythonsecurity

SQL injection via f-string in Python

User-supplied name is interpolated into the SQL query via an f-string, allowing injection of arbitrary SQL such as a UNION SELECT to exfiltrate other tables.

highsource.py:8
pythonsecurity

Server-side request forgery in Python

The server fetches a user-supplied URL with no scheme, host, or private-range restrictions, allowing requests to cloud metadata endpoints (e.g. 169.254.169.254) to steal credentials or to internal services for pivoting.

highsource.py:9
pythonsecurity

Weak password hashing with MD5 in Python

Passwords are hashed with unsalted MD5, which is cryptographically broken and trivially reversed with rainbow tables; identical passwords produce identical hashes.

highsource.py:7
pythonsecurity

Unbounded zip extraction (zip bomb) in Python

extractall is called without checking uncompressed sizes or compression ratios, so a small zip bomb can decompress to petabytes and exhaust disk and memory.

highsource.py:9
rustbug

Unchecked integer arithmetic in Rust

credit uses += on u64 without checked/saturating arithmetic; in release builds an overflowing credit wraps the balance silently, enabling balance manipulation.

highsource.rs:11
typescriptmaintainability

Unreachable code after unconditional return

The if (score >= 70) branch and final return are unreachable because an unconditional return at line 8 always exits the function first.

mediumsource.ts:12
typescriptsecurity

Hardcoded database password in TypeScript

The production database password is committed in plaintext inside the source file, exposing credentials to anyone with repository access.

highsource.ts:8
typescriptsecurity

Insecure session cookie attributes in TypeScript

The session cookie is set without Secure, HttpOnly, or SameSite attributes, so it is transmitted over HTTP, readable by JavaScript/XSS, and vulnerable to CSRF.

highsource.ts:8
typescriptbug

Missing await on async operation in TypeScript

deleteSession returns a promise but is not awaited, so a rejection becomes an unhandled promise rejection and logout resolves before the session is actually deleted, leaving stale sessions.

mediumsource.ts:8
typescriptsecurity

Prototype pollution via recursive merge in TypeScript

The recursive merge walks user-supplied keys without blocking __proto__/constructor/prototype, so a payload like {"__proto__": {"admin": true}} pollutes Object.prototype and escalates privileges across the application.

highsource.ts:11
typescriptsecurity

Catastrophic backtracking regex (ReDoS) in TypeScript

The regex uses a nested + quantifier ((...+)+) causing exponential backtracking on non-matching inputs; a long crafted string hangs the event loop and denies service to all other requests.

highsource.ts:4
TypeScriptSecurity

SQL injection in a TypeScript lookup

The lookup builds SQL with user-controlled email input instead of a parameterized query.

criticalsource.ts:13
typescriptbug

Type-safety bypass via `as any` in TypeScript

The payload is cast through `as any` to Order, bypassing the compiler so a Refund-shaped object is treated as an Order; at runtime items is undefined and the .length access throws or silently corrupts downstream totals.

mediumsource.ts:19
typescriptsecurity

Reflected XSS via dangerouslySetInnerHTML in React

User-supplied comment body is rendered as raw HTML via dangerouslySetInnerHTML without any sanitization, enabling stored/reflected XSS.

highsource.tsx:12