logo

Database

Python Verify False In Requests

Description

Detects when SSL certificate validation is disabled in Python requests library calls, which allows connections to servers with invalid certificates. This creates a risk of Man-in-the-Middle attacks where attackers can intercept and tamper with HTTPS traffic.

Weakness:

313 - Insecure service configuration - Certificates

Category: Functionality Abuse

Detection Strategy

    Check for function calls to requests.get or requests.request methods

    Analyze if the function call includes verify=False parameter or disables certificate validation

    Look for parent context of these calls to confirm if SSL verification is explicitly disabled

    Report vulnerability when requests methods are called with certificate validation disabled

Vulnerable code example

import requests
import ssl

# Disables certificate validation, vulnerable to MITM attacks
requests.get("https://example.com", verify=False)

# Creates context that skips certificate validation
ctx = ssl._create_unverified_context()...

✅ Secure code example

import requests
import ssl

# Use default verify=True for proper certificate validation
requests.get("https://example.com")

# Create secure SSL context with certificate validation
ctx = ssl.create_default_context()  # Uses secure defaults including CERT_REQUIRED