logo

Database

Python Nosql Injection Untrusted Input

Description

Detects potential NoSQL injection vulnerabilities where untrusted user input flows into PyMongo database queries. This vulnerability occurs when user-controlled data is directly passed to PyMongo query methods without proper sanitization, allowing attackers to manipulate database operations and potentially access or modify unauthorized data.

Weakness:

106 - NoSQL injection

Category: Unexpected Injection

Detection Strategy

    • Checks if PyMongo library is imported in the analyzed code

    • Identifies calls to risky PyMongo query methods like find(), insert(), update(), delete()

    • Examines the first argument of these method calls to determine if it contains user input

    • Verifies if the user input is used without proper sanitization or validation

    • Reports a vulnerability when unsanitized user input flows into PyMongo query methods

Vulnerable code example

from flask import Flask, request
from pymongo import MongoClient

client = MongoClient()
db = client.test_database
app = Flask(__name__)

@app.route('/login', methods=['POST'])...

✅ Secure code example

from flask import Flask, request
from pymongo import MongoClient

client = MongoClient()
db = client.test_database
app = Flask(__name__)

@app.route('/login', methods=['POST'])...