CVE-2021-43802

9.9 CRITICAL

📋 TL;DR

CVE-2021-43802 is a critical vulnerability in Etherpad that allows attackers to gain admin privileges by importing a malicious *.etherpad file. This can lead to arbitrary code execution through malicious plugin installation. All Etherpad instances prior to version 1.8.16 are affected.

💻 Affected Systems

Products:
  • Etherpad
Versions: All versions prior to 1.8.16
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires either a plugin that can delete session state or a custom cleanup process that deletes old sessionstorage records.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full system compromise with attacker gaining admin privileges, installing malicious plugins, and executing arbitrary system commands on the server.

🟠

Likely Case

Administrative takeover of Etherpad instance leading to data theft, manipulation, or service disruption.

🟢

If Mitigated

Limited impact if import functionality is disabled or proper session management controls are in place.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Attack requires ability to trigger deletion of express-session state or wait for cleanup. Core Etherpad doesn't delete session state by default.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.8.16

Vendor Advisory: https://github.com/ether/etherpad-lite/security/advisories/GHSA-w3g3-qf3g-2mqc

Restart Required: Yes

Instructions:

1. Backup your Etherpad instance. 2. Update to version 1.8.16 or later. 3. Restart the Etherpad service. 4. Verify the update was successful.

🔧 Temporary Workarounds

Block Import Endpoint

all

Configure reverse proxy to reject requests to /p/*/import endpoint

# Example nginx config: location ~ ^/p/.*/import$ { return 403; }
# Example Apache config: <LocationMatch "^/p/.*/import$"> Require all denied </LocationMatch>

Read-Only Access

all

Limit all users to read-only access to prevent import functionality

# Configure in settings.json: "requireAuthentication": true, "requireAuthorization": true, "editOnly": false

🧯 If You Can't Patch

  • Configure reverse proxy to block /p/*/import requests
  • Implement strict session management to prevent reuse of deleted session IDs

🔍 How to Verify

Check if Vulnerable:

Check Etherpad version: if version < 1.8.16, system is vulnerable

Check Version:

Check package.json or run: node -e "console.log(require('./src/package.json').version)" from Etherpad directory

Verify Fix Applied:

Verify version is 1.8.16 or later and test import functionality is properly secured

📡 Detection & Monitoring

Log Indicators:

  • Unusual import requests to /p/*/import
  • Session ID reuse patterns
  • Admin privilege escalation events

Network Indicators:

  • Requests to import endpoints with *.etherpad files
  • Unusual plugin installation activity

SIEM Query:

source="etherpad" AND (uri="/p/*/import" OR message="admin privilege" OR message="plugin install")

🔗 References

📤 Share & Export