CVE-2022-31567

9.3 CRITICAL

📋 TL;DR

This vulnerability allows attackers to read arbitrary files on the server through path traversal in the DSABenchmark/DSAB repository. It affects users running versions through 2.1 of this software, which uses Flask's send_file function unsafely without proper path validation.

💻 Affected Systems

Products:
  • DSABenchmark/DSAB
Versions: through 2.1
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Affects all deployments using the vulnerable Flask send_file implementation without additional security controls.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete server compromise through reading sensitive files like /etc/passwd, SSH keys, or configuration files containing credentials, potentially leading to remote code execution.

🟠

Likely Case

Information disclosure of sensitive server files, potentially exposing credentials, configuration data, or other confidential information.

🟢

If Mitigated

Limited impact with proper file system permissions and network segmentation, though information disclosure risk remains.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Path traversal vulnerabilities are trivial to exploit with basic HTTP requests. Public GitHub issues demonstrate exploitation techniques.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Versions after 2.1

Vendor Advisory: https://github.com/github/securitylab/issues/669

Restart Required: Yes

Instructions:

1. Update to the latest version of DSABenchmark/DSAB repository. 2. Restart the Flask application. 3. Verify the fix by testing path traversal attempts.

🔧 Temporary Workarounds

Input Validation Middleware

all

Add middleware to validate and sanitize file paths before they reach send_file function

# Python Flask middleware example
from flask import abort
@app.before_request
def validate_paths():
    if '..' in request.path or '~' in request.path:
        abort(400)

Web Application Firewall

all

Configure WAF rules to block path traversal patterns

# Example mod_security rule
SecRule REQUEST_URI "@contains .." "id:1001,phase:1,deny,status:403"

🧯 If You Can't Patch

  • Implement strict file system permissions to limit accessible directories
  • Deploy behind reverse proxy with path sanitization and request filtering

🔍 How to Verify

Check if Vulnerable:

Attempt to access /../../etc/passwd or similar path traversal patterns via the application's file serving endpoints

Check Version:

Check package.json or repository version files for DSABenchmark version

Verify Fix Applied:

Test the same path traversal attempts after patching; they should return 400/403 errors instead of file contents

📡 Detection & Monitoring

Log Indicators:

  • HTTP requests containing '..' or '~' patterns in URLs
  • Unusual file access patterns from single IPs
  • 403/400 errors after implementing fixes

Network Indicators:

  • HTTP requests with encoded path traversal sequences (%2e%2e%2f)
  • Multiple failed attempts to access sensitive paths

SIEM Query:

source="web_logs" AND (url="*..*" OR url="*~*") AND response_code=200

🔗 References

📤 Share & Export