Real Vulnerabilities We Found

Production-grade security issues caught by AI code review. SQL injection, XSS, race conditions, hardcoded secrets, and more. See real examples from real codebases.

50+
Vulnerability Patterns
8+
Languages Supported
OWASP Top 10
Coverage
SQL Injection via User Input
Direct concatenation of user input into SQL queries
CRITICAL
❌ Vulnerable Code
def get_user_by_email(email):
    query = f"SELECT * FROM users WHERE email = '{email}'"
    cursor.execute(query)
    return cursor.fetchone()

# Attacker input: ' OR '1'='1
# Resulting query: SELECT * FROM users WHERE email = '' OR '1'='1'
# Result: Returns ALL users in database
✓ Fixed Code
def get_user_by_email(email):
    query = "SELECT * FROM users WHERE email = %s"
    cursor.execute(query, (email,))  # Use parameterized queries
    return cursor.fetchone()
Impact
Database breach. Attacker can read, modify, or delete all data. Full database compromise possible.
Hardcoded API Keys in Source Code
Secrets committed to version control and exposed
CRITICAL
❌ Vulnerable Code
import requests

API_KEY = "sk_live_51HbkY2GH3w8e9mK4N5pQ6rS7tU8vW9xY0z"
OPENAI_KEY = "sk-proj-AbCdEfGhIjKlMnOpQrStUvWxYz"

def call_external_api(endpoint):
    headers = {"Authorization": f"Bearer {API_KEY}"}
    response = requests.get(endpoint, headers=headers)
    return response.json()
✓ Fixed Code
import requests
import os
from dotenv import load_dotenv

load_dotenv()
API_KEY = os.getenv("API_KEY")

def call_external_api(endpoint):
    headers = {"Authorization": f"Bearer {API_KEY}"}
    response = requests.get(endpoint, headers=headers)
    return response.json()
Impact
Attacker gains API access. Can impersonate your app, access user data, rack up charges, or modify external services.
Cross-Site Scripting (XSS) in Templates
User input rendered without sanitization in HTML templates
CRITICAL
❌ Vulnerable Code (Django)

<div class="user-bio">
  {{ user.bio }}  <!-- Raw HTML rendered -->
</div>



<div class="user-bio">
  {{ user.bio | escape }}  <!-- Auto-escaped -->
</div>


from django.utils.html import escape
safe_bio = escape(user.bio)
Impact
Session hijacking. Attacker steals cookies, impersonates user, accesses sensitive data. Can spread malware.
Race Condition in Payment Processing
Check-then-act without atomic operations
HIGH
❌ Vulnerable Code
def process_payment(user_id, amount):
    user = User.query.get(user_id)

    # Two separate operations - RACE CONDITION WINDOW
    if user.balance >= amount:  # Check
        user.balance -= amount   # Act (but another request may have run the check!)
        db.session.commit()

# Two concurrent requests can both pass the check
# User charged twice despite insufficient balance
✓ Fixed Code
from sqlalchemy import and_, select

def process_payment(user_id, amount):
    # Atomic update: check and act in single query
    result = db.session.execute(
        update(User)
        .where(and_(User.id == user_id, User.balance >= amount))
        .values(balance=User.balance - amount)
    )

    if result.rowcount == 0:
        raise InsufficientBalanceError()
    db.session.commit()
Impact
Double-charging. Users charged multiple times. Balance goes negative. Direct revenue loss and compliance issues.
Insecure Deserialization (Pickle)
Deserializing untrusted data executes arbitrary code
CRITICAL
❌ Vulnerable Code
import pickle

# User uploads a file
user_data = request.files['data'].read()

# This deserializes and EXECUTES arbitrary Python code
restored_object = pickle.loads(user_data)

# Attacker can create pickled payload that:
# - Deletes all files
# - Exfiltrates database
# - Installs backdoor
✓ Fixed Code
import json

# Use JSON for user data, not pickle
user_data_json = request.files['data'].read()
restored_object = json.loads(user_data_json)

# Or use restricted unpickler:
import pickle
from typing import Any
class RestrictedUnpickler(pickle.Unpickler):
    def find_class(self, module, name):
        if module in ["os", "sys", "subprocess"]:
            raise ValueError("Module not allowed")
        return super().find_class(module, name)
Impact
Remote Code Execution (RCE). Full server compromise. Attacker executes any command, steals all data, installs backdoors.
Missing Authentication on Admin Endpoint
Admin functionality accessible without authentication
CRITICAL
❌ Vulnerable Code (FastAPI)
@app.post("/admin/reset-database") def reset_database(): db.session.query(User).delete() db.session.query(Payment).delete() db.session.commit() return {"status": "database reset"} # Anyone can call this endpoint # curl -X POST https://yourapp.com/admin/reset-database # Result: Entire database wiped
✓ Fixed Code
from fastapi import Depends, HTTPException, status def verify_admin(token: str = Depends(oauth2_scheme)): user = get_current_user(token) if not user.is_admin: raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Admin access required" ) return user @app.post("/admin/reset-database") def reset_database(admin: User = Depends(verify_admin)): db.session.query(User).delete() db.session.query(Payment).delete() db.session.commit() return {"status": "database reset"}
Impact
Complete data loss. Attacker deletes all user data, payments, settings. Service goes down. Regulatory violations.
Weak Password Hashing (MD5)
Using outdated/fast hashing algorithm for passwords
HIGH
❌ Vulnerable Code
import hashlib def store_password(password): hashed = hashlib.md5(password.encode()).hexdigest() return hashed # MD5 is cryptographically broken # Can be brute-forced in seconds: https://crackstation.net # Test: MD5("password123") = 482c811da5d5b4bc6d497ffa98491e38
✓ Fixed Code
from argon2 import PasswordHasher
from passlib.context import CryptContext

# Best: Argon2
pwd_context = CryptContext(schemes=["argon2"], deprecated="auto")
hashed = pwd_context.hash(password)

# Or: bcrypt (slower, resistant to brute force)
from bcrypt import hashpw, gensalt
hashed = hashpw(password.encode(), gensalt(rounds=12))
Impact
If database is breached, all passwords quickly cracked. Attacker gains access to every user account.

Catch Issues Like These Automatically

The AI Code Review Toolkit detects these patterns in seconds, across 50+ vulnerability types. All major OWASP Top 10 issues covered. SQL injection, XSS, authentication flaws, cryptographic weaknesses, race conditions, and more.

Get the Toolkit Now — $9 →

⚡ Integrates with Claude, GPT-4, or Gemini. 50+ production-ready prompts included.