CVE-2020-22784

7.5 HIGH

📋 TL;DR

This vulnerability in Etherpad's UeberDB MySQL connector allows attackers to bypass access controls by exploiting MySQL's behavior of omitting trailing spaces during string comparisons. Systems using UeberDB versions before 0.4.4 with MySQL backend are affected, potentially allowing unauthorized access to protected database records.

💻 Affected Systems

Products:
  • Etherpad UeberDB
Versions: All versions < 0.4.4
Operating Systems: All operating systems running affected UeberDB versions
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems using MySQL as the database backend. Other database backends are not vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete bypass of all access controls on key names, allowing attackers to read, modify, or delete any database records that should be protected by key-based access restrictions.

🟠

Likely Case

Partial access control bypass where attackers can access some protected records by manipulating key names with trailing spaces, potentially exposing sensitive data or allowing unauthorized modifications.

🟢

If Mitigated

Limited impact with proper network segmentation and additional authentication layers, though the fundamental access control bypass remains possible.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires knowledge of the key naming scheme and access to the database interface. The vulnerability is in the comparison logic rather than requiring complex injection.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.4.4

Vendor Advisory: https://github.com/ether/ueberDB/commit/e8b58d03534ade8d83c2d1946a8350a23952531e

Restart Required: Yes

Instructions:

1. Update UeberDB to version 0.4.4 or later. 2. Restart the Etherpad service. 3. Verify the update was successful by checking the version.

🔧 Temporary Workarounds

Switch to non-MySQL database backend

all

Migrate to PostgreSQL, SQLite, or another supported database backend that doesn't have the trailing space comparison issue.

Implement application-level key validation

all

Add custom validation to strip or reject keys with trailing spaces before database operations.

🧯 If You Can't Patch

  • Implement strict network access controls to limit database access to trusted sources only
  • Add additional authentication/authorization layers at the application level to compensate for the database-level access control bypass

🔍 How to Verify

Check if Vulnerable:

Check UeberDB version and database backend. If using MySQL and version < 0.4.4, the system is vulnerable.

Check Version:

Check package.json or npm list ueberdb for version information

Verify Fix Applied:

Verify UeberDB version is 0.4.4 or higher and test that key-based access controls work correctly with trailing spaces.

📡 Detection & Monitoring

Log Indicators:

  • Unusual database access patterns
  • Failed access attempts followed by successful access with similar key names
  • Database queries with trailing spaces in key names

Network Indicators:

  • Unusual database connection patterns from unexpected sources
  • Increased database traffic to access-controlled tables

SIEM Query:

source="database_logs" AND (key_name LIKE "% " OR access_pattern="unusual")

🔗 References

📤 Share & Export