logo

Database

Python Ssrf Unvalidated Url

Description

Detects potential Server-Side Request Forgery (SSRF) vulnerabilities in Python HTTP requests where URLs are not properly validated. SSRF occurs when an attacker can manipulate URL parameters to make server-side requests to arbitrary destinations, potentially accessing internal resources or services.

Weakness:

100 - Server-side request forgery (SSRF)

Category: Deceptive Interactions

Detection Strategy

    • Identifies HTTP request function calls like requests.get(), requests.post(), urllib.request.urlopen(), etc.

    • Examines the arguments passed to these HTTP request functions

    • Reports a vulnerability when URL parameters in the request can be controlled through user input or variables without proper validation

    • Checks both direct function calls and imported HTTP request methods through aliases

Vulnerable code example

from flask import Flask, request
import requests

app = Flask(__name__)

@app.route("/fetch")
def vulnerable_fetcher():
    url = request.args.get('url')...

✅ Secure code example

from flask import Flask, request
from urllib.parse import urlparse
import requests

app = Flask(__name__)

# Whitelist of allowed domains and schemes
ALLOWED_DOMAINS = {'api.example.com', 'internal.trusted-domain.com'}...