CVE-2020-28929

9.8 CRITICAL

📋 TL;DR

CVE-2020-28929 allows unauthenticated attackers to remotely download server logs containing administrative hashed credentials via a specific URI in EPSON EPS TSE Server 8. This affects organizations using EPSON TSE Server 8 version 21.0.11 for tax compliance in point-of-sale systems.

💻 Affected Systems

Products:
  • EPSON EPS TSE Server 8
Versions: 21.0.11
Operating Systems: Windows
Default Config Vulnerable: ⚠️ Yes
Notes: This is the default configuration of EPSON TSE Server 8 version 21.0.11. The vulnerability exists in the web interface component.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers obtain administrative credentials, gain full control of the TSE server, manipulate transaction logs, compromise tax compliance, and potentially pivot to other systems.

🟠

Likely Case

Attackers retrieve hashed admin credentials, crack them offline, gain administrative access to the TSE server, and potentially alter or delete transaction logs.

🟢

If Mitigated

With proper network segmentation and access controls, attackers cannot reach the vulnerable endpoint, limiting impact to isolated systems.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

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

Exploitation requires only a single HTTP GET request to the vulnerable endpoint. The vulnerability details and proof-of-concept are publicly documented.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 21.0.12 or later

Vendor Advisory: https://www.epson.de/support/s?language=de_DE&query=TSE+Server+8+Security+Update

Restart Required: Yes

Instructions:

1. Download the latest EPSON TSE Server 8 update from the official EPSON website. 2. Backup current configuration and data. 3. Run the installer with administrative privileges. 4. Restart the TSE Server service. 5. Verify the update by checking the version number.

🔧 Temporary Workarounds

Network Access Control

windows

Restrict access to the TSE Server web interface to trusted IP addresses only.

Use Windows Firewall: New-InboundFirewallRule -DisplayName "Block TSE Web Interface" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Block -RemoteAddress Any
Then create allow rules for specific IPs: New-InboundFirewallRule -DisplayName "Allow TSE Admin" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow -RemoteAddress 192.168.1.0/24

Web Server Configuration

all

Add authentication requirements to the maintenance/troubleshoot.php endpoint.

For Apache: Add to .htaccess: AuthType Basic\nAuthName "Restricted Access"\nAuthUserFile /path/to/.htpasswd\nRequire valid-user
For IIS: Enable Windows Authentication and disable Anonymous Authentication for the specific directory

🧯 If You Can't Patch

  • Isolate the TSE Server on a dedicated network segment with strict firewall rules allowing only necessary traffic from authorized systems.
  • Implement network monitoring and intrusion detection to alert on access attempts to the vulnerable endpoint.

🔍 How to Verify

Check if Vulnerable:

Attempt to access http://[TSE_SERVER_IP]/maintenance/troubleshoot.php?download=1 from an unauthenticated session. If it returns log files containing credential hashes, the system is vulnerable.

Check Version:

Check the version in the TSE Server administration interface or look for version files in the installation directory.

Verify Fix Applied:

After patching, attempt the same access. It should return an error or require authentication. Check the server version is 21.0.12 or higher.

📡 Detection & Monitoring

Log Indicators:

  • HTTP GET requests to /maintenance/troubleshoot.php?download=1 from unauthenticated sources
  • Unusual access patterns to the TSE Server web interface

Network Indicators:

  • HTTP traffic to port 80/443 containing the string "troubleshoot.php?download=1"
  • Outbound connections from the TSE server to unknown IPs after compromise

SIEM Query:

source="TSE_Server_Logs" AND uri="/maintenance/troubleshoot.php" AND args="download=1" AND user="-"

🔗 References

📤 Share & Export