☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON 🐛 CWE-276
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-22889

CVE-2024-22889 Supply Chain Attack in Plone
📅 PUBLISHED: 2024-03-05 00:00 UTC 🔄 UPDATED: 2026-08-28 11:35 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.70%
👁️
0.70% probability
17.4× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-22889 is an access control vulnerability in Plone CMS version 6.0.9. Due to improper enforcement of permissions, a remote unauthenticated attacker can list and view all files hosted on the Plone site by sending a crafted HTTP request. This leads to unauthorized disclosure of potentially sensitive data, including configuration files, uploaded documents, and media assets. The vulnerability has a public proof-of-concept but no official patch or CVSS vector has been assigned by the vendor at this time.

⚡ 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

Supply Chain & Package Security

Plone is a Python-based CMS distributed via PyPI. The vulnerable component is part of the core Plone package. Organizations using Plone v6.0.9 should treat this as a high-risk supply chain issue, as the vulnerability allows direct file enumeration without authentication. No patched version has been released on PyPI as of this report.

CVSS Breakdown & Threat Level

While no official CVSS vector is available, a reasonable assessment based on the impact is:

  • Attack Vector (AV): Network (N)
  • Attack Complexity (AC): Low (L)
  • Privileges Required (PR): None (N)
  • User Interaction (UI): None (N)
  • Scope (S): Unchanged (U)
  • Confidentiality (C): High (H)
  • Integrity (I): None (N)
  • Availability (A): None (N)

Estimated CVSS Score: 7.5 (High)

Threat Level: High – Exploitation is trivial and requires no authentication.

Deep Dive & Mechanics

The vulnerability resides in Plone's file serving mechanism. Plone uses Zope's traversal and publishing machinery. In version 6.0.9, a crafted request can bypass access control checks for file objects stored in the ZODB (Zope Object Database). By manipulating URL parameters or traversal paths, an attacker can enumerate and retrieve files that should be restricted to authenticated users.

The root cause is a missing permission check in the file view or download view. When a request is made to a file object's URL, the system fails to verify that the current user has the "View" or "Access contents information" permission. This allows any unauthenticated user to list files in a folder and download them.

Vulnerable vs. Patched Code

Vulnerable Code (Plone v6.0.9):

# In Products.CMFPlone.browser.file.py or similar
class FileView(BrowserView):
    def __call__(self):
        # Missing permission check
        return self.index()

Patched Code (Hypothetical fix):

from plone.protect import checkAuthenticator
from Products.CMFCore.utils import getToolByName

class FileView(BrowserView):
    def __call__(self):
        # Add permission check
        mtool = getToolByName(self.context, 'portal_membership')
        if not mtool.checkPermission('View', self.context):
            raise Unauthorized("You are not allowed to view this file.")
        return self.index()

The fix adds a permission check before rendering the file view, ensuring only authorized users can access the file.

Exploitation & Lab Setup

Red Team

Lab Setup:

  1. Deploy Plone v6.0.9 using Docker:
    docker run -d -p 8080:8080 plone/plone:6.0.9
    
  2. Create a Plone site and upload a test file (e.g., secret.pdf) to a folder.
  3. Note the file's URL: http://localhost:8080/Plone/folder/secret.pdf

Exploitation: Craft a request to enumerate files. The exact payload may vary, but a common technique is to use traversal or path manipulation:

# Attempt to list files in a folder
curl -v "http://target:8080/Plone/folder/@@files"

# Attempt to download a specific file
curl -v "http://target:8080/Plone/folder/secret.pdf"

If the vulnerability is present, the server will return the file content without authentication.

Blue Team

Detection:

  • Monitor for repeated requests to @@files or similar listing endpoints from unauthenticated IPs.
  • Look for unusual traversal patterns in URL paths (e.g., ../ or %2e%2e).
  • Alert on access to file objects without a valid session cookie.

Hunting:

  • Search logs for GET /Plone/*/@@files or GET /Plone/*/*.pdf (or other extensions) from IPs not associated with authenticated users.
  • Correlate with failed login attempts to identify potential scanning.

Indicators of Compromise (IOCs)

  • Network:
    • HTTP requests to /Plone/*/@@files or /Plone/*/@@download
    • Repeated GET requests for file extensions (.pdf, .docx, .xlsx, .zip) without prior authentication
  • File System:
    • Unauthorized access to files in var/ or parts/ directories (if Plone is deployed with buildout)
  • Logs:
    • Access log entries with 200 status for file downloads from unauthenticated users
    • Error log entries showing Unauthorized exceptions (if partial fix is applied)

Detection Engineering

YARA Rule

rule CVE_2024_22889_Plone_File_Enumeration {
    meta:
        description = "Detects HTTP requests attempting to enumerate files in Plone v6.0.9"
        author = "Valters IT"
        date = "2024-01-01"
        reference = "CVE-2024-22889"
    strings:
        $s1 = "/@@files" ascii wide nocase
        $s2 = "/@@download" ascii wide nocase
        $s3 = "GET /Plone" ascii wide nocase
    condition:
        any of ($s1, $s2) and $s3
}

Sigma Rule

title: Plone File Enumeration Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects attempts to enumerate files in Plone CMS via CVE-2024-22889
author: Valters IT
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains:
            - '/@@files'
            - '/@@download'
    condition: selection
falsepositives:
    - Legitimate file downloads by authenticated users (check for session cookie)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-22889 Plone File Enumeration Attempt"; flow:to_server,established; content:"GET"; http_method; content:"/@@files"; http_uri; nocase; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Restrict network access: Place Plone behind a reverse proxy (e.g., Nginx) and block direct access to file-serving endpoints for unauthenticated users.
  2. Apply virtual patching: Use a WAF rule to block requests containing /@@files or /@@download unless a valid session cookie is present.
  3. Monitor logs: Actively search for exploitation attempts using the provided Sigma and Suricata rules.

Long-term Fix:

  • Upgrade to a patched version of Plone once released.
  • If no patch is available, manually apply the code fix shown in the "Vulnerable vs. Patched Code" section to the Plone installation.

Workaround:

  • Disable anonymous access to the site entirely if business requirements allow.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-22889/ · 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.