☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.7 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H 🐛 CWE-916
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2020-5229

CVE-2020-5229 — Opencast stores passwords using outdated MD5 hash algorithm
📅 PUBLISHED: 2020-01-30 00:00 UTC 🔄 UPDATED: 2026-10-02 19:30 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.63%
👁️
0.63% probability
15.6× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1003
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Patch available — upgrade to latest release
CVSS VECTOR BREAKDOWN 7.7
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
7.7
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2020-5229 is a cryptographic weakness in Opencast, a video capture and distribution platform, affecting versions before 8.1. The vulnerability stems from the use of the MD5 hash algorithm with unsalted (deterministic) salts for storing passwords, enabling an attacker with database access to recover user credentials efficiently.

The impact is significant: successful exploitation compromises the confidentiality of stored passwords and can lead to full platform compromise when highly privileged accounts — such as the default admin user — are affected. The CVSS baseline score 7.7 reflects the high confidentiality and integrity impact combined with the prerequisite of database access (elevated privilege requirement).

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The vulnerability exists in Opencast's password storage mechanism. Prior to version 8.1, the system stored password digests using the MD5 hash algorithm. MD5 is considered cryptographically broken for password storage due to:

  1. Algorithmic weakness: MD5 is vulnerable to collision attacks and is not designed for slow, iterated password derivation. Modern GPU/FPGA hardware can compute MD5 at rates of billions of hashes per second, making brute-force and dictionary attacks inexpensive for an attacker.

  2. Deterministic salt: Instead of generating a random salt per user (the standard practice for password hashing), Opencast salted each hash using the username itself. This introduces two critical weaknesses:

    • Hash collision: Users sharing the same username and password produce identical hashes. This is particularly problematic for the default admin user, which likely uses a common default password across deployments. If one instance is compromised, the recovered password can be tested against other Opencast deployments using the same admin credentials.
    • Pre-computation feasibility: Because the salt is deterministic and known (the username), an attacker can pre-compute rainbow tables or use prior knowledge of the password space to dramatically accelerate recovery.
  3. Legacy hash persistence: Even after upgrading to version 8.1, existing MD5 hashes remain in place until each user updates their password. This creates a long tail of weakly-protected credentials after patching.

Attack surface: The vulnerability is not remotely exploitable without first compromising the database layer. Attackers would need to gain access to the underlying database (e.g., via SQL injection elsewhere, server compromise, backup leakage, or insider access) to retrieve the stored hashes. However, once the hashes are obtained, password cracking becomes trivial relative to stronger algorithms.

Cryptographic impact: The MD5-based hashing, combined with deterministic salts, effectively means passwords are protected by approximately 128 bits of hash output but with no computational stretching. The effective "work factor" is one MD5 computation per password guess — orders of magnitude weaker than bcrypt, which is designed to be computationally expensive (typically 2^10 to 2^14 iterations). This gap in work factor is the core mechanism of the vulnerability.

Affected component: The hashes are stored in Opencast's user database, and the system exposes a REST endpoint /user-utils/users/md5.json that lists users whose passwords are still MD5-hashed. While the description does not provide additional implementation details, the endpoint's existence suggests a deliberate enumeration capability.

Exploitation Scenarios

No public exploit code or PoC has been identified at the time of writing. The following attack chain is inferred from the vulnerability class (weak password hashing with deterministic salts) and the NVD description.

Step 1 — Reconnaissance and Target Identification The attacker identifies Opencast instances using Shodan or banner/source fingerprinting. Pre-8.1 versions are the target population. Popular search methodologies include checking for http.title:"Opencast" or product identifiers in HTTP responses.

Step 2 — Gaining Database Access (Required Precondition) The attacker must first access the database storing the password hashes. Common vectors include:

  • SQL injection in the application (a separate vulnerability).
  • Direct database server exposure (misconfigured network segments, default credentials on database services).
  • Backup file leakage through web servers or misconfigured object storage.
  • Insider access or prior server compromise.

Step 3 — Extraction of Password Hashes Once database access is obtained, the attacker extracts the username-salted MD5 hashes. Given the deterministic salt (the username), the attacker already knows each hash's salt — it is the associated username string. This removes any need to guess or retrieve stored salts.

Step 4 — Password Cracking The attacker uses offline cracking tools (e.g., Hashcat, John the Ripper) with the MD5 mode. Because MD5 is fast, dictionary attacks and rule-based mutations can test hundreds of millions of passwords per second on commodity GPUs. The default admin user is a high-value target because default credentials like admin or opencast are commonly deployed and unchanged.

Step 5 — Post-Exploitation Recovered credentials, especially for admin, grant full administrative access to the Opencast platform. This can lead to:

  • Uploading malicious video content (malware distribution via download links).
  • Modifying system configuration.
  • Accessing video recordings that may contain sensitive business information.
  • Using the platform as a pivot point for lateral movement into the broader network infrastructure.

Impact Assessment

Business Impact: Opencast is used by educational institutions, enterprises, and media organizations to manage and distribute video content. Credential compromise can expose sensitive internal content, facilitate account takeover, and damage organizational reputation.

Confidentiality Impact: High — attackers can recover plaintext passwords from hashes, potentially reusing them across other services if the same credentials are used elsewhere.

Integrity Impact: High — administrative access enables content manipulation and platform configuration tampering.

Availability Impact: Moderate — while no direct DoS mechanism is specified, administrative compromise could allow an attacker to disable services or delete content.

CVSS Analysis: The CVSS 7.7 score reflects a High privilege requirement (database access) but recognizes the high confidentiality and integrity impact once that prerequisite is met.

Blast Radius: Any network where Opencast is deployed, including multi-tenant environments where one administrator manages multiple instances. The hash collision issue amplifies impact across deployments sharing usernames (e.g., default admin).

Detection Guidance

Sigma Rule

title: Opencast MD5 User Hash Enumeration via REST Endpoint
id: 67f94a5c-3c12-4b87-9e14-72ca70d1b2df
status: experimental
description: Detects access to the Opencast endpoint that lists users with MD5 password hashes, which may indicate post-exploitation reconnaissance.
author: Valtersit Threat Intelligence
logsource:
  category: webserver
  product: apache
  definition: 'Requirements: Opencast web server logs with URI and user-agent fields.'
detection:
  selection:
    cs-uri-query|contains:
      - '/user-utils/users/md5.json'
  condition: selection
level: medium
falsepositives:
  - Legitimate administrative users reviewing password hygiene status
tags:
  - attack.credential_access
  - attack.t1003

YARA Rule

rule Opencast_MD5_Endpoint_Indicator
{
    meta:
        author = "Valtersit Threat Intelligence"
        description = "Detects strings indicative of Opencast MD5 hash enumeration endpoint and related hash storage patterns"
        cve = "CVE-2020-5229"
        date = "2025-01-01"
        version = "1.0"
    strings:
        $s1 = "/user-utils/users/md5.json" ascii wide
        $s2 = "md5.json" ascii wide
        $s3 = "Opencast" ascii wide
    condition:
        uint16(0) == 0x5A4D and any of them
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"CVE-2020-5229 - Opencast MD5 Hash Enumeration Endpoint"; flow:established,to_server; content:"/user-utils/users/md5.json"; http.uri; classtype:attempted-recon; sid:1005901; rev:1; reference:cve,2020-5229;)

Elastic Detection

sequence by process.entity_id
  [network where destination.port == 80 or destination.port == 443
   and url.path in ("/user-utils/users/md5.json", "/user-utils/users/*")]

Splunk SPL Query

index=web sourcetype=access_combined
| where like(uri_path, "%/user-utils/users/md5.json%")
| eval stage="Credential hash enumeration"
| table _time, src_ip, uri_path, user_agent
| sort _time

Wazuh OSSEC Rule

<rule id="100590" level="10">
  <decoded>apache-access</decoded>
  <match>/user-utils/users/md5.json</match>
  <description>Opencast MD5 hash enumeration endpoint accessed - possible credential cracking precursor</description>
  <group>credential_access,</group>
</rule>

Mitigation & Patch Guidance

Patch confidence is rated 2/4 (claimed single-source patch). While the fix direction is logical (bcrypt adoption), independent verification of completeness is not available.

1. Immediate Mitigations

  • Restrict database access to least-privilege principles; ensure the database is not reachable from untrusted networks.
  • Place the database behind a firewall/VPN and enforce strong authentication for DB access.
  • Enable two-factor authentication for all Opencast administrative users if the platform supports it.
  • Do not reuse the default admin username; rename it and enforce a strong password.
  • Monitor database access logs for unusual read patterns or unauthorized SELECT queries.

2. Patch and Upgrade

  • Upgrade to Opencast 8.1 or later, which introduces bcrypt password hashing.
  • Note that the upgrade preserves legacy MD5 hashes. After upgrading, force a password reset for all users to ensure their credentials are migrated to bcrypt. Use the /user-utils/users/md5.json endpoint to enumerate users whose hashes remain MD5 and prioritize those resets.
  • Verify the upgrade with a test environment before production to confirm the password update mechanism functions correctly.

3. Long-term Hardening

  • Implement a robust password policy (length ≥ 12 characters, complexity requirements).
  • Enforce password rotation at defined intervals.
  • Use a centralized identity provider (LDAP/SSO) to offload credential management to a hardened system.
  • Review database access controls regularly; audit who has access to the database and why.
  • Monitor for the emergence of any exploits or public PoCs for this CVE (currently private/none).
  • Consider the EPSS score of 0.00626 (46.7th percentile), which indicates low but non-negligible exploitation probability; prioritize patching accordingly but do not deprioritize entirely since the vulnerability can significantly impact credential security.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2020-5229
  2. Opencast Security Advisory (CNA): Refer to the project's release notes for version 8.1; the advisory likely accompanies the release announcement.
  3. Mitre CVE Registry: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-5229
  4. Opencast Project Site: https://opencast.org
  5. CISA Known Exploited Vulnerabilities Catalog: CVE-2020-5229 is NOT listed in the KEV catalog at the time of writing, and no exploit-in-the-wild evidence or known threat actor campaigns have been observed.
👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:opencast
http.title:"Opencast"
http.favicon.hash:opencast
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2020-5229/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.